一個實時檢測IP變化并更新DNS狀态的工具,适用于在NameSilo購買的域名。可以在家搭建一個公網伺服器。目前營運商給家庭寬帶的IP都是動态的,慶幸的是雖然IP位址不固定,但是卻是一個公網IP,是以我們可以購買一個域名,使用動态域名解析技術将域名解析到寬帶的IP。
一個實時檢測IP變化并更新DNS狀态的工具,适用于在NameSilo購買的域名,如果你的域名是在其他商家購買的,修改為商家的api就行。GitHub項目位址:
https://github.com/Charles94jp/NameSilo-DDNS
我使用的語言是Java,其實用腳本寫更友善,shell、powershell、python都可以
2021-12-16 更新:此項目已用python3重構,可放心食用
一、背景
目前營運商給家庭寬帶的IP都是動态的,慶幸的是雖然IP位址不固定,但配置設定到家庭路由器的卻是一個實實在在的公網IP,是以我們隻需
設定光貓為橋接模式 + 使用路由器撥号 + 設定路由器NAT映射即可在公網通路家庭的裝置。我們路由器映射22端口就能遠端家裡的linux,映射445+3389端口就能用win10自帶遠端桌面遠端家裡的windows。如下圖
為解決公網IP的變動,可以購買一個域名,使用DDNS(Dynamic Domain Name Server,動态域名服務)将域名解析到寬帶的IP。這樣就可以在家搭建各種服務并通過通路固定的域名來通路,而無需租用昂貴的公網伺服器
想實作這個目的,你需要購買一個域名,且有一台一直運作的電腦來運作此DDNS程式
1.1 域名商推薦
域名商除了給我們一個域名,還負責給我們提供DNS解析,綁定域名到對應IP
我這裡推薦NameSilo,第一個原因是他不需要備案,而阿裡雲、騰訊雲等國内域名商是要走備案程式的,比較麻煩,部落客前幾年備案記得是需要在收到阿裡雲寄給我的幕布後,拍手持身份證照片,然後才能備案,域名過期後還要登出備案,不然别人拿你域名去幹壞事...
二是他有api開放,能通過api來更新域名狀态
三是他雖是國外域名商,但是可以通過微信支付,無需境外銀行卡
二、簡介
本程式通過通路 https://202020.ip138.com/ 擷取家庭寬帶的公網IP位址,通過 https://www.namesilo.com/api/ 來查詢和更新DNS狀态。如下圖
三、配置
為了運作這個程式,你需要安裝Java,推薦jdk8。首次運作之前你需要配置_conf.txt檔案,填寫你從NameSilo擷取的api key,以及你的域名。還有一項可選的配置——程式去檢查IP是否變動的頻率。
四、運作
Windows :直接輕按兩下bat檔案
Linux :
chmod +x DDNS && ./DDNS start
五、在開機時自動啟動
Windows :将vbs檔案加入政策組
Linux :注冊為服務,以CentOS7為例,首先
vi DDNS
在其中配置好java環境變量以及目前腳本檔案、jar包所在目錄,接着拷貝檔案并注冊服務,接着:
chmod +x DDNS
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