请高手将 多线ADSL拨出动态IP自动负载均衡脚本 修改成为3.X版本的
请高手将 多线ADSL拨出动态IP自动负载均衡脚本 修改成为3.X版本的,同时希望能够支持ADSL同网关情况的#本地变量,GW:网关变量, JS:计数器
:local gw ""
:local js 0
#执行循环,对每一个未激活(未拨号或禁用)PPPOE-CLIENT连接
:foreach k in= do={
#查找连接的名字到n
:set n
#取得这个连接的静态IP地址,因为自动得到的是动态IP,所以静态的肯定是脚本加的
:set ipi
#如果找到了,删掉它
:if ($ipi != "") do={/ip addr remove $ipi}
}
#下去循环每个激活的连接
:foreach k in= do={
#得到接口名字
:set n
#查找接口动态得到的IP
:set dip address]
#因为得到的是#.#.#.#/##格式,所以取"/"前面部分为动态IP
:set diip [:pick $dip 0 [:find $dip /]]
#将动态IP加入到网关串中,JS决定是不是加入间隔的逗号
:if ($js=0) do={:set gw $diip} else={:set gw ($gw . "," . $diip)}
:set js ($js+1)
#查找接口的静态IP
:set ipi
#如果没有静态IP,那么设一个
:if ($ipi="") do={/ip addr add address=$diip netmask=255.255.255.255 network=$diip broadcast=$diip interface=$n} else={
#已经有了,取得静态IP
:set sip
#求静态IP
:set siip [:pick $sip 0 [:find $sip /]]
#检查是否正确,如不正确,则更新一下。正确不需要重设。
:if ($diip != $siip) do={
/ip addr set $ipi addr=$diip netmask=255.255.255.255 network=$diip broadcast=$diip
}
}
}
#查找标记为"ecmp"的默认网关
:set i
#如果GW网关为空,即没有拨号成功的连接,则删除ECMP网关(如果有的话)
:if ($gw = "") do={:if ($i != "") do={/ip route remove $i}} else={
#没有ECMP网关,加一个新的
:if ($i="") do={/ip route add gateway $gw comment=ecmp} else={
#如果有ECMP网关,则取得现在设置
:set ogw
#如果不相同就更新一下
:if ($ogw != $gw) do={/ip route set $i gateway $gw}
}
} 本帖最后由 wwjun 于 2009-2-13 22:18 编辑
在网关处用gateway interface直接指定接口就可以了。这样的问题以后应该不会再有人问了吧?
脚本对ROS负载均衡已无多大意义。 现在有新办法可以做啦。 3.x下用基于端口的负载均衡就行了,不需要如此繁琐了 2.9.27也不用了 有新方法新思路要共享出来啊,小第不懂,但大家也要指点以下 我是来拿金币的
页:
[1]