MikroTik RouterOS 動態 DNS (Dynamic DNS - DDNS) 設定 IP 到 DtDNS 間接連接網路 MikroTik RouterOS 動態 DNS (Dynamic DNS - DDNS) 設定 IP 到 DtDNS 間接連接網路
  Mikrotik RouterOS       ez      2013-06-27

如果您的網路架構為下圖,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 中有更新記錄,就表示設定成功了。


標籤:   Mikrotik RouterOS

我要留言