zoukankan      html  css  js  c++  java
  • 在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,是原来的加倍,以这种形式来加快上网速度,增加了并发连接的个数。

  • 相关阅读:
    String
    【CLR】奇妙的String
    【Siverlight
    【WPF】ContentControl Style定义与使用出现问题后 -- 引发的思考
    WPF 简介
    《Java从入门到失业》第一章:计算机基础知识(1.1):二进制和十六进制
    《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类
    《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承
    《Java从入门到失业》第四章:类和对象(4.6):类路径
    《Java从入门到失业》第四章:类和对象(4.5):包
  • 原文地址:https://www.cnblogs.com/wayde-Z/p/6249439.html
Copyright © 2011-2022 走看看