前言
💡
用途:使用 ChangeIP Free Dynamic DNS 即時取得主機的外部IP。
用途:使用 ChangeIP Free Dynamic DNS 即時取得主機的外部IP。
隨著網路應用的普及,建立可穩定存取的線上服務成為許多使用者的需求,然而,多數家用或小型企業的網路環境都使用 動態IP,這使得遠端存取變得困難,動態DNS服務(DDNS)正是解決此問題的關鍵技術,它能將不斷變動的IP位址即時綁定到固定的 網域名稱 上。
本文將介紹如何透過 ChangeIP 提供的 免費動態DNS服務,為您的家用伺服器、網路攝影機或遠端服務建立一個永久固定的網路識別位址,從註冊帳號、設定動態DNS到編寫自動更新IP的腳本,本文將提供完整的操作教學,幫助您輕鬆實現遠端存取的需求。
設定動態DNS
- 開啟上方網址,在「語言」內可以選擇「中文」
- 開啟上方網址,點選「Order Now」(立即訂購)
- 設定「Free Dynamic DNS Hosting」(免費動態DNS託管)
- 點選「Continue」(繼續)
- 點選「Checkout」(結帳)
- 填寫資料註冊帳號
- 點選「Complete Order」(完成訂單)
- 點選「Continue To Client Area」(繼續前往用戶區)
- 用戶介面
- 歡迎信件,內容說明:
登入帳號:您的郵件位址
登入密碼:您設定的密碼
- 訂單確認信件
管理動態DNS
- 點選「Login」(登入)
- 登入帳號
- 點選「Services」(服務) →「DNS Manager」(DNS管理)
- 點選域名進入管理
- DNS預設已有下列域名,可點選記錄進行編輯
ftp.yourname.zyns.com
yourname.zyns.com
www.yourname.zyns.com
- 修改正確的「IP位址」(主機外部IP) 後點選「Save」(儲存)
- 若有需要可以點選「Add Record」(新增記錄)
- 點選「A Record」(A記錄)
- 輸入資料後點選「Save」(儲存)
- 多了一個免費域名:
blog.yourname.zyns.com
- 「DNS Manager」(DNS管理) 其他功能
可以再「Add Domain」(新增域名) 或「Delete」(刪除現有域名)
刪除信用卡資訊
免費/付費DDNS比較
自動更新 IP 腳本
使用 ChangeIP API 自動更新 DNS IP 的腳本
透過 Shell Script 利用 Crontab 排程執行,就可以自動更新主機的動態 IP,實現自動化的 Cloudflare DDNS 功能。
- 自動更新 IP 腳本
- CIPUSER= 後方的字串 → 您的郵件位址
- CIPPASS= 後方的字串 → 您設定的密碼
- CIPHOST= 後方的字串 → 您的域名: www.yourname.ddns.info
ddns.sh
#!/bin/bash ######################## 腳本變數 ############################### IPFILE=/var/log/IP # IP位址儲存檔 TMPIP=/tmp/tmpIP # 臨時IP儲存檔 LOGFILE=/var/log/changeip.log # 日誌檔 TEMP=/tmp/temp # 臨時儲存檔 CIPUSER="您的郵件位址" # ChangeIP.com 用戶名 CIPPASS="您設定的密碼" # ChangeIP.com 密碼 CIPHOST="您的域名" # ChangeIP.com 域名 LOGLEVEL=2 # 0=關閉﹑1=普通﹑2=詳細 LOGMAX=500 # 最大日誌行數﹑0=無限制 URL="" ################################################################# # 等待系統啟動完成 sleep 0.5 # 從 ip.changeip.com 獲取目前IP,並儲存到 ${TEMP} curl -s -A "rinker.sh curl 1.0" -o ${TEMP} http://ip.changeip.com # 解析 ${TEMP} 中的 IP,並儲存到 ${TMPIP} grep IPADDR < ${TEMP} | cut -d= -s -f2 | cut -d- -s -f1 > ${TMPIP} # 比較 ${IPFILE} 與 ${TMPIP},如果不同就執行更新 if [ ! -f ${IPFILE} ]; then echo "no old ip" > ${IPFILE} fi if diff ${IPFILE} ${TMPIP} > /dev/null; then if [ ${LOGLEVEL} -eq 2 ]; then echo "--------------------------------" >> ${LOGFILE} date >> ${LOGFILE} echo "No Change" >> ${LOGFILE} echo -n "IP: " >> ${LOGFILE} cat ${IPFILE} >> ${LOGFILE} echo "--------------------------------" >> ${LOGFILE} fi else URL="https://nic.changeip.com/nic/update?system=dyndns&u=${CIPUSER}&p=${CIPPASS}&hostname=${CIPHOST}" echo "Updating with URL: ${URL}" curl -A "changeIP.sh curl 1.0" -o ${TEMP} ${URL} if [ ${LOGLEVEL} -ne 0 ]; then echo "--------------------------------" >> ${LOGFILE} date >> ${LOGFILE} echo "Updating" >> ${LOGFILE} echo -n "NewIP: " >> ${LOGFILE} cat ${TMPIP} >> ${LOGFILE} if [ ${LOGLEVEL} -eq 2 ]; then echo -n "OldIP: " >> ${LOGFILE} cat ${IPFILE} >> ${LOGFILE} echo "--------------------------------" >> ${LOGFILE} fi fi cp ${TMPIP} ${IPFILE} fi # 如果 ${LOGMAX} 不等於 0,則減少日誌大小到最後 ${LOGMAX} 行 if [ ${LOGMAX} -ne 0 ]; then tail -n ${LOGMAX} ${LOGFILE} > ${TEMP} cp ${TEMP} ${LOGFILE} fi # End
- 變更檔案權限成可執行
chmod +x ddns.sh
- 排程 每30分鐘 執行腳本
sudo vim /etc/crontab ------------------------------------------------------- */30 * * * * root /root/ddns/ddns.sh >/dev/null 2>&1 &
其他腳本
- 查詢外部IP
internet.shcurl ipinfo.io/ip && echo
- 查看更新日誌內容
ddns_catlog.shcat /var/log/changeip.log
- 資料檔刪除程式
IP更新異常或重置時執行
ddns_rmlog.shrm -f /var/log/IP # IP位址儲存檔案 rm -f /tmp/tmpIP # 臨時IP儲存檔案 rm -f /tmp/temp # 暫存檔案 # rm -f /var/log/changeip.log # 更新日誌記錄檔
結語
透過本教學,可以完成 ChangeIP 免費動態DNS 的相關設定,從帳號註冊到域名管理,再到 自動化IP更新腳本 的設定,ChangeIP 提供了數個免費的子域名,完全滿足了小型網站、遠端服務或家用監控系統的需求。
透過每 30分鐘 自動執行的更新腳本,系統能夠持續監測並更新公共IP位址,確保服務始終可以被外部網路存取,相較於收費的DDNS服務,這個免費方案雖然在功能上有所限制,但對於個人使用或小型專案而言已經相當實用,若未來需要更多功能或更高的可靠性,也可以考慮升級到付費版本,獲得更多的域名選擇和進階功能。