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

如果您的網路架構為下圖,RouterOS 直接連接 ISP 設備,才適合以下設定方式:

首先新增完 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

DDNSInterface:改為您的網路介面名稱,就是 Interfaces 裡面設定的名稱,例如:WAN1 或 ether1

#定義 DtDNS 相關設定,以下自行修改: 
#============================================================ 
:local DDNSPassword "輸入DtDNS密碼 xxxxx"
:local DDNSHost "輸入申請的網址名稱 xxx.dtdns.net"
:local DDNSInterface "輸入網路介面名稱 pppoe-out1"
#============================================================ 
  
#以下程式如不了解,建議不要修改: 
#------------------------------------------------------------------------------------------ 
#定義 IP 變數 
:local DDNSIP 
:global DDNSLastIP 
  
#定義變數預設值 
:if ([ :typeof $DDNSLastIP ] = nil ) do={ $DDNSLastIP "0.0.0.0" } 
  
#取得網路介面 IP 位址 
:set DDNSIP [ /ip address get [/ip address find interface=$DDNSInterface ] address ] 
:set DDNSIP [ :pick $DDNSIP 0 [ :find $DDNSIP "/" ] ] 
  
#判斷是否要更新 IP 
:if ([ :typeof $DDNSIP ] = nil ) do={ 
    :log error ("DDNS DtDNS: 網路介面 " . $DDNSInterface . " 未取得 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_$DDNSInterface") 
        :delay 1 
  
#       檔案內容 
        :local filestr [ /file get "DDNS_DtDNS_$DDNSInterface" contents]; 
  
#       刪除檔案 
        :local filename [ /file find name="DDNS_DtDNS_$DDNSInterface"]; 
        /file remove $filename 
  
#       變更是否成功 
        :if ( [ :find $filestr "$DDNSIP"] > 0 ) do={ 
            :log warning ("DDNS DtDNS: 網路介面 " . $DDNSInterface . " 更新 IP 位址 " . $DDNSIP) 
            :set DDNSLastIP $DDNSIP 
        } else={ 
            :log error ("DDNS DtDNS: 網路介面 " . $DDNSInterface . " 更新 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

我要留言