网上此类教程比较多了
从更新方式看:
1. 使用 /tool dns-update 配合 www.changeip.com 账户提交
2. 使用 /tool fetch 构造url提交
当然第二种更具灵活性, 可以随意选择dns服务提供商
从提交检测上看:
1. 不检测IP变化, 定时提交当前IP
2. 随时检测IP变化, 只在IP变化的时候才提交更新
当然第二种更及时,且不会导致服务器端由于频繁提交更新而导致问题
下面是使用 http://zonomi.com DNS服务的一个示例, 放到scheduler下2秒检查一次即可:
global gout201
local lout201 [/ip address get [/ip address find interface="pppoe-out201"] address]
if ( ( $lout201 != "" ) && ( $lout201 != $gout201 ) ) do={
log info "DDNS: Sending UPDATE!"
put $lout201
local end [find $lout201 /]
local addr [pick $lout201 0 $end]
local url ("http://zonomi.com/app/dns/dyndns.jsp?action=SET&name=xxx.com&value=".$addr."&type=A&ttl=1&api_key=xxx")
/tool fetch url=$url
}
global gout201 $lout201
思路:
将当前的IP保存为global 变量, 这样在脚本结束的时候, 变量还存在, 下次执行脚本的时候就可以对比 IP 是不是有变化
当前的IP有变化的时候, 也可能是拨不上号了, 当前IP为空, 这样的话不交更新, 只有获得IP且不和上次一样的时候才更新
另外还有一种简单的获取当前ros IP的办法:
/tool netwatch add host=x.x.x.x interval=1
然后在x.x.x.x 上抓icmp包即可