jackycao 发表于 2008-11-10 16:11:38

ADSL三线同网关NTH分流+断线自动切换脚本

/ ip firewall mangle
add chain=prerouting in-interface="lan" connection-state=new nth=2,1,0 \
    action=mark-connection new-connection-mark=wan1_Routing_Mark passthrough=yes comment="" \
    disabled=no
add chain=prerouting in-interface="lan" connection-mark=wan1_Routing_Mark action=mark-routing \
    new-routing-mark=wan1_Routing_Mark passthrough=no comment="" disabled=no

add chain=prerouting in-interface="lan" connection-state=new nth=2,1,1 \
    action=mark-connection new-connection-mark=wan2_Routing_Mark passthrough=yes comment="" \
    disabled=no
add chain=prerouting in-interface="lan" connection-mark=wan2_Routing_Mark action=mark-routing \
    new-routing-mark=wan2_Routing_Mark passthrough=no comment="" disabled=no

add chain=prerouting in-interface="lan" connection-state=new nth=2,1,2 \
    action=mark-connection new-connection-mark=wan3_Routing_Mark passthrough=yes comment="" \
    disabled=no
add chain=prerouting in-interface="lan" connection-mark=wan3_Routing_Mark action=mark-routing \
    new-routing-mark=wan3_Routing_Mark passthrough=no comment="" disabled=no

关键NTH的设置,可以在论坛中搜索关键字“NTH”

根据我的理解,多线的设置如下:
如果有2条线路,那么NTH取值就是1,1,0/1,1,1
如果有4条线路,那么NTH取值就是3,1,0/3,1,1/3,1,2/3,1,3
如果有5条线路,那么NTH取值就是4,1,0/4,1,1/4,1,2/4,1,3/4,1,4

设置结果见附件

[ 本帖最后由 jackycao 于 2008-11-10 16:34 编辑 ]

jackycao 发表于 2008-11-10 16:19:06

三线路由脚本

:local ip1 address]
:local ip2 address]
:local ip3 address]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
:set ip3 [:pick $ip3 0 ([:len $ip3]-3)]
/ip add add address=($ip1 . "/32") interface="pppoe-out1" comment= "wan1" disabled=no
/ip add add address=($ip2 . "/32") interface="pppoe-out2" comment= "wan2" disabled=no
/ip add add address=($ip3 . "/32") interface="pppoe-out3" comment= "wan3" disabled=no
/ ip firewall nat
add chain=srcnat connection-mark=wan1_Routing_Mark action=src-nat to-addresses=$ip1 \
    to-ports=0-65535 comment="wan1" disabled=no
add chain=srcnat connection-mark=wan2_Routing_Mark action=src-nat to-addresses=$ip2 \
    to-ports=0-65535 comment="wan2" disabled=no
add chain=srcnat connection-mark=wan3_Routing_Mark action=src-nat to-addresses=$ip3 \
    to-ports=0-65535 comment="wan3" disabled=no
/ ip route
add dst-address=0.0.0.0/0 gateway=$ip1 scope=255 target-scope=10 routing-mark=wan1_Routing_Mark \
    comment="wan1" disabled=no
add dst-address=0.0.0.0/0 gateway=$ip2 scope=255 target-scope=10 routing-mark=wan2_Routing_Mark \
    comment="wan2" disabled=no
add dst-address=0.0.0.0/0 gateway=$ip3 scope=255 target-scope=10 routing-mark=wan3_Routing_Mark \
    comment="wan3" disabled=no

我的拨号线路名称是pppoe-out*,标记是wan*

jackycao 发表于 2008-11-10 16:21:42

自动切换脚本

:local ip1 address]
:local ip2 address]
:local ip3 address]
:local ip4 network]
:local ip5 network]
:local ip6 network]
:local ip7 to-addresses]
:local ip8 to-addresses]
:local ip9 to-addresses]
:local ip10 gateway]
:local ip11 gateway]
:local ip12 gateway]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
:set ip3 [:pick $ip3 0 ([:len $ip3]-3)]
:if ($ip1 != $ip4) do={/ip add set address ($ip1 . "/32") broa $ip1 network $ip1}
:if ($ip1 != $ip7) do={/ip fir nat set to-addresses $ip1}
:if ($ip1 != $ip10) do={/ip route set gateway $ip1}
:if ($ip2 != $ip5) do={/ip add set address ($ip2 . "/32") broa $ip2 network $ip2}
:if ($ip2 != $ip8) do={/ip fir nat set to-addresses $ip2}
:if ($ip2 != $ip11) do={/ip route set gateway $ip2}
:if ($ip3 != $ip6) do={/ip add set address ($ip3 . "/32") broa $ip3 network $ip3}
:if ($ip3 != $ip9) do={/ip fir nat set to-addresses $ip3}
:if ($ip3 != $ip12) do={/ip route set gateway $ip3}


