三月 09

RouterOS裡有一個內建的工具dns-update

是用來把IP更新到DDNS上去的

首先先到ChangeIP.com申請一個帳號,並建立一個免費的Domain

網路上所找到的Script在RouterOS 3.7版上使用會有問題

所以我做了一些修改,使Script可以在RouterOS 3.7版上面使用

先到RouterOS裡新增一個Script,System->Script。

內容如下。記得把Script的名字改為ddnsUpdate


#以下程式碼於RouterOS 3.7下測試通過

:log info "DDNS: Begin"
:local ddnsuser "你的帳號"
:local ddnspass "你的密碼"
:local ddnshost "名稱(如為test.changeip.net的話,請填test)"
:local ddnszone "網域(如為test.changeip.net的話,請填changeip.net)"
:local ddnsinterface "你要更新上去IP所使用的介面名稱(pppoe-out)"
#一定要先宣告,不然後面程式無法使用
:global ddnslastip
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
#舊的IP有存在就用舊的,不存在就建0.0.0.0/0
:if ([:typeof [:global ddnslastip]] = nil ) do={ :global ddnslastip 0.0.0.0/0 } else={ :set ddnslastip $ddnslastip }
:if ([:typeof [:global ddnsip]] = nil ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
    :if ($ddnsip != $ddnslastip) do={
        :log info "DDNS: 開始更新DDNS!"
        :log info ([/tool dns-update key-name=$ddnsuser key=$ddnspass name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] zone=$ddnszone] . "更新IP:" . $ddnsip)

        :global ddnslastip $ddnsip
} else={
        :log info "DDNS: IP無變動"
}
}
:log info "DDNS: End"

然後再到Scheduler,System->Scheduler。新增1個排程

內容如下。更新時間可以依你的喜好來設定,我是設定3分鍾更新一次


/system script run ddnsUpdate

參考資料:最新RouterOS 動態域名更新(簡體)

8 Responses to “RouterOS 動態更新IP到 ChangeIP.com”

  1. RouterOS 動態更新IP到 DynDNS | 電腦茶包 Blog Says:

    […] 如果你要更新到ChangeIP.com的話,請參考RouterOS 動態更新IP到 ChangeIP.com 建議先到RouterOS 動態更新IP到 […]

  2. lo Says:

    請問一下有no-ip的script嗎?

  3. jason Says:

    to lo:
    這邊有網友寫好的範例,也許你可以參考一下
    [教學][Scripts]Dynamic DNS Update Script for (NO-IP-UO)
    http://blog.u-fox.net/613/%E6%95%99%E5%AD%B8scriptsdynamic-dns-update-script-for-no-ip-uo

  4. RouterOS 動態更新IP到 No-IP | 電腦茶包 Blog Says:

    […] 設定完下面的Script,記得要再設定Schedual,設定可以參考RouterOS 動態更新IP到 ChangeIP.com […]

  5. The RouterOS dynamically update the IP to No-IP | Technical News Says:

    […] setting up the following Script, remember again to set Schedual, set can refer RouterOS dynamically update IP to ChangeIP.com […]

  6. 自動更新RouterOS Logging remote IP位置 | 電腦茶包 Blog Says:

    […] 這樣子就沒問題了,Schedule的設定方式可以參考本篇RouterOS 動態更新IP到 ChangeIP.com的下半部文章 […]

  7. Kary Says:

    試了這個script,從log發現每次執行都會向DDNS發出更改IP的請求,原本我們是希望如果IP沒變,就不用更新IP,找了原廠的文件寫法都差不多,原因是出在:global ddnslastip,每次執行時這個變數並沒有保留上次的IP,我的routerOS版本是v6.30
    當然每次更新IP也不是大問題,只要執行頻率不要太頻繁,超過DDNS服務商的容忍就好,網路上有人反映更新太頻繁被停權的
    我做了一點修改,每次執行script時,先去解析網域的IP,然後set到ddnslastip這個變數,當然這個變數設local就好了,這樣就不會每次執行就去更新IP,也就不怕不小心被DDNS停權

  8. jason Says:

    Hi Kary:

    script應該會把該次的IP記錄下來,只有IP有變動時才會更新。

    要觀察變數的話可以使用以下指令:/system script environment print

    你是否有用多個script更新IP,以至於ddnslastip每次都被蓋掉?

    如果要更新多個IP的話,global的變數,每個script都要不一樣喔。

留下評論

限制時效已用盡。請重新載入驗證碼。