RouterOS之DDNS(動態域名)

新版ROS的IP菜單下有個Cloud,其實就是支持動態域名的,將此功能使能後,過一會兒就Public Address和DNS Name中就會顯示出內容,前都爲你的外網IP地址,後者爲自動創建域名,以後使用這個域名訪問就行了。



如果要使用國內的DDNS服務,如花生殼(xxx.wicp.net)或pubyun(xxx.f3322.net),則需要使用腳本程序了。創建腳本:System-->Scripts-->新建(就是那個+號),在對話框中的Name項輸入DDNS,把所用的複選框打上構,下面的文本框是用來輸出腳本程序的。以下是f3322.net的DDNS更新IP的腳本程序(測試OK),根據自己的情況修改紅色加粗的內容,uuu表示動態域名的用戶名,ppp表示動態域名的密碼,xxx表示動態域名名稱,pppoe-out表示拔號連接的名稱。

:local ednsuser "uuu"
:local ednspass "
ppp"
:local ednshost "
xxx.f3322.net"
:local ednsinterface "
pppoe-out"
:local members "http://members.3322.net/dyndns/update?system=dyndns"
:local status
:local status [/interface get [/interface find name=$ednsinterface] running]
:if ($status!=false) do={
:local ednslastip [:resolve $ednshost]
:if ([ :typeof $ednslastip ] = nil ) do={ :local ednslastip "0" }
:local ednsiph [ /ip address get [/ip address find interface=$ednsinterface ] address ]
:local ednsip [:pick $ednsiph 0 [:find $ednsiph "/"]]
:local ednsstr "&hostname=$ednshost&myip=$ednsip"
:if ($ednslastip != $ednsip) do={/tool fetch url=($members . $ednsstr) mode=http user=$ednsuser password=$ednspass
:delay 2
:local result [/file get $ednshost contents]
:log info ($ednshost . " " .$result)
/file remove $ednshost;
}

}

此腳本程序的工作內容:檢查當前的IP地址和域名xxx.f3322.net指向的IP是否相同,如果不同則向動態域名服務器提交請求更新IP。



腳本程序編寫好後,需要定時運行,因此需要創建一個計劃任務:System-->Scheduler-->新建(就是那個+號),將對話框中的Interval設置爲:00:01:00,表示1分鐘執行一次,在On Event文本框中輸入DDNS,其它的默認值即可。



另外要注意,如果電信拔號上網分配到的IP是100.開頭的,則意味着你是通過電信的內網NAT上網的,沒有直接連到外網,無法通過端口映射實現外網訪問內部的服務器。那就打個電話給電信客戶要求使用外網IP即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章