gfx wrote:
pppoe-out2...(恕刪)
從網路上東拼西湊, 最後我是有幾個 scripts 可以用來更新 NO-IP, ChangeIP 及 NameCheap
不過自從 NO-IP 更改免費帳號 domain expiry 規定, 從每半年要動一次縮到一個月後我已放棄不用 (我家的 WAN IP 雖也是拿 DHCP 但好像超過一年沒有變更過 IP, NO-IP 那邊看到每次都是同一 IP 就不當做更新, 那就是說我要每個月人手登錄 NO-IP 所以不再使用)
ChangeIP 及 NameCheap 相對好用的地方就是不用擔心到中國大陸時不能用, NameCheap 還可以直接把你的付費 domain 拿一個 subdomain 出來作 DDNS update 用, 所以我買了 domain name 後遲早都會放棄 ChangeIP 不用.
廢話少說, 可以看看以下 ChangeIP DDNS 更新的 script (只需要使用 read + test 的權限):
:local ddnsuser "username"
# 上面就是 ChangeIP 用戶名
:local ddnspass "password"
# 當然就是密碼囉
:local ddnshost "DDNS hostname"
# 你的 ChangeIP domain
:local ddnsinterface "WAN1"
# 你打算要更新的網路介面 (interface 中的網卡名稱), 由於能指定介面, 所以就算你有幾個上網線路, 也能在 ChangeIP 分開更新不同的 DDNS
:locall ddnssystem ("mt-" . [/system package get [/system package find name=system] version] )
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
:global ddnslastip
# 如果有多於一個介面要更新到 ChangeIP, 第二個 script 的這個 variable 名應該要變更 (因為使用了 global)
:if ([:len [/interface find name=$ddnsinterface]] = 0 ) do={ :log info "DDNS: No interface named $ddnsinterface, please check configuration." }
:if ([ :typeof $ddnslastip ] = "nothing" ) do={ :global ddnslastip 0.0.0.0/0 }
:if ([ :typeof $ddnsip ] = "nothing" ) do={
:log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
:if ($ddnsip != $ddnslastip) do={
:log info ("DDNS: Updating ".$ddnsinterface." with IP ".$ddnsip)
:log info [ :put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
:global ddnslastip $ddnsip
} else={
:log info "DDNS: No changes necessary."
}
}