如果您的網路架構為下圖,RouterOS 間接連接網路,不是直接連接網路,是透過 NAT 取得內網 IP,才適合以下設定方式:
首先新增完 no.ip 帳號後,需要建立 DNS 名稱,登入帳號後選擇 Add a Host:
Hostname:輸入要新增的 DNS 名稱,並且選擇網址,例如:cscworm.no-ip.info
IP Address:輸入 IP 位址,可以隨便輸入,因為之後要透過 RouterOS 更新,例如:127.0.0.1
新增 DNS 完成:
使用 Winbox 登入 Router OS ,選擇選項 System > Scripts:
選擇 Scripts 分類項,按下 + 號 新增項目:
Name:輸入要對此 Script 的命名,例如:DDNS_no_ip。
Source:輸入 Script 程式碼,如下:
以下三個項目需要修改:
DDNSUser:改為您的 no.ip 帳號,例如:username
DDNSPassword:改為您的 no.ip 密碼,例如:password
DDNSHost:改為您申請的網址名稱,例如:cscworm.no-ip.info
#定義 no.ip 相關設定,以下自行修改: #============================================================ :local DDNSUser "輸入no.ip帳號" :local DDNSPassword "輸入no.ip密碼" :local DDNSHost "輸入申請的網址名稱" #============================================================ #以下程式如不了解,建議不要修改: #------------------------------------------------------------------------------------------ #定義 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 no.ip: 網路未取得 IP 位址") } else={ :if ($DDNSIP != $DDNSLastIP) do={ # 更新 DDNS IP :local url "/nic/update?hostname=$DDNSHost&myip=$DDNSIP" /tool fetch address=dynupdate.no-ip.com src-path=$url mode=http user=$DDNSUser password=$DDNSPassword dst-path=("DDNS_no_ip") :delay 1 # 檔案內容 :local filestr [ /file get "DDNS_no_ip" contents]; # 刪除檔案 :local filename [ /file find name="DDNS_no_ip"]; /file remove $filename # 變更是否成功 :if ( [ :find $filestr "good"] = "0" || [ :find $filestr "nochg"] = "0" ) do={ :log warning ("DDNS no.ip: 網路更新 IP 位址 " . $DDNSIP) :set DDNSLastIP $DDNSIP } else={ :log error ("DDNS no.ip: 網路更新 IP 位址失敗 " . $DDNSIP) } } } #------------------------------------------------------------------------------------------
儲存完畢後,選取剛剛新增的項目,按下 Run Script 就會執行指定項目。
新增完 Script 後,但不會定時執行,所以要將 Script 加入排程,才會在指定時間執行。 選擇選項 System > Scheduler:
按下 + 號 新增項目:
Name:輸入要對此排程的命名,例如:DDNS_no_ip。
Start Date:排程開始日期,例如:Jun/10/2012
Start Time:排程開始時間,例如:00:00:00
Interval:排程間隔執行時間,例如:00:01:00 表示 間隔 1分鐘 執行一次。
On Event:排程執行事件,輸入 Event 程式碼,如下:
將 run 後面的 DDNS_no_ip 改為您剛剛建立的 Script 名稱。
/system script run DDNS_no_ip
完成排程設定,經過 1分鐘 就會自動執行一次:
可以到 Log 查詢是否更新成功,選擇選項 Log:
Log 中有更新記錄,就表示設定成功了。
https://www.ez2o.com/Blog/Post/MikroTik-RouterOS-DDNS-no.ip-Indirect
https://www.ez2o.com/Blog/Post/218