如果您的網路架構為下圖,RouterOS 間接連接網路,不是直接連接網路,是透過 NAT 取得內網 IP,才適合以下設定方式:
首先新增完 DtDNS 帳號後,需要建立 DNS 名稱,登入帳號後選擇 Hostnames:
Hostname:輸入要新增的 DNS 名稱
Domain:選擇要使用的網址名稱 設定完成後按下 Add Hostname 按鈕。
新增 DNS 完成:
使用 Winbox 登入 Router OS ,選擇選項 System > Scripts:
選擇 Scripts 分類項,按下 + 號 新增項目:
Name:輸入要對此 Script 的命名,例如:DDNS_DtDNS。
Source:輸入 Script 程式碼,如下:
以下三個項目需要修改:
DDNSUser:改為您的 DtDNS 帳號,例如:username
DDNSPassword:改為您的 DtDNS 密碼,例如:password
DDNSHost:改為您申請的網址名稱,例如:cscworm
#定義 DtDNS 相關設定,以下自行修改: #============================================================ :local DDNSPassword "輸入DtDNS密碼 xxxxx" :local DDNSHost "輸入申請的網址名稱 xxx.dtdns.net" #============================================================ #以下程式如不了解,建議不要修改: #------------------------------------------------------------------------------------------ #定義 IP 變數 :local DDNSIP :global DDNSLastIP #定義變數預設值 :if ([ :typeof $DDNSLastIP ] = nil ) do={ $DDNSLastIP "0.0.0.0" } #利用HTTP查詢Public IP /tool fetch address=checkip.dyndns.com src-path=/ mode=http dst-path=("PublicIP"); :delay 1; #讀取檔案 :set DDNSIP [/file get PublicIP contents]; :set DDNSIP [:pick $DDNSIP 0 [:find $DDNSIP "</body>"]]; :set DDNSIP [:pick $DDNSIP ([:find $DDNSIP ":"]+2) 100]; #刪除檔案 /file remove PublicIP; #判斷是否要更新 IP :if ([ :typeof $DDNSIP ] = nil ) do={ :log error ("DDNS DtDNS: 網路未取得 IP 位址") } else={ :if ($DDNSIP != $DDNSLastIP) do={ # 更新 DDNS IP :local url "http://www.dtdns.com/api/autodns.cfm?id=$DDNSHost&pw=$DDNSPassword&ip=$DDNSIP" /tool fetch url="$url" mode=http dst-path=("DDNS_DtDNS") :delay 1 # 檔案內容 :local filestr [ /file get "DDNS_DtDNS" contents]; # 刪除檔案 :local filename [ /file find name="DDNS_DtDNS"]; /file remove $filename # 變更是否成功 :if ( [ :find $filestr "$DDNSIP"] > 0 ) do={ :log warning ("DDNS DtDNS: 網路更新 IP 位址 " . $DDNSIP) :set DDNSLastIP $DDNSIP } else={ :log error ("DDNS DtDNS: 網路更新 IP 位址失敗 " . $DDNSIP) } } } #------------------------------------------------------------------------------------------
儲存完畢後,選取剛剛新增的項目,按下 Run Script 就會執行指定項目。
新增完 Script 後,但不會定時執行,所以要將 Script 加入排程,才會在指定時間執行。
選擇選項 System > Scheduler:
按下 + 號 新增項目:
Name:輸入要對此排程的命名,例如:DDNS_DtDNS。
Start Date:排程開始日期,例如:Jun/09/2012
Start Time:排程開始時間,例如:00:00:00
Interval:排程間隔執行時間,例如:00:01:00 表示 間隔 1分鐘 執行一次。
On Event:排程執行事件,輸入 Event 程式碼,如下:
將 run 後面的 DDNS_DtDNS 改為您剛剛建立的 Script 名稱。
/system script run DDNS_DtDNS
完成排程設定,經過 1分鐘 就會自動執行一次:
可以到 Log 查詢是否更新成功,選擇選項 Log:
Log 中有更新記錄,就表示設定成功了。
https://www.ez2o.com/Blog/Post/MikroTik-RouterOS-DDNS-DtDNS-Indirect
https://www.ez2o.com/Blog/Post/215