一個實時檢測IP變化並更新DNS狀態的工具,適用於在NameSilo購買的域名,如果你的域名是在其他商家購買的,修改為商家的api就行。GitHub項目地址:
我使用的語言是Java,其實用腳本寫更方便,shell、powershell、python都可以
一、背景
目前運營商給家庭寬帶的IP都是動態的,慶幸的是雖然IP地址不固定,但分配到家庭路由器的卻是一個實實在在的公網IP,所以我們只需使用路由器NAT映射即可在公網訪問家庭的設備。我們路由器映射22端口就能遠程家里的linux,映射445+3389端口就能用win10自帶遠程桌面遠程家里的windows。如下圖
為解決公網IP的變動,可以購買一個域名,使用DDNS(Dynamic Domain Name Server,動態域名服務)將域名解析到寬帶的IP。這樣就可以在家搭建各種服務並通過訪問固定的域名來訪問,而無需租用昂貴的公網服務器
想實現這個目的,你需要一台一直運行的電腦來運行此DDNS程序
二、簡介
本程序通過訪問 https://202020.ip138.com/ 獲取家庭寬帶的公網IP地址,通過 https://www.namesilo.com/api/ 來查詢和更新DNS狀態。如下圖

三、配置
為了運行這個程序,你需要安裝Java,推薦jdk8。首次運行之前你需要配置_conf.txt文件,填寫你從NameSilo獲取的api key,以及你的域名。還有一項可選的配置——程序去檢查IP是否變動的頻率。
四、運行
Windows :直接雙擊win_runDDNS.bat
Linux :chmod +x DDNS && ./DDNS start
五、在開機時自動啟動
Windows :將vbs文件加入策略組
Linux :首先vi DDNS
在其中配置好java環境變量以及當前腳本文件、jar包所在目錄,接着拷貝文件並注冊服務
cp DDNS /etc/init.d/DDNS
chkconfig --add /etc/init.d/DDNS
# 查看服務是否注冊成功
chkconfig --list
# reboot即可重啟,檢驗是否自啟成功
# 服務操作
service DDNS status # 查看狀態
service DDNS start # 啟動
service DDNS stop # 停止
service DDNS restart # 重啟
六、其他DDNS方案推薦
都是用到了curl發送請求,把響應保存到文件中 ,再用腳本處理字符串。單個文件就能解決,不過腳本語言特別是Windows的batch語法不是很友好,一般做運維的可能比較熟悉腳本語言。
Windows :https://www.v2ex.com/t/274392
Linux :https://github.com/pztop/namesilo_ddns
還有一個Windows powershell腳本實現的
https://www.ctrol.cn/post/freesource/domain-host/05-25-cartev-4719.html