|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 htqt 于 2009-8-1 15:58 编辑
本人的线路为 光纤IP+ ADSL(备用),,近日光纤老是不稳定,用netwatch启动脚本又不准确,研究了个 netwatch 检测多次(10秒一次),每次down 函数mcd 加1,每次UP 函数mcu 加1,累计5次down 才切换的脚本, 如果up先累计够5次,则取消这次切换尝试,待下一此 down 之后再次冗余判断
因为保密,我把netwatch检测用IP改了221.0.0.0,你需要改成适合自己网络的IP,建议改成你的网络tracert出去的第2级或第3级 IP。。另外LAN1是我的固定IP线路,CNC1是ADSL线路,你需要改成你的固定IP线路名称和ADSL线路名称,。。下面的脚本是我用print出来的再改的,我也不精通这个,不一定能直接导进去,可能要自己改下语法
:log info ("mcd=" . $mcd)
:log info ("mcdp=" . $mcdp)
log info ("mcu=" . $mcu)
:log info ("mcup=" . $mcup)
这些语句是测试用的,等切换正常了也可以去掉
ip route add dst-address=221.0.0.0/32 gateway=(这里填lan线路的网关)interface=lan1 gateway-state=reachable scope=255 target-scope=10 首先把 LAN线路检测用的IP 绑定在lan口出
tool netwatch add host=221.0.0.0 timeout=1s interval=5s since=jul/31/2009 21:22:27 status=up up-script=:if ([/system scheduler find name=vrrp-mu disabled=yes]!="") do={/system scheduler enable vrrp-mu} down-script=:if ([/system scheduler find name=vrrp-md disabled=yes]!="") do={/system scheduler enable vrrp-md}
这个意思是down的时候运行vrrp-md,up的时候运行vrrp-mu脚本,并且避免运行期间重复激活脚本。
system script add name="vrrp-md" owner="admin" policy=ftp,reboot,read,write,policy,test,winbox,password
source=
:if (([/interface find name=cnc1 disabled=yes]!="")&&([//tool netwatch find comment=link-swicth status=down]!="")) do={:global mcd ($mcd+1)
}else={
:global mcdp ($mcdp+1)
}
:if ($mcd>5) do={
:global mcd 0
:global mcdp 0
:log info "vrrp>>>cnc1"
/interface pppoe-client enable cnc1
/ip route set [/ip route find dst-address=0.0.0.0/0 interface=lan1] distance=2
/system scheduler disable vrrp-md
:delay 15
/system script run DDNS
}
:if ($mcdp>5) do={
:global mcd 0
:global mcdp 0
/system scheduler disable vrrp-md
}
:log info ("mcd=" . $mcd)
:log info ("mcdp=" . $mcdp)
这个是检测到down运行的脚本
system script add name="vrrp-mu" owner="admin" policy=ftp,reboot,read,write,policy,test,winbox,password
source=
:if (([/interface find name=cnc1 disabled=no]!="")&&([/tool netwatch find comment=link-swicth status=up]!="")) do={:global mcu ($mcu+1)
}else={
:global mcup ($mcup+1)
}
:if ($mcu>5) do={
:global mcu 0
:global mcup 0
:log info "vrrp>>>lan1"
/interface pppoe-client disable cnc1
/ip route set [/ip route find dst-address=0.0.0.0/0 interface=lan1] distance=1
/system scheduler disable vrrp-mu
:delay 15
/system script run DDNS
}
:if ($mcup>5) do={
:global mcu 0
:global mcup 0
/system scheduler disable vrrp-mu
}
:log info ("mcu=" . $mcu)
:log info ("mcup=" . $mcup)
这个是检测到up运行的脚本 |
|