Linux配置多線路ADSL的方法(轉)

post0發表於2007-08-09
linux配置多線路ADSL的方法(轉)[@more@]

此文件可以說明雙ADSL及多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 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,是原來的加倍,以這種形式來加快上網速度,增加了併發連線的個數.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-939268/,如需轉載,請註明出處,否則將追究法律責任。

相關文章