风一样的男孩 发表于 2008-10-16 08:18:06

ROS双ADSL相同网关加负载

1.设置PPPOELIENT 这个不用说了吧^_^ (注意:加的时候把 "Add Default Route"前面的勾勾掉,没勾掉的话去IP-ROUTE里把它删掉)
2.改PPPOE-OUT1和PPPOE-OUT2的名字:如改PPPOE-OUT1为WAN1 改PPPOE-OUT2为WAN2
改名字的脚本如下:
/int set name "你想要的名字1"
/int set name "你想要的名字2"
3.在IP-ADDRESS里加IP地址

假如你的PPPOE-OUT1获得的IP为IP1(去掉子网掩码),pppoe-out2获得的IP为IP2(去掉子网掩码)
/ip add add address=ip1 interface=pppoe-out1 disabled=no
/ip add add address=ip2 interface=pppoe-out2 disabled=no
自动加IP地址的脚本如下:
:local ip1 address]
:local ip2 address]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
/ip add add address=($ip1 . "/32") interface="你想要的名字1" comment= "你想要的名字1" disabled=no
/ip add add address=($ip2 . "/32") interface="你想要的名字2" comment= "你想要的名字2" disabled=no
4.标记连接和路由、IP伪装、路由表添加
(这里用的是ROS官方的方法:伪装和路由的添加都是源自ROS官方的做法。具体解释请上官方查阅:http://wiki.mikrotik.com/wiki/Improved_Load_Balancing_over_Multiple_Gateways)
       标记连接和路由
/ ip firewall mangle
add chain=prerouting in-interface="内网网卡" connection-state=new nth=1,1,0 \
    action=mark-connection new-connection-mark=odd passthrough=yes comment="" \
    disabled=no
add chain=prerouting in-interface="内网网卡" connection-mark=odd action=mark-routing \
    new-routing-mark=odd passthrough=no comment="" disabled=no
add chain=prerouting in-interface="内网网卡" connection-state=new nth=1,1,1 \
    action=mark-connection new-connection-mark=even passthrough=yes comment="" \
    disabled=no
add chain=prerouting in-interface="内网网卡" connection-mark=even action=mark-routing \
    new-routing-mark=even passthrough=no comment="" disabled=no
       IP伪装
:local ip1 address]
:local ip2 address]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
/ ip firewall nat
add chain=srcnat connection-mark=odd action=src-nat to-addresses=$ip1 \
    to-ports=0-65535 comment="" disabled=no
add chain=srcnat connection-mark=even action=src-nat to-addresses=$ip2 \
    to-ports=0-65535 comment="" disabled=no
      
      路由表添加
:local ip1 network]
:local ip2 network]
/ ip route
add dst-address=0.0.0.0/0 gateway=$ip1 scope=255 target-scope=10 routing-mark=odd \
    comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=$ip2 scope=255 target-scope=10 routing-mark=even \
    comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=$ip2 scope=255 target-scope=10 comment="你想要的名字2" \
    disabled=no   (这条也加标注的原因是为了后面的自动改网关脚本)
5.到这里内网的机器已经可以上网了。下面的就是控制IP改动的脚本
先说改IP-ADD里的脚本
:local ip1 address]
:local ip2 address]
:local ip3 network]
:local ip4 network]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
:if $ip1 != $ip3 do={/ip add set address ($ip1 . "/32") broa $ip1 network $ip1}
:if $ip2 != $ip4 do={/ip add set address ($ip2 . "/32") broa $ip1 network $ip1}
改IP伪装和路由表
:local ip1 address]
:local ip2 address]
:local ip3 to-addresses]
:local ip4 to-addresses]
:local ip5 gateway]
:local ip6 gateway]
:set ip1 [:pick $ip1 0 ([:len $ip1]-3)]
:set ip2 [:pick $ip2 0 ([:len $ip2]-3)]
:if $ip1 != $ip3 do={/ip fir nat set to-addresses $ip1}
:if $ip1 != $ip5 do={/ip route set gateway $ip1}
:if $ip2 != $ip4 do={/ip fir nat set to-addresses $ip2}
:if $ip2 != $ip6 do={/ip route set gateway $ip2}
添加任务
把上面的两个脚本添加到SYSTEM-SCRIPT里。命名为"change IP"和"change route"
/ system scheduler
add name="change ip" on-event="" start-date=jan/01/1970 \
    start-time=00:00:00 interval=2s comment="" disabled=no
add name="change route" on-event="" start-date=jan/01/1970 \
    start-time=00:00:00 interval=2s comment="" disabled=no
页: [1]
查看完整版本: ROS双ADSL相同网关加负载