| 第一步设置PPPOE拔号:(WAN1,WAN2)两个网卡添加pppoe client第一个命名为ADSL1 并且加上拔号的用户名和密码,第二条命名为ADSL2 同时加上拔号的用户名和密码,这里要注意把Add Default Route 去掉. 如图,就是填好ADSL账号和密码,如下图: 以下是用命令行配置ADSL帐号和密码的过程,相对来说比较易懂: #设置ADSL拔号 / interface pppoe-client add name="pppoe-out1" interface=wan1 user="ADSL账号" password="ADSL密码" add-default-route=no disabled=no / interface pppoe-client enable pppoe-out1 / interface pppoe-client add name="pppoe-out2" interface=wan2 user="ADSL账号" password="ADSL密码" add-default-route=no disabled=no / interface pppoe-client enable pppoe-out2 第二步标记连接和路由:配置MANGLE来实现为每个数据包做标记,并配置相应的路由信息,这里的路由信息指的就是“池”,然后在后面的路由表当中实现将“池”中的包分配到相应的线路当中。下图两个ADSL线路的配置过程: 以下是命令行下配置过程,详细解释第一条就是每隔一个包建立一个新的会话,并用“1”做标记,因此所有属于同一会话的连续的数据包将被放到标记为1的连接中,注意,我们将这些数据包传递给第二条和第三条规则(passthrough=yes)。第二条规则在prerouting链表将所有标记属于“1”的连接放入routing mark的“1”标记中,并将以上连接在此停止处理。而第二条规则当中则是每隔一个包建立一个新的会话,并用“1”做标记,其他相就都处理成以2为标记的连接和池中,就这样将所有包连续不断的处理并做标记为路由做好前期准备。 / ip firewall mangle add chain=prerouting in-interface=Local connection-state=new nth=1,1,0 \\ action=mark-connection new-connection-mark=1 passthrough=yes add chain=prerouting in-interface=Local connection-mark=1 action=mark-routing \\ new-routing-mark=1 passthrough=no / ip firewall mangle add chain=prerouting in-interface=Local connection-state=new nth=1,1,1 \\ action=mark-connection new-connection-mark=2 passthrough=yes add chain=prerouting in-interface=Local connection-mark=2 action=mark-routing \\ new-routing-mark=2 passthrough=no 第三步配置网关规则:因为是2条ADSL,所以要加2条规则,分别对应两个pppoe获得的地址,如果你们自己设就要先获得地址然后在这里设好规则,特点是address=network=broadcast,这样设置的目的是让ros能够根据这里所设的网关分别路由,并且在自动修改IP和网关的脚本当中还可以实现断线重连,所以在这里规则很重要,另外此步骤不能在命令行下实现。下图为例: 以下是以命令行模式配置网关规则: / ip address add address=192.168.1.1/24 network=192.168.1.0 broadcast=192.168.1.255 interface=lan1 add address=116.21.32.241/24 network=219.135.1.1 broadcast=0.0.0.0 interface= pppoe-out1 add address=121.32.177.37/24 network=219.135.1.1 broadcast=0.0.0.0 interface= pppoe-out2 第四步配置srcnat(ip伪装):这步的意思就是将已经做完标记的数据包进行IP头修改,这样可以保证返回的数据包每个数据包可以找到自己的线路,如果不做那就是只有出没有进了,因为包回来后找不到自己的路由了。 以下为命令行模式下的配置: / ip firewall nat add chain=srcnat connection-mark=1 action=src-nat to-addresses=116.21.32.241 \\ to-ports=0-65535 add chain=srcnat connection-mark=2 action=src-nat to-addresses=121.32.177.37 \\ to-ports=0-65535 第五步配置路由规则:经过前四步的详细配置完成后,现在就是要实现将“1”和“2”两个池中的数据包分别走不同的路线了,就是路由策略的意思,我们的策略是被标记为“1”的数据用116.21.32.241为网关,同样,被标记为“2”的数据从121.32.177.37这个网关出去,为了防止有些包没有打上标记,所以再加上一条没有标记的包从121.32.177.37这个网关出去,也就是说121.32.177.37为默认网关。配置完成后如下图: 以下为命令行模式下的配置: / ip route add dst-address=0.0.0.0/0 gateway=116.21.32.241 scope=255 target-scope=10 routing-mark=1 add dst-address=0.0.0.0/0 gateway=121.32.177.37 scope=255 target-scope=10 routing-mark=2 / ip route add dst-address=0.0.0.0/0 gateway=121.32.177.37 scope=255 target-scope=10 第六步填加防掉线脚步:脚本是ROS官方提供的,虽然短短几行代码,但具体是怎样的工作原理我也实在没弄通,不过好在脚本是通用的,将脚本设置成自动运行就可以了,以下是配置图: 至此,所有配置工作完成,由于ROS基础配置过程较多,所以在这里只针对ADSL配置和负载平衡进行了详细的介绍,由于实际当中配置多条ADSL多为重复过程,所以在这里只以两条线为例,如果配置多条ADSL来实现叠加网速,还要注意一些细节,可以说按照以上流程,再详细掌握了以下细节后就可以应用自如了。 按照以上标准流程,三条或者多条线路的负载均衡则需要修改第二步标记连接和路由中的参数,例如三条线就要加三个标记,而重要的是NTH参数,比如是三条线路则要在规则当中加入三条,分别将NTH值修改为: nth=2,3,0. 2,3,1. 2,3,2,如果是4条线那么规就要设置为4条,NTH的值为:nth=3,4,0. 3,4,1.3,4,2 3,4,3,至于为什么要这样设置具体NTH值的意义可以查阅相关资料。其他方面就是网关、IP伪装、路由规则等,都要按多条线的模式来设置,这样就可以完成多线均衡负载了,经过实测最多可以完成线均衡负载,网速可以达到12M以上。 看到这里,希望大家应该明白一点,ROS命令行模式在设置复杂的路由当中要比图形界面设置简单一些,尤其是在设置多条线路的时候,只需要修改相应命令值就可以了。另外以上配置如果细细钻研完全可以研制出自己的成品路由器,目前很多业内人士并不愿意贡献出详细的配置教程原因就在于此,这个配置方案可以真正实现多条ADSL线路同时工作,即使只有一个人在上网,所以也可以解决ADSL常掉线不适合网吧的问题,在此我将详细过程加以解释, |
2008-04-13 21:06
为什么要用负载呢, 因为你用ROUTER OS接两个网卡,拔号上网以后,同
时能用的就只有一条ADSL,即使两条都拔上了也是这样.所以为了不浪费资源,我们就要负
载来让两条ADSL同时工作,同时来代理上网....
先引用一个高手的话.
--------------------------------------------------------------------------
注:很多人问
1.动态的ADSL怎么办?
你仔细观察一下IP Routes 里面 动态ADSL重拨IP是变的 网关是不变的
你在interfaces里的ADSL拨号 把Add Default Route 去掉
然后在IP Routes里手动添加网关
2.ADSL网关都一样怎么办?
简单嘛...其中一个Moden开启路由功能就就不同网关了不?
---------------------------------------------------------------------------
首先说一下ADSL分流大部分都是根据IP分流,或者是根据端口分流,由于我网吧的IP段
比较乱,我就根据IP分流来带60台机子..端口分流的话如果你喜欢可以自己试用一下.
我的ADSL拔号后的情况...我拔号后,每次网关都会变,,网关就是那次拔号后的
子网掩码. 那么应该怎么做呢? 往下看就是了..
第一步: 安装好routeros(我用的是2.927) 装上三个网卡,一个内网的,二个的..
接好内网的网线,使你能访问路由...并且改好路由网卡的名称. 如图1
第二步: (WAN1,WAN2)两个网卡添加pppoe client第一个命名为ADSL1 并且加上拔号的
用户名和密码, 第二条命名为ADSL2 同时加上拔号的用户名和密码.这里要注意:
把Add Default Route 去掉. 如图 2, 3
第三步: 设置IP伪装 这个大家都会吧...如图4,5
第四步: 设置MARK标记 标记你要分流的IP范围如图6,7设置new routeing mark为ADSL1,ADSL2
第五步: 在IP-routers中添加路由标记,命名为link1,link2这里的MARK要和你上一步中设的一致
这里的gateway你可以随便填,因为下面会用脚本来更新这个路由. 如图8,9
第六步: 添加监控拔号状态的脚本,把拔号后得到的网关更新到上一步的路由表中...
总共要加两个脚本. ADSL1,ADSL2 如图10,11 (system--scripts)
第七步: 添加一个计划任务,每隔10(或者是20)秒运行一下上面的ADSL1,ADSL2脚本.
如图12,13 这里更改时间的话,就是interval后面改就行了,注意看图就OK了.
(system--scheduler这个和XP中计划任务服务的名称是一样的.)
下面是我的两条ADSL的真实流量图!
下面再附上两条ADSL监控的脚本。大家直接复制就好了。如果你想自己熟悉一下内容
我还是建议你自己手动写下来。
ADSL1 的脚本
/interface pppoe-c monitor ADSL1 once do={:global pppzt $status}
:if ($pppzt=connected) do={/ip route set link1 gateway [/ip add get [/ip add find interface=ADSL1] network]} else={/ip route set link1 gateway [/ip add get [/ip add find interface=ADSL2] network]}
| ADSL2 的脚本 /interface pppoe-c monitor ADSL2 once do={:global pppzt2 $status} :if ($pppzt2=connected) do={/ip route set link2 gateway [/ip add get [/ip add find interface=ADSL2] network]} else={/ip route set link2 gateway [/ip add get [/ip add find interface=ADSL1] network]} |
我还是建议你自己手动写下来。
ADSL1 的脚本
/interface pppoe-c monitor ADSL1 once do={:global pppzt $status}
:if ($pppzt=connected) do={/ip route set link1 gateway [/ip add get [/ip add find interface=ADSL1] network]} else={/ip route set link1 gateway [/ip add get [/ip add find interface=ADSL2] network]}
ADSL2 的脚本
/interface pppoe-c monitor ADSL2 once do={:global pppzt2 $status}
:if ($pppzt2=connected) do={/ip route set link2 gateway [/ip add get [/ip add find interface=ADSL2] network]} else={/ip route set link2 gateway [/ip add get [/ip add find interface=ADSL1] network]}下载本文