多线ADSL拨出动态IP自动负载均衡脚本

上传人:飞*** 文档编号:40572845 上传时间:2018-05-26 格式:DOC 页数:4 大小:32.50KB
返回 下载 相关 举报
多线ADSL拨出动态IP自动负载均衡脚本_第1页
第1页 / 共4页
多线ADSL拨出动态IP自动负载均衡脚本_第2页
第2页 / 共4页
多线ADSL拨出动态IP自动负载均衡脚本_第3页
第3页 / 共4页
多线ADSL拨出动态IP自动负载均衡脚本_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《多线ADSL拨出动态IP自动负载均衡脚本》由会员分享,可在线阅读,更多相关《多线ADSL拨出动态IP自动负载均衡脚本(4页珍藏版)》请在金锄头文库上搜索。

1、用 ROS 已经十多天了,俺就不信做不了这个喜欢的请顶一下不管是双网通、还是双电信,还是一个网通一个电信还是更多的 ADSL 线路,只要动态分配 IP,通吃。设计包含了根据动态分配的 IP 自动更新为静态 IP,然后再设为负载均衡的网关。所有拨通、断开、禁用等均可自动设置。如果没有变化不会有设置命令执行,对上网无任何影响。工作流程概述:1、查找所有断开状态的 PPPoE 线路,删除未连接的静态 IP 设置;2、查找所有结连的 PPPoE 线路,检查动态 IP、更新静态 IP;3、计算出多线均衡的网关设置,然后用 /ip route add gateway ip1,ip2,ip3.形式加入网关完

2、成!使用方法:建一个脚本,起一个名字;在计划中每几秒执行一次;基本不会对 CPU 加重负载。有图为证,4 线拨出:脚本源码::local gw “:local js 0:foreach k in=/inter pppoe-c find running=false do=:set n /inter pppoe-c get $k name:set ipi /ip addr find interface=$n dynamic=false:if ($ipi != “) do=/ip addr remove $ipi:foreach k in=/inter pppoe-c find running=tr

3、ue do=:set n /inter pppoe-c get $k name:set dip /ip address get find interface=$n dynamic=true address:set diip :pick $dip 0 :find $dip /:if ($js=0) do=:set gw $diip else=:set gw ($gw . “,“ . $diip):set js ($js+1):set ipi /ip addr find interface=$n dynamic=false:if ($ipi=“) do=/ip addr add address=$

4、diip netmask=255.255.255.255 network=$diip broadcast=$diip interface=$n else=:set sip /ip addr get $ipi address: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:set i /ip route find comm=ecmp:if ($gw = “) do=

5、:if ($i != “) do=/ip route remove $i else=:if ($i=“) do=/ip route add gateway $gw comment=ecmp else=:set ogw /ip route get $i gateway:if ($ogw != $gw) do=/ip route set $i gateway $gw给脚本加注解,希望想学习者不走弯路:因为只有使用形如/ip route gateway ip1,ip2,ip3 . 才得得到负载均衡,但拨号的 IP 不固定,因此必须检查并设置为拨号得到的 IP 地址为静态,再设到网关中去才起作用。动态

6、 IP 无效后要删掉,得到后要加到这网关中去。所以代码必须有自我维护的功能。#先删无效静态 IP#本地变量,GW:网关变量, JS:计数器:local gw “:local js 0#执行循环,对每一个未激活(未拨号或禁用)PPPOECLIENT 连接:foreach k in=/inter pppoe-c find running=false do=#查找连接的名字到 n:set n /inter pppoe-c get $k name#取得这个连接的静态 IP 地址,因为自动得到的是动态 IP,所以静态的肯定是脚本加的:set ipi /ip addr find interface=$n

7、dynamic=false#如果找到了,删掉它:if ($ipi != “) do=/ip addr remove $ipi#下去循环每个激活的连接:foreach k in=/inter pppoe-c find running=true do=#得到接口名字:set n /inter pppoe-c get $k name#查找接口动态得到的 IP:set dip /ip address get find interface=$n dynamic=true address#因为得到的是#.#.#.#/#格式,所以取“/“前面部分为动态 IP:set diip :pick $dip 0 :f

8、ind $dip /#将动态 IP 加入到网关串中,JS 决定是不是加入间隔的逗号:if ($js=0) do=:set gw $diip else=:set gw ($gw . “,“ . $diip):set js ($js+1)#查找接口的静态 IP:set ipi /ip addr find interface=$n dynamic=false#如果没有静态 IP,那么设一个:if ($ipi=“) do=/ip addr add address=$diip netmask=255.255.255.255 network=$diip broadcast=$diip interface=

9、$n else=#已经有了,取得静态 IP:set sip /ip addr get $ipi address#求静态 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 /ip route find comm=ecmp#如果 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 /ip route get $i gateway#如果不相同就更新一下:if ($ogw != $gw) do=/ip route set $i gateway $gw

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号