自建免費「動態DNS (DDNS)」ChangeIP

自建免費「動態DNS (DDNS)」ChangeIP – 教學

前言

💡
用途:使用 ChangeIP Free Dynamic DNS 即時取得主機的外部IP。
 

隨著網路應用的普及,建立可穩定存取的線上服務成為許多使用者的需求,然而,多數家用或小型企業的網路環境都使用 動態IP,這使得遠端存取變得困難,動態DNS服務(DDNS)正是解決此問題的關鍵技術,它能將不斷變動的IP位址即時綁定到固定的 網域名稱 上。

本文將介紹如何透過 ChangeIP 提供的 免費動態DNS服務,為您的家用伺服器、網路攝影機或遠端服務建立一個永久固定的網路識別位址,從註冊帳號、設定動態DNS到編寫自動更新IP的腳本,本文將提供完整的操作教學,幫助您輕鬆實現遠端存取的需求。

changeip.com 免費DDNS服務 changeip.com 免費DDNS服務

設定動態DNS

  1. 開啟上方網址,在「語言」內可以選擇「中文」
    開啟上方網址,在「語言」內可以選擇「中文」 
  2. 開啟上方網址,點選「Order Now」(立即訂購)
    開啟上方網址,點選「Order Now」(立即訂購) 
  3. 設定「Free Dynamic DNS Hosting」(免費動態DNS託管)
    設定「Free Dynamic DNS Hosting」(免費動態DNS託管) 
  4. 點選「Continue」(繼續)
    點選「Continue」(繼續) 
  5. 點選「Checkout」(結帳)
    點選「Checkout」(結帳) 
  6. 填寫資料註冊帳號
    填寫資料註冊帳號
    填寫資料註冊帳號-2 
  7. 點選「Complete Order」(完成訂單)
    點選「Complete Order」(完成訂單) 
  8. 點選「Continue To Client Area」(繼續前往用戶區)
    點選「Continue To Client Area」(繼續前往用戶區) 
  9. 用戶介面
    用戶介面 
  10. 歡迎信件,內容說明:
    登入帳號:您的郵件位址
    登入密碼:您設定的密碼
    歡迎信件,內容說明: 
  11. 訂單確認信件
    訂單確認信件

管理動態DNS

  1. 點選「Login」(登入)
    點選「Login」(登入) 
  2. 登入帳號
    登入帳號 
  3. 點選「Services」(服務) →「DNS Manager」(DNS管理)
    點選「Services」(服務) →「DNS Manager」(DNS管理) 
  4. 點選域名進入管理
    點選域名進入管理 
  5. DNS預設已有下列域名,可點選記錄進行編輯
     ftp.yourname.zyns.com 
     yourname.zyns.com 
     www.yourname.zyns.com 
    DNS預設已有下列域名,可點選記錄進行編輯 
  6. 修改正確的「IP位址」(主機外部IP) 後點選「Save」(儲存)
    修改正確的「IP位址」(主機外部IP) 後點選「Save」(儲存) 
  7. 若有需要可以點選「Add Record」(新增記錄)
    若有需要可以點選「Add Record」(新增記錄) 
  8. 點選「A Record」(A記錄)
    點選「A Record」(A記錄) 
  9. 輸入資料後點選「Save」(儲存)
    輸入資料後點選「Save」(儲存) 
  10. 多了一個免費域名:
     blog.yourname.zyns.com 
    多了一個免費域名 
  11. 「DNS Manager」(DNS管理) 其他功能
    可以再「Add Domain」(新增域名) 或「Delete」(刪除現有域名)
    「DNS Manager」(DNS管理) 其他功能 

刪除信用卡資訊

  1. 點選「Billing」(帳務) →「Payment Methods」(付款方式)
    點選「Billing」(帳務) →「Payment Methods」(付款方式) 
  2. 點選信用卡右方的「Delete」(刪除)
    點選信用卡右方的「Delete」(刪除) 
  3. 點選「Yes」(是) 確定刪除
    點選「Yes」(是) 確定刪除 
  4. 信用卡資訊刪除成功
    信用卡資訊刪除成功 

免費/付費DDNS比較

  1. 英文版說明
    英文版說明 
  2. 中文版說明
    中文版說明 

自動更新 IP 腳本

使用 ChangeIP API 自動更新 DNS IP 的腳本

透過 Shell Script 利用 Crontab 排程執行,就可以自動更新主機的動態 IP,實現自動化的 Cloudflare DDNS 功能。

  1. 自動更新 IP 腳本
    1. CIPUSER= 後方的字串 → 您的郵件位址
    2. CIPPASS= 後方的字串 → 您設定的密碼
    3. 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
    

        自動更新 IP 腳本-1
      自動更新 IP 腳本-2 

  2. 變更檔案權限成可執行
    chmod +x ddns.sh
    
  3. 排程 每30分鐘 執行腳本
    sudo vim /etc/crontab
    -------------------------------------------------------
    */30 * * * * root /root/ddns/ddns.sh >/dev/null 2>&1 &
    

其他腳本

  1. 查詢外部IP

     internet.sh 

    curl ipinfo.io/ip && echo
    

    查詢外部IP 

  2. 查看更新日誌內容

     ddns_catlog.sh 

    cat /var/log/changeip.log
    

    查看更新日誌內容 

  3. 資料檔刪除程式

    IP更新異常或重置時執行

     ddns_rmlog.sh 

    rm -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服務,這個免費方案雖然在功能上有所限制,但對於個人使用或小型專案而言已經相當實用,若未來需要更多功能或更高的可靠性,也可以考慮升級到付費版本,獲得更多的域名選擇和進階功能。

閱讀完成

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端