多ADSL负载--掉线后自动修改pcc/nth参数 保证网络畅通[修正版]
本帖最后由 zooyo 于 2011-3-21 22:15 编辑很多朋友提出了这个问题,假如有4条ADSL跑PCC负载,掉了其中一条后网络就会出现问题,网页打不开或者很慢等等,这是由于PCC参数不匹配造成的。针对这样的情况WGHBOY兄已经发过一脚本,今天应一个朋友的需要测试后发现该脚本判断不太准确,呵呵。遂花了点时间重新编写达到所要目的。
以4线为例,其中某条线路断了后,会自动判断剩余可用的线路数量然后修改PCC规则的参数,线路恢复正常后会自动把参数修改回正常状态,注意连接标记名称一定要以纯数字“1、2、3、4...”来命名。一般该脚本设置30秒间隔就比较合适。
PCC:
{
:local status
:local i "5"
:local x "0"
:local y "0"
:local z "0"
:set x [:len ]
:if ($x<$i) do={
:for ii from=1 to=$i do={
:set status running]
:if ($status=true) do={
/ip fir man set per-connection-classifier=("both-addresses:".$x."/".$y) disable=no;:set y ($y+1)} else={
/ip fir man set disable=yes}}}
:if ($x=$i) do={
:set z [:len ]
:if ($z>0) do={
:for ii from=1 to=$i do={
/ip fi man set per-connection-classifier=("both-addresses:".$x."/".$y) disable=no;:set y ($y+1)}}}}
NTH:
{
:local status
:local i "5"
:local x "0"
:local y "1"
:local z "0"
:set x [:len ]
:if ($x<$i) do={
:for ii from=1 to=$i do={
:set status running]
:if ($status=true) do={
/ip fir man set nth=($x.",".$y) disable=no;:set y ($y+1)} else={
/ip fir man set disable=yes}}}
:if ($x=$i) do={
:set z [:len ]
:if ($z>0) do={
:for ii from=1 to=$i do={
/ip fi man set nth=($x.",".$y) disable=no;:set y ($y+1)}}}}
本帖最后由 47771885 于 2011-2-24 02:42 编辑
不错不错 哼好很好 学习 :lol我那个只是会一直刷log 希望脚本有文本版本的 ;P http://bbs.routerclub.com/forum.php?mod=viewthread&tid=41204&extra=
看回复,我很早前发的,虽然写的不是很好。但也没啥问题。 ksw520 发表于 2011-2-24 10:14 static/image/common/back.gif
http://bbs.routerclub.com/forum.php?mod=viewthread&tid=41204&extra=
看回复,我很早前发的,虽然写的 ...
哎。怪我眼神不好,没看到你回复,自己还闷着头写。 :local pccstatus
:local status
:local pccold
:local pccnew
:local link
:local ncm
:local nrm
:local y
:local z
:local x
:set x 4
:set link 0
:for i from=1 to="$x" do={
:set status running]
:if ("$status" = true) do={
:set link ($link + 1)
}
}
:if ("$link" > 1) do={
:set z "$link"
:set y 0
:for i from=1 to="$x" do={
:set status running]
:set ncm ("adsl" . "$i" . "conn")
:set nrm ("ADSL" . "$i")
:if ("$status" = true) do={
:set pccnew ("both-addresses" . ":" . "$z" . "/" . "$y")
:set pccold per-connection-classifier]
:set pccstatus disable]
:if (("$pccnew" != $pccold) || ("$pccstatus" = true)) do={
/ip firewall mangle set [ /ip firewall mangle find chain=bonding new-connection-mark="$ncm"] per-connection-classifier=$pccnew disabled=no
/ip firewall mangle set [ /ip firewall mangle find chain=bonding new-routing-mark="$nrm"] disabled=no
}
:set y ($y + 1)
} else {
:set pccstatus disable]
:if ("$pccstatus" = false) do={
/ip firewall mangle disable [ /ip firewall mangle find chain=bonding new-connection-mark="$ncm"]
/ip firewall mangle disable
}
}
}
}
}
楼主的脚本跟这位朋友的脚本有什么区别呢? 是啊
希望脚本有文本版本的:) 回复 kyer2012 的帖子
区别就是,KSW520大哥的是文字版,我的是图片版。 修改版本的脚本在那里啊 连接标记名称是字母加数字的话 如何做改动 谢谢版主分享! 回复 leehomv 的帖子
很简单啊,把英文加数字的改成纯数字。 非常好,楼主你弄好的脚本能用文件形式下载吗 ...都喜欢这玩意是吧有空我也来瞅瞅热闹占位