動態域名

此頁由 Linux Wiki用戶Chenxing 於 2012年12月18日 (星期二) 08:03 的最後更改。 在lzh的工作基礎上。

從 Linux Wiki

提示:此文已超过 12 年(4388 天)未更新,如发现内容过时或有误,欢迎改进:)

用個人電腦架設服務器或想遠程控制電腦時,常需要一個固定的域名,指向一台IP可能變化的電腦,即動態域名。

目前提供免費動態域名的有國內的公雲(原3322)、和No-IP等。

更新域名指向

在Linux中,一般可以使用服務提供商提供的工具更新域名的指向。如No-IP提供的更新工具,在Archlinux中可以通過軟件包noip安裝。

另外,對於很多服務而言,使用wget一個包含用戶名密碼域名的URL,也可以更新動態域名的指向(A記錄)。[1][2]

下面的是一個樣例Bash腳本,適用於3322[3][4]

#!/bin/bash
USERNAME="你的用户名"
PASSWORD="你的密码"
DOMAINNAME="你的完整的动态域名"
SetIP=false      # 为true时用ifconfig返回的IP设定DNS,否则由服务器自己判断
 
if $SetIP ; then
    # 下面从ifconfig获取IP,如果需要,可以手动更改
    MYIP=`LANG=C ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'| head -n1`
    wget -q -O- "http://$USERNAME:$PASSWORD@members.3322.org/dyndns/update?system=dyndns&hostname=$DOMAINNAME&myip=$MYIP"
else
    wget -q -O- "http://$USERNAME:$PASSWORD@members.3322.org/dyndns/update?system=dyndns&hostname=$DOMAINNAME"
fi

如果不提供IP,服務器可以自動判斷請求的來源IP。但有時(如使用VPN時)請求來源IP並非電腦的真實IP,此時要將SetIP設為True,並使用腳本獲得電腦目前的IP

啟動時自動更新

您需要切換到root用戶或使用sudo進行下面的操作。

將上面的腳本存入適當的文件夾,如/usr/bin/updateDNS,並增加可執行權限:

# chmod +x /usr/bin/updateDNS

修改/etc/rc.local,在exit 0前面加入一行:

updateDNS

這樣系統每次啟動時就會更新域名的指向了。

更合理的,updateDNS應在網絡連接建立自動運行,而不是在系統啟動時,具體的設置方法請參照網絡連接建立後自動運行程序

參考資料

  1. No-IP的API文檔
  2. 小辣椒(3322)動態域名更新API
  3. http://www.cyberciti.biz/tips/read-unixlinux-system-ip-address-in-a-shell-script.html
  4. http://yaoms.blog.ubuntu.org.cn/2008/04/10/3322%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E7%BB%91%E5%AE%9A%EF%BC%88wget%E7%89%88%EF%BC%89/

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
個人工具
简体繁体转换