经过一段时间的观察,证明运行良好,现把设置过程及方法总结一下,欢迎指正。此文档可以说明双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,是原来的加倍,以这种形式来加快上网速度,增加了并发连接的个数。

在Linux下配置多线路ADSL的方法的更多相关文章

  1. Linux下配置Java环境方法

    本文详细介绍Linux系统下配置Java环境的方法,使用JDK1.8版本. 1. 从Oracle官网上下载Java8版本. 下载链接:https://www.oracle.com/technetwor ...

  2. Linux下Git和GitHub使用方法总结

    来源:Linux下Git和GitHub使用方法总结 1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 到G ...

  3. Linux下配置Tomcat服务器

    Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...

  4. Linux下配置JDK

    下面以CentOS为例,详细说一下Linux下配置JDK的过程 首先按照约定俗成的习惯,将jdk放在/usr/local/java下,首先进入/usr/local然后新建一个目录java 然后我们需要 ...

  5. Linux安装配置php环境的方法

    本文实例讲述了Linux安装配置php环境的方法.分享给大家供大家参考,具体如下: 1.获取安装文件: http://www.php.net/downloads.php php-5.3.8.tar.g ...

  6. Linux下配置Node环境变量及问题详解

    这是之前在Linux下配置Node环境变量时踩过的坑,今天又有小伙伴询问这个问题,因此记录下来,不仅是给新童鞋们一些参考,也方便日后查阅 在这之前,相信都已经安装好了,没安装的可以查看博主另一篇文章 ...

  7. linux下配置tomcat集群的负载均衡

    linux下配置tomcat集群的负载均衡 一.首先了解下与集群相关的几个概念集群:集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台.在客户端看来,一个集群就象是一个服 ...

  8. Linux下配置两个或多个Tomcat启动

    Linux下配置两个或多个Tomcat启动 (2012-08-14 11:59:31) 转载▼ 标签: 杂谈 分类: linux_tomcat 步骤如下: (1)修改/etc/profile文件.添加 ...

  9. 【转载】linux下的usb抓包方法

    1 linux下的usb抓包方法 1.配置内核使能usb monitor: make menuconfig                   Device Drivers -->        ...

随机推荐

  1. 传统瀑布式&敏捷开发

    ---传统瀑布式 瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求.分析.设计.编码.测试的步骤顺序进行. 步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等. 瀑布式 ...

  2. MongoDB【第三篇】MongoDB基本操作

    MongoDB的基本操作包括文档的创建.删除.和更新 文档插入 1.插入 #查看当前都有哪些数据库 > show dbs; local 0.000GB tim 0.000GB #使用 tim数据 ...

  3. Mybatis学习总结(一)——入门基础

    一.Mybatis介绍 1.MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了go ...

  4. chrome谷歌浏览器插件制作简易教程

    1.在磁盘上创建一个目录,用来放应用的代码和资源 2.在这个目录中,创建一个文本文件,命名为manifest.json,其内容为: { "manifest_version": 2, ...

  5. 现代软件工程作业-- GitHub的学习

    1.注册github账号: 2.在github上面新建一个名为HelloWord的项目: 3.将本组的其他成员纳入到HelloWorld中: 4.复制远端仓库的地址: 5.在本地的git bash中使 ...

  6. 面向对象编程(OOP)

    什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编 ...

  7. 判断字符串是否相等 isEqualToString:

    // if((btn.currentTitle == answerBtn.currentTitle) && btn.hidden == YES) // 字符串相等比较 不要直接比,这样 ...

  8. 【转】FlashBack总结之闪回查询与闪回表

    本文主要介绍利用UNDO表空间的闪回技术,主要包括:闪回表,闪回版本查询,闪回事务查询,闪回查询.这些闪回技术实现从回滚段中读取表中一定时间内操作过的数据,可用来进行数据比对,或者修正意外提交造成的错 ...

  9. android App使用新浪微博sdk的使用总结

    问题1:注册app的key 问题2:在微博开放平台,我的应用中心中,设置应用的基本信息的时候其中有一项,是设置你的应用的签名,签名是需要在安卓设备上安装一个生成签名的app(这个app界面很丑,这点我 ...

  10. java从基础知识(十)java多线程(上)

    线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点 ...