fandl 发表于 2012-3-15 06:33:17

PCC负载均衡,多线合并成功,带断线自动修改。

::::标记及PCC

/ip firewall mangle
add action=change-mss chain=forward comment="" disabled=no new-mss=1400 protocol=tcp tcp-flags=syn
:for i from=1 to=4 do= {/ip firewall mangle add action=mark-connection chain=input comment="" disabled=no in-interface=("pppoe-out".$i) new-connection-mark=("in".$i) passthrough=yes}
:for i from=1 to=4 do= {/ip firewall mangle add action=mark-routing chain=output comment="" connection-mark=("in".$i) disabled=no new-routing-mark=("to".$i) passthrough=yes}
:for i from=1 to=4 do= {/ip firewall mangle add action=mark-connection chain=prerouting comment="" disabled=no dst-address-type=!local new-connection-mark=($i) passthrough=yes per-connection-classifier=("both-addresses:4/".($i-1)) src-address=192.168.1.0/24}
:for i from=1 to=4 do= {/ip firewall mangle add action=mark-routing chain=prerouting comment=($i) connection-mark=("in".$i) disabled=no new-routing-mark=("to".$i) passthrough=yes src-address=192.168.1.0/24}


:::添加路由表
:for i from=1 to=4 do= {/ip route add comment="" disabled=no distance=1 dst-address=0.0.0.0/0 gateway=("pppoe-out".$i) routing-mark=("to".$i)}
:for i from=1 to=4 do= {/ip firewall nat add action=masquerade chain=srcnat comment="" disabled=no out-interface=("pppoe-out".$i)}


PPC断线自动修改脚本
1分钟运行一次。
复制到system—schduler

{
:local status
:local i "4"
: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:"."$i"."/"."$y") disable=no;:set y ($y+1)}}}}


##说明:from=1 to=4(pppoe1到4,就是4线pppoe),:local i "4" (4线),根据自己实际修改。
        192.168.1.0/24根据实际修改(内网IP地址段)
        pppoe客户端名称,请按照pppoe-out1、pppoe-out2、pppoe-out3、pppoe-out4命名

参照别人的修改而成。

断线脚本非自己原创。

使用时注意是否和你原来的系统有冲突(包括名称重名、标记重名等)

在3线4M的ADSL测试,单机迅雷下载1.2m/s。

goodluck1981 发表于 2012-3-15 09:28:35

好像有了!~~

luye7 发表于 2012-3-16 11:50:37

有了也收藏,谢谢!:D

xyl138 发表于 2012-3-16 14:39:46

学习了:):)

brqtpt007 发表于 2012-3-17 09:30:28

学习了:lol

fandl 发表于 2012-3-18 20:33:22

本帖最后由 fandl 于 2012-3-18 20:39 编辑

PCC断线脚本,带注释
{
:local status
#local(本地变量)status
:local i "4"
#定义本地变量i=4
:local x "0"
#定义本地变量x=0
:local y "0"
#定义本地变量y=0
:local z "0"
#定义本地变量z=0
:set x [:len ]
#设置变量X为运行中的pppoe客户端数量。len:数组;find:查找
:if ($x<$i) do={
#如果变量x<变量i,执行
:for ii from=1 to=$i do={
#循环执行变量ii从1到变量i的值。
:set status running]
#设置变量ststus为pppoe-out1到变量ii,条件为运行。
:if ($status=true) do={
#如果成立,执行(执行到:set y ($y+1)})
/ip fir man set per-connection-classifier=("both-addresses:"."$x"."/"."$y") disable=no;:set y ($y+1)} else={
#修改PCC参数。在ip-firewall-mangle里设置:new-connection-mark=$ii;per-connection-classifier=("both-addresses:"."$x"."/"."$y") disable=no
#设置变量y为y+1。
#否则执行
/ip fir man set disable=yes}}}
#关闭在ip-firewall-mangle里new-connection-mark=$ii
:if ($x=$i) do={
#如果变量x等于变量i,执行
:set z [:len ]
#设置变量z为关闭的标记连接数量。
:if ($z>0) do={
#如果变量zd大于0,执行
:for ii from=1 to=$i do={
#循环执行变量ii从1到变量i的值。
/ip fir man set per-connection-classifier=("both-addresses:"."$i"."/"."$y") disable=no;:set y ($y+1)}}}}
#修改PCC参数。在ip-firewall-mangle里设置:new-connection-mark=$ii;per-connection-classifier=("both-addresses:"."$x"."/"."$y") disable=no
#设置变量y为y+1。

新手,自己注释,有错误的地方欢迎指出。

注意复制到网页自动换行了。

要自己修改为一行啊!

高手不是天生的,也是一点一点学习累积起来的。

fandl 发表于 2012-3-18 20:57:40

网银就测试了建设银行。

可以登陆。

hjfgt 发表于 2012-3-19 13:52:43

正想加多一条ADSL,到时试一下,感谢分享。

qinfei 发表于 2012-3-19 15:12:25

这个智能型属于,头次见到,支持下:lol

282615460 发表于 2012-3-19 17:04:53

                     谢谢分享

宽而有信 发表于 2012-3-21 22:05:50

感谢分享:(

chlsh 发表于 2012-3-25 02:48:57

感谢分享:handshake

hnnbmfr 发表于 2012-12-13 10:04:41

非常好用,谢谢

youge 发表于 2013-1-19 11:17:04

记号,需要的,正在研究ROS,小白水平。
页: [1]
查看完整版本: PCC负载均衡,多线合并成功,带断线自动修改。