• 在Linux下配置多线路ADSL的方法


    经过一段时间的观察,证明运行良好,现把设置过程及方法总结一下,欢迎指正。此文档可以说明双ADSL及多ADSL增加线路的配置过程。 

      实验环境:  

      操作系统: RedHat7.3  

      两条ADSL,长期观察线路稳定,动态ip,带宽2M, 

      三块网卡: eth0 tulip,接内网  

      eth1 3c59x,接第一条ADSL 

      eth2 8139too,接第二条ADSL

      ethn xxxx,(如果还有的话....)  

      最终目的:

      用两条ADSL共同上网,分担负载,实现一般的简单负载平衡,带动内网上网。

      配置过程: 

      1、添加网卡 

      插入网卡,启动机器,如果需要双线路上网,就要三块网卡了,配置网卡也可以参考其他资料。

      配置为找到相应的型号模块,例如:eth2是8139的网卡  

      [root@kindgeorge root]# vi /etc/modules.conf

      alias parport_lowlevel parport_pc

      alias eth0 tulip

      alias eth1 3c59x

      alias eth2 8139too

      把新的线路插在eth2上 

      2、配置ADSL 

      方法一: 

      (1)运行adsl-setup程序,会一步一步的提示你完成配置过程.

      创建ppp0和ppp1的拨号配置文件,并保存配置,一般保存在/etc/sysconfig/network-scripts/ifcfg-ppp1 

      (2)确定/etc/sysconfig/network-scripts/ifcfg-ppp0文件,其中的PIDFILE参数设为:  

      PIDFILE=/var/run/ppp-adsl.pid  

      修改/etc/sysconfig/network-scripts/ifcfg-ppp1文件,将其中的PIDFILE参数设为:  

      PIDFILE=/var/run/ppp-adsl1.pid  

      如果你有更多的线路,可以继续增加0,1,2,3....等  

      这是为了使不同的拨好用不同的pid,如果不修改此参数将无法启动第二条线路接口。 

      (3)配置文件一般是: 

      USERCTL=no

      BOOTPROTO=dialup

      NAME=DSLppp1

      DEVICE=ppp1

      TYPE=xDSL

      ONBOOT=yes

      PIDFILE=/var/run/pppoe-adsl1.pid

      FIREWALL=NONE

      PING=.

      PPPOE_TIMEOUT=20

      LCP_FAILURE=3

      LCP_INTERVAL=20

      CLAMPMSS=1412

      CONNECT_POLL=6

      CONNECT_TIMEOUT=60

      DEFROUTE=yes

      SYNCHRONOUS=no

      ETH=eth2 (对应新线路的网卡)

      PROVIDER=DSLppp1

      USER=isp提供的新用户名字2

      PEERDNS=no

      方法二:

      (1)直接拷贝

      cp /etc/sysconfig/network-scripts/ifcfg-ppp0 /etc/sysconfig/network-scripts/ifcfg-ppp1

      (2)修改其中的ppp0为ppp1,

      修改PIDFILE=/var/run/pppoe-adsl.pid 为PIDFILE=/var/run/pppoe-adsl1.pid

      修改采用的新接线路的网卡,例如:改ETH=eth1 为ETH=eth2

      (3)增加新线路的帐号和密码. 帐号密码一般是保存在/etc/ppp/chap-secrets 和pap-secrets

      我们只需要在最后增加新的用户名2和密码2即可.

      /etc/ppp/chap-secrets文件一般是这样的:

      # Secrets for authentication using CHAP

      # client serversecret IP addresses

      "用户名1" * "密码1"

      "用户名2" * "密码2"

      "用户名n" * "密码n"

      3、启动ppp接口

      因为adsl-start 命令缺省只能启动第一的ppp接口。所以要启动两个接口,必须指定配置文件。

      可以用:方法一:

      ifup ppp0

      ifup ppp1

      (ifup pppn...)

      或方法二:

      adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp0

      adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp1

      (adsl-start /etc/sysconfig/network-scripts/ifcfg-pppn)

      4、查看新设置是否启动:

      方法一:

      执行: ifconfig

      出现ppp0 和ppp1 ,并且均得到ip了.说明成功了,结果象这样:

      ppp0 Link encap:Point-to-Point Protocol

      inet addr:218.114.37.137 P-t-P:61.142.110.30 Mask:255.255.255.255

      UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1

      RX packets:165721 errors:0 dropped:0 overruns:0 frame:0

      TX packets:123673 errors:0 dropped:0 overruns:0 carrier:0

      collisions:0 txqueuelen:3

      RX bytes:157324193 (150.0 Mb) TX bytes:14068892 (13.4 Mb)

      ppp1 Link encap:Point-to-Point Protocol

      inet addr:218.114.35.62 P-t-P:61.142.110.30 Mask:255.255.255.255

      UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1

      RX packets:560055 errors:0 dropped:0 overruns:0 frame:0

      TX packets:439711 errors:0 dropped:0 overruns:0 carrier:0

      collisions:0 txqueuelen:3

      RX bytes:530025378 (505.4 Mb) TX bytes:80895162 (77.1 Mb)

      方法二:

      执行ip高级命令: ip link ls

      也可以检验ppp0和ppp1,结果象这样:

      1: lo: mtu 16436 qdisc noqueue

      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

      2: eth0: mtu 1500 qdisc pfifo_fast qlen 100

      link/ether 00:50:bf:07:4e:32 brd ff:ff:ff:ff:ff:ff

      3: eth1: mtu 1500 qdisc pfifo_fast qlen 100

      link/ether 00:01:02:9a:31:b9 brd ff:ff:ff:ff:ff:ff

      4: eth2: mtu 1500 qdisc pfifo_fast qlen 100

      link/ether 00:e0:4c:79:44:71 brd ff:ff:ff:ff:ff:ff

      268: ppp1: mtu 1492 qdisc pfifo_fast qlen 3

      link/ppp

      273: ppp0: mtu 1492 qdisc cbq qlen 3

      link/ppp

      方法三:

      用命令测试反应

      ping -I ppp0 202.96.134.133 (测试ppp0的线路状况)

      ping -I ppp1 202.96.134.133 (测试ppp1的线路状况)

      ping -I ppp2 ......n (如果还有多条的话)

      5、如果单单是要实现链路负载平衡,让ppp0和ppp1分担负载,那么我们象以下设置一下配置:

      (1)启动路由,允许转发echo 1 >/proc/sys/net/ipv4/ip_forward

      (2)进行伪装:

      iptables -A POSTROUTING -t nat-s 192.168.1.0/24 -o ppp0 -j MASQUERADE

      iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp1 -j MASQUERADE

      iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o pppn -j MASQUERADE (如果还有多条的话)

      (3)修改网关

      ip route replace default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1

      说明: 用replace的原因是当原来没有网关时会增加这个网关,当已经存在网关时,会修改原来的网关.

      用add 也可以,但是当已经存在默认网关时就要先delete再add.

      两个weight 1的意思是这两条链路的权值是相等的,两条链路承担的网络流量是相等的。

      有一点是需要说明的,因为路由表是基于缓存的,所以在实际中两条链路并不能100%的平分流量

      nexthop NEXTHOP 设置多路径路由的下一跳地址。NEXTHOP比较复杂,它的语法和以下高层参数类似:

      via ADDRESS--表示下一跳路由器;

      dev NAME--表示输出设备;

      weight NUMBER--在多路由路径中,这个元素的权重。表示相对带宽或者服务质量。

      如果你有多条线路,那么继续在其中增加 nexthop dev ppp2(ppp3......)即可

      (4) 刷新路由

      ip route flush cache

      6、即时检查数据的方向

      用tcpdump 分别监察两条线路,用下面命令:

      tcpdump -i ppp0

      tcpdump -i ppp1

      tcpdump -i ppp2......n (有多条的话)

      7、为了每次启动时自动启动,把命令写在启动脚本里面,在 /etc/rc.local 后面增加:

      ifup ppp0

      ifup ppp1

      echo 1 >/proc/sys/net/ipv4/ip_forward

      iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

      iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o ppp1 -j MASQUERADE

      ip route replace default scope global nexthop dev ppp0 weight 1 nexthop dev ppp1 weight 1

      ip route flush cache

      结果:运行数月,效果稳定良好。

      上网会明显加快,为何呢,因为两条线路分摊了负载。例如,内网80人同时上网,如果网络是一条2M的ADSL,那么整条线路都拥挤,挤得死死的,每人分得的带宽可能只有30k。大家都会明显感觉上网很慢。

      如果增加多一条线路,那么两条2M共同分摊拥挤程度,这样可能每人分得的带宽就会变成60K,是原来的加倍,以这种形式来加快上网速度,增加了并发连接的个数。

  • 相关阅读:
    Candy leetcode java
    Trapping Rain Water leetcode java
    Best Time to Buy and Sell Stock III leetcode java
    Best Time to Buy and Sell Stock II leetcode java
    Best Time to Buy and Sell Stock leetcode java
    Maximum Subarray leetcode java
    Word Break II leetcode java
    Word Break leetcode java
    Anagrams leetcode java
    Clone Graph leetcode java(DFS and BFS 基础)
  • 原文地址:https://www.cnblogs.com/wayde-Z/p/6249439.html
Copyright © 2020-2023  润新知