歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

在Linux操作系統下配置多線路ADSL的方法

此文檔可以說明雙ADSL及多ADSL增加線路的配置過程。

  Linux配置多線路ADSL的方法

  powered by KindGeorge http://kindgeorge.at.3322.org\經過一段時間的觀察,證明運行良好,現把設置過程及方法總結一下,歡迎指正.

  此文檔可以說明雙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 server secret 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,是原來的加倍,以這種形式來加快上網速度,增加了並發連接的個數。

 

Copyright © Linux教程網 All Rights Reserved