光纤上行多ADSL下行脚本分享
本帖最后由 glb323 于 2013-3-12 11:19 编辑要做到光纤上行,多ADSL线路下行,有不少限制因素,下面的脚本经过多项目验证都是没有问题的,所以请不要对脚本的可用性怀疑。
下面的示例用的是北京联通的48线ADSL。有些没说到的内容大家自己想办法。
1.首先我们当然是要跟vlan交换机对接啦,那就先创建vlan吧,此处以联通示例,如果是多pcc,请自行解决。:for i from=901 to=948 do= {/int vlan add interface=WAN name=("vlan".$i) vlan-id=$i}
/int vlan set comment=VLAN-CU
/2.vlan搞定了,接下来就是建桥了,为什么要这么做,我想大家都应该明白吧:for i from=901 to=948 do= {/int bridge add name=("bridge".$i) admin-mac=("01:88:".$i) auto-mac=no}
:for i from=901 to=948 do= {/int bridge port add bridge=("bridge".$i) interface=("vlan".$i)}
/int bridge set comment=BRIDGE-CU
/int bridge port set comment=BRIDGE-CU
/
3.下面呢,我们搞个profile给pppoe-client用,方便多pcc分离。/ppp profile add change-tcp-mss=default name=profile-CU only-one=default use-compression=no use-encryption=no use-mpls=no use-vj-compression=no dns-server=202.106.0.20,202.106.196.115
/
4.现在我们该建拨号连接了。/interface pppoe-client
:for i from=901 to=948 do= {/int pppoe-client add name=("cu-pppoe-out".($i-900)) interface=("bridge".$i) profile=profile-CU}
/interface pppoe-client set comment=PPPoE-CU
/
5.建个联通nat的地址池吧/ip firewall address-list add address=172.17.0.0/24 disabled=no list=NAT-CU
/
6.起nat了,这里的地址都是临时的,真正运行起来,会自动修改的哦:for i from=901 to=948 do= {/ip firewall nat add action=src-nat chain=srcnat disabled=no connection-mark=("cu".($i-900)) to-addresses=("2.2.2.".($i-900))}
/ip firewall nat set comment=NAT-CU
/
7.做标记:for i from=901 to=948 do= {/ip firewall mangle add action=mark-connection chain=prerouting disabled=no dst-address-type=!local new-connection-mark=("cu".($i-900)) passthrough=yes per-connection-classifier=("both-addresses-and-ports:48/".($i-901)) src-address-list=NAT-CU}
:for i from=901 to=948 do= {/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=("cu".($i-900)) disabled=no new-routing-mark=fiber_route passthrough=yes src-address-list=NAT-CU}
/ip firewall mangle set comment=CONNECTION-CU
/ip firewall mangle set comment=ROUTING-CU
/
8.下面要做两个schedule,一个呢是去判断当前运行的出口数,做均衡;另外一个呢是看看每个线路是不是断线重拨了,如果重拨了,肯定是改了ip了。我们先做第一个。sys scheduler add name=scheduler-CU interval=00:01:00 on-event={
:local status
:local i "48"
: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-and-ports:"."$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-and-ports:"."$i"."/"."$y") disable=no;:set y ($y+1)}}}}9.现在做第二个。sys scheduler add name=changeip-CU interval=00:01:00 on-event={
:global ipa ""
:global ipb ""
:global pname ""
/interface pppoe-client
:for i from=1 to=48 do={
:set pname ("cu-pppoe-out". $i)
monitor $pname once do={
:if ($status="connected" && $uptime<00:01:00) do={
:set ipa address]
:set ipa [:pick $ipa 0 [:find $ipa "/"]]
:if ([:len ] > 0) do={
:set ipb to-addresses]
} else={/ip fir nat add action=src-nat chain=srcnat connection-mark=("cu".$i) to-addresses=$ipa comment=$pname;:set ipb $ipa}
:if ($ipb != $ipa) do={
/ip fir nat set to-addresses=$ipa disabled=no
:log warning ("\D0\DE\B8\C4\5B" . $pname . "\5D\D3\B3\C9\E4\B5\BD" . $ipa)
:beep length=3000ms frequency=1800
}}}}} 支持,不过强制SRC-NAT在某些地区还是被运营商限制的。 好工整的脚本!!!!沙发,支持楼主! rosabc 发表于 2013-3-12 12:01 static/image/common/back.gif
支持,不过强制SRC-NAT在某些地区还是被运营商限制的。
所以我有前提条件,能不能用,自己测试。 趁楼主没有卖钱前,赶紧看完! 留位有备用:lol 顶楼上的,留着备用! 顶楼上的,留着备用!
glb323 发表于 2013-3-12 12:13 static/image/common/back.gif
所以我有前提条件,能不能用,自己测试。
glb323的技术贴值得收藏,呵呵
我订了e3-2670一套了,回头指点指点怎么测试转发能力
所有配件预计周末就到期啦,哈哈 sealin 发表于 2013-3-12 19:28 static/image/common/back.gif
glb323的技术贴值得收藏,呵呵
我订了e3-2670一套了,回头指点指点怎么测试转发能力
所有配件预计周末就 ...
测试我也不会啊。那天忘了问你,你需要10个接口? glb323 发表于 2013-3-12 19:39 static/image/common/back.gif
测试我也不会啊。那天忘了问你,你需要10个接口?
现在是3入3出,考虑未来扩容,暂时上了两块i350t4,加上主板带的2口i350
一共10口,原来的两块82576可以继续使用,这就是14口啦,呵呵 sealin 发表于 2013-3-12 20:44
现在是3入3出,考虑未来扩容,暂时上了两块i350t4,加上主板带的2口i350
一共10口,原来的两块82576可以 ...
你的规模也不小啊 学习了,也可以 走vpn, 这个不错和你好好 收藏起來...........有空研究看看!~