自动切换脚本

从各个地方取值,然后做比较,如果不同就更新旧的ip地址。

jackycao 发表于 2008-11-10 16:24:50

启动运行脚本

:delay 10
/ip address remove wan1
/ip address remove wan2
/ip address remove wan3
/ip firewall nat remove wan1
/ip firewall nat remove wan2
/ip firewall nat remove wan3
/ip route remove wan1
/ip route remove wan2
/ip route remove wan3
:local ip1 address]
:local ip2 address]
:local ip3 address]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
:set ip3 [:pick $ip3 0 ([:len $ip3]-3)]
/ip add add address=($ip1 . "/32") interface="pppoe-out1" comment= "wan1" disabled=no
/ip add add address=($ip2 . "/32") interface="pppoe-out2" comment= "wan2" disabled=no
/ip add add address=($ip3 . "/32") interface="pppoe-out3" comment= "wan3" disabled=no
/ ip firewall nat
add chain=srcnat connection-mark=wan1_Routing_Mark action=src-nat to-addresses=$ip1 \
    to-ports=0-65535 comment="wan1" disabled=no
add chain=srcnat connection-mark=wan2_Routing_Mark action=src-nat to-addresses=$ip2 \
    to-ports=0-65535 comment="wan2" disabled=no
add chain=srcnat connection-mark=wan3_Routing_Mark action=src-nat to-addresses=$ip3 \
    to-ports=0-65535 comment="wan3" disabled=no
/ ip route
add dst-address=0.0.0.0/0 gateway=$ip1 scope=255 target-scope=10 routing-mark=wan1_Routing_Mark \
    comment="wan1" disabled=no
add dst-address=0.0.0.0/0 gateway=$ip2 scope=255 target-scope=10 routing-mark=wan2_Routing_Mark \
    comment="wan2" disabled=no
add dst-address=0.0.0.0/0 gateway=$ip3 scope=255 target-scope=10 routing-mark=wan3_Routing_Mark \
    comment="wan3" disabled=no

延迟10秒钟,等待adsl拨号成功,删除原先的配置,重新应用新的配置。

jackycao 发表于 2008-11-10 16:28:43

自动执行

启动运行设置成startup的话显示的时间是06:28:15

另一个ip切换的脚本每2秒钟执行一次,让它循环就行了

jackycao 发表于 2008-11-10 16:32:13

具体做法参考了很多论坛上的帖子 ,不一一注明了,现在还剩下的问题就是网银的使用,搜索了一下是标记443端口的连接,具体做法还要再研究。

jackycao 发表于 2008-11-10 16:46:44

设置自动运行,命令行如下

system scheduler> set 要自动运行的脚本名称start-time=startup


结果如图,在winbox里显示的时间是06:28:15

wbyz20 发表于 2008-11-10 16:49:14

好东西...支持下.

dhp 发表于 2008-11-14 18:59:45

好样的,这样完整共享出来的不多哦

dhp 发表于 2008-11-14 19:07:17

有一条掉线了怎么办?楼主这个没有考虑进去哦!!1

jackycao 发表于 2008-11-15 07:15:41

原帖由 dhp 于 2008-11-14 19:07 发表 http://bbs.routerclub.com/images/common/back.gif
有一条掉线了怎么办?楼主这个没有考虑进去哦!!1


恩,断线重拨换ip的问题考虑到了,如果一条线路坏掉这个没有做,思路是再做个双线的规则,如果某条pppoe线路拨不上去则自动禁用所有三线脚本,应用双线的脚本。

不过我们这里电信还是蛮稳定的,很少出现这种问题。

漫天 发表于 2009-1-2 22:02:38

这么好的东西没有人顶?我顶

crack_ros 发表于 2009-1-3 18:12:35

整天卖弄这些老东西

3。X 上面已经不能这样做了

jackycao 发表于 2009-1-7 07:42:54

整天卖弄这些老东西

3。X 上面已经不能这样做了
crack_ros 发表于 2009-1-3 18:12 http://bbs.routerclub.com/images/common/back.gif

卖弄个p啊,自己做好了发个心得,爱看就看,又没人逼你看。

sophoie 发表于 2009-7-7 08:48:41

支持楼主
整天卖弄这些老东西

3。X 上面已经不能这样做了
crack_ros 发表于 2009-1-3 18:12
这个傻B,自己整不来就算,你来这里乱说一通,就算你懂再多起什么作用,憋死你!
页: [1] 2
查看完整版本: ADSL三线同网关NTH分流+断线自动切换脚本