作者 主題: [Help] Client端與多個PPPoE連線  (閱讀 8900 次)

0 會員 與 1 訪客 正在閱讀本文。

路人甲

  • 可愛的小學生
  • *
  • 文章數: 27
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 於: 2003-12-27 00:59 »
Dear All~

HINET撥接ADSL提供多個浮動IP,心血來潮
但是成功的取得PPPoE連線,卻無法使用,在此想請教各位


[root@lab1 sysconfig]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:22:8C:AB:D2
          inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18582629 errors:368 dropped:0 overruns:0 frame:0
          TX packets:17049260 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:2526097461 (2409.0 Mb)  TX bytes:2233473978 (2130.0 Mb)
          Interrupt:10 Base address:0x8000

eth1      Link encap:Ethernet  HWaddr 00:50:BA:04:34:BF
          inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6414326 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8954850 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:1264687851 (1206.1 Mb)  TX bytes:1446380177 (1379.3 Mb)
          Interrupt:9 Base address:0x6600

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12085 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12085 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1315619 (1.2 Mb)  TX bytes:1315619 (1.2 Mb)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:61.223.91.204  P-t-P:61.231.217.254  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:316716 errors:0 dropped:0 overruns:0 frame:0
          TX packets:341607 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:47779191 (45.5 Mb)  TX bytes:28898321 (27.5 Mb)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:61.223.121.192  P-t-P:61.231.217.254  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:355 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:27444 (26.8 Kb)  TX bytes:30 (30.0 b)

[root@lab1 sysconfig]# cat network
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=lab1.no-ip.org
DOMAINNAME=no-ip.org
GATEWAYDEV=ppp0
(這行怎麼辦?)

[root@lab1 sysconfig]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
61.231.217.254  0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
61.231.217.254  0.0.0.0         255.255.255.255 UH    0      0        0 ppp1
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         61.231.217.254  0.0.0.0         UG    0      0        0 ppp0

從別台traceroute 回來 --> ppp1
[root@dns /etc/mail]# traceroute 61.223.121.192
traceroute to 61.223.121.192 (61.223.121.192), 30 hops max, 38 byte packets
 1  61-218-32-254.HINET-IP.hinet.net (61.218.32.254)  51.891 ms  42.874 ms  43.591 ms
 2  tp-s2-c6r6.router.hinet.net (168.95.81.194)  43.095 ms  39.550 ms  40.122 ms
 3  211.22.34.121 (211.22.34.121)  40.362 ms  41.685 ms  40.640 ms
 4  h1.s82.ts.hinet.net (168.95.82.1)  45.078 ms  42.493 ms  44.582 ms
 5  * * *
 6  * * *

從別台traceroute 回來 --> ppp0
[root@dns /etc/mail]# traceroute 61.223.91.204
traceroute to 61.223.91.204 (61.223.91.204), 30 hops max, 38 byte packets
 1  61-218-32-254.HINET-IP.hinet.net (61.218.32.254)  51.691 ms  44.396 ms  43.705 ms
 2  tp-s2-c6r6.router.hinet.net (168.95.81.194)  41.510 ms  145.944 ms  49.748 ms
 3  211.22.34.121 (211.22.34.121)  39.658 ms  82.124 ms  42.809 ms
 4  h1.s82.ts.hinet.net (168.95.82.1)  48.573 ms  45.682 ms  45.307 ms
 5  61-223-91-204.HINET-IP.hinet.net (61.223.91.204)  108.889 ms  128.748 ms  119.720 ms

自己可以PING到ppp1
[root@lab1 sysconfig]# ping 61.223.121.192
PING 61.223.121.192 (61.223.121.192) from 61.223.121.192 : 56(84) bytes of data.
64 bytes from 61.223.121.192: icmp_seq=1 ttl=64 time=0.291 ms
64 bytes from 61.223.121.192: icmp_seq=2 ttl=64 time=0.217 ms

--- 61.223.121.192 ping statistics ---
2 packets transmitted, 2 received, 0% loss, time 1007ms
rtt min/avg/max/mdev = 0.217/0.254/0.291/0.037 ms


ppp0 是之前就用了,可以ping出去也可ping進來
但ppp1 就不行了,而ppp0與ppp1的gateway是ISP同一台ADSL的設備
這樣子ROUTING要怎麼設定?

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #1 於: 2003-12-27 03:19 »
這與 IPS 給什麼無關

您試試:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
到這裡 , 應該知道為何只有一個有回應的原因了吧...?
..... 沒錯 , 是在討論本機向外連

路人甲

  • 可愛的小學生
  • *
  • 文章數: 27
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #2 於: 2003-12-27 12:17 »
你的方法我照著做了,可是還是不行
現在問題是,從外面PING PPP1的IP無法回應,而ppp0可以
ping是一去一回,所以封包不是到不了SERVER,就是從SERVER回不去
因該跟NAT到後方的PC沒關係,因為連PING到SERVER就不回應了
因該是路由吧
[root@lab1 sysconfig]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
61.231.217.254 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
61.231.217.254 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 61.231.217.254 0.0.0.0 UG 0 0 0 ppp0

做了以下調整,還是一樣,從外ping ppp1就不行,ping ppp0可以
[root@lab1 scripts]# route add -net 61.223.121.192 netmask 255.255.255.255 gw 61.231.217.254 dev ppp1
[root@lab1 scripts]# route del -net 61.231.217.254 netmask 255.255.255.255 dev ppp0
[root@lab1 scripts]# route del -net 61.231.217.254 netmask 255.255.255.255 dev ppp1
[root@lab1 scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
61.223.121.192  61.231.217.254  255.255.255.255 UGH   0      0        0 ppp1
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         61.231.217.254  0.0.0.0         UG    0      0        0 ppp0

要怎樣設呢@_@

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #3 於: 2003-12-27 18:21 »
抱歉 , 小弟忘了另一個關鍵...
搜尋一下 : 頻寬合併 (英文關鍵字忘了) , 或 cbq

關鍵是 .. 當從 ppp0 進來時 , 回應時的 source ip 得是 ppp0 的
反之 ..... 當從 ppp1 進來時 , 回應時的 source ip 得是 ppp1 的

另一個關鍵是 .. 一台主機只有一個 default gateway , 所以如您的 .. 永遠從 ppp0 出去

其實利用 iptables 還有一個方法不需頻寬合併喔...
只需要一個 "多餘設定" + 兩行 iptables ..... 理論上應該形得通 (雖然這點沒實做過)
    (多個假介面)  (何時有佇列產生) ... 這些觀念之前都討論過喔 ... 您找找吧

(抱歉 .. 小弟急著出門 ... ^^)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17430
    • 檢視個人資料
    • http://www.study-area.org
[Help] Client端與多個PPPoE連線
« 回覆 #4 於: 2003-12-28 01:48 »
嗯,或許先看看:
http://www.study-area.org/tips/iproute.htm

然後再用"進階路由"或"Advanced Routing"去問 google ...
因為是"進階",很難三言兩語說得清,所以就請你自己去找資料了。
若成功,別忘了回來分享心得哦﹗

路人甲

  • 可愛的小學生
  • *
  • 文章數: 27
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #5 於: 2003-12-28 13:14 »
謝謝 各位學長們,有了方向就比較好去找資料
我會加油的 :P

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17430
    • 檢視個人資料
    • http://www.study-area.org

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #7 於: 2003-12-28 20:39 »
頻寬合併是 ECMP , 不是 cbq ........... 打死小弟吧 (糟糕.. 最近越來越糊塗了)

而有一篇討論後讓小弟明白 : 當 PREROUTING 建立連線後 , 將如佇列般等待處理此類封包

所以 "應該可以" :
隨便一個虛擬網路介面 (如 lo:0) 綁上 10.10.10.10
然後 iptables 設定
iptables -t nat -A PREROUTING -i ppp0 -j DNAT --to-destination 10.10.10.10
iptables -t nat -A PREROUTING -i ppp1 -j DNAT --to-destination 10.10.10.10

不知路人甲學長可否幫忙測試看看 ... 因小弟這只是 "理論..應該" 的說法 , 並沒有機會測試


ps : lo:x 介面的特性.. mask 為 255.255.255.0 的話 , 10.10.10.0 段都是 lo:x

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17430
    • 檢視個人資料
    • http://www.study-area.org
[Help] Client端與多個PPPoE連線
« 回覆 #8 於: 2003-12-28 22:34 »
不對... DNAT 會改變 destination socket ...
那封包就送錯地方了....

封包走哪一站,是 routing 決定的...

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #9 於: 2003-12-29 16:19 »
引述: "netman"
不對... DNAT 會改變 destination socket ...
那封包就送錯地方了....

封包走哪一站,是 routing 決定的...


小弟的想法是 .. 如果可以利用 prerouting 改變 DNAT 來記憶 , 那回去時的封包
不是應該會自動置換嗎...?

ppp0 : 211.74.50.1
ppp1 : 211.74.50.2      當用遠端 61.59.99.99 ping 時

當要 ping ppp1 時
__________________     ________________
|source     des |    | source     des |
| 99      50.2 | ==> | 99   10.10.10.10 |
|_________________|    |________________ |

再送往 routing 發現 10.10.10.10 則是本機 , .....
當本機回應時 , 應該是
__________________
|source     des |
|10.10.10.10   99 |
|_________________|

而 iptables 應該認得 , 而將他置換成 :
__________________
|source     des |
| 50.2      99 |
|_________________|

這想法 , 是將內部 ip mapping 主機 , 也掛在本機上
不知道這樣的想法是否可能呢...?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17430
    • 檢視個人資料
    • http://www.study-area.org
[Help] Client端與多個PPPoE連線
« 回覆 #10 於: 2003-12-29 16:30 »
引述: "dark"
小弟的想法是 .. 如果可以利用 prerouting 改變 DNAT 來記憶 , 那回去時的封包
不是應該會自動置換嗎...?

若是回應封包,也不會再看 DNAT 了吧?因為那是已存在的  record ...
但你如何照顧到從裡面連出去的封包呢?

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
[Help] Client端與多個PPPoE連線
« 回覆 #11 於: 2003-12-29 22:42 »
要做ECMP的話,有個首要條件,2個Device的網段不可相同(小弟的經驗)

vicent

  • 懷疑的國中生
  • **
  • 文章數: 33
    • 檢視個人資料
Re: [Help] Client端與多個PPPoE連線
« 回覆 #12 於: 2004-01-02 14:46 »
引述: "路人甲"

從別台traceroute 回來 --> ppp1
[root@dns /etc/mail]# traceroute 61.223.121.192
traceroute to 61.223.121.192 (61.223.121.192), 30 hops max, 38 byte packets
 1  61-218-32-254.HINET-IP.hinet.net (61.218.32.254)  51.891 ms  42.874 ms  43.591 ms
 2  tp-s2-c6r6.router.hinet.net (168.95.81.194)  43.095 ms  39.550 ms  40.122 ms
 3  211.22.34.121 (211.22.34.121)  40.362 ms  41.685 ms  40.640 ms
 4  h1.s82.ts.hinet.net (168.95.82.1)  45.078 ms  42.493 ms  44.582 ms
 5  * * *
 6  * * *



您已經測試成功了嗎?
從這個地方看來,很像是從外面traceroute ppp1時,
lab1機器並沒有收到封包的樣子

可以利用tcpdump測試是否有收到traceroute的封包
root@lab1 sysconfig]# tcpdump -i ppp1 dst host 61.223.121.192 and proto \\icmp

確認lab1是否真的有收到封包

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #13 於: 2004-01-10 19:50 »
抱歉... 最近比較忙 , 上來不少次 , 但都因為太累..就放棄跑去睡了
(現在上班時間 , 不過剛剛不小心睡著 , 好像捅了一點摟子 ... 處理不來乾脆不理 :cry: )


引述: "netman"
不對... DNAT 會改變 destination socket ...
那封包就送錯地方了....

封包走哪一站,是 routing 決定的...

其實前幾天就已經找到答案了 , 不過不是 ppp 介面 (小弟只有一個 ppp IP)
不過感覺上 , 他的精神是差不多的

linux 防火牆(0.250) ------- linux client (0.1)
             |--- M$ (0.2)

linux client 是架來玩的 , ssh 依然 22 port(內部觀) , 0.250 就不是 22 port
重點是 , 我希望從公司仍能直接 ssh 裡面的 linux
所以這時我真實 ip 的 60001 是防火牆 ssh , 60002 是 client ssh
若是 M$ 這台堅持與公司連回來的方式一樣 (ssh public IP : 分兩種 port)
iptables -t nat -A PREROUTING -s 192.168.0.1 -d 203.204.100.20 -i \
eth2 -p tcp -m tcp --dport 60002 -j DNAT --to-destination 192.168.0.2:22
這樣的 prerouting 設定 , 理當是 ok 的
在 M$ 0.2 執行 ssh -p 60002 203.204.100.20
但這是無法連上的 ... 雖然有 PREROUTING 設定 ok 的喔
需得再加上一行
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.0.250

而加入第三台 linux client (0.3) 時 , 好像又有一點點不同 , 只是還沒著手去找不同處
(這也是一直沒回這篇的原因 .. 但到過年 , 恐怕也沒時間玩:oops: )

引述: "zoob"
要做ECMP的話,有個首要條件,2個Device的網段不可相同(小弟的經驗)

小弟曾經做過
真實 ip ---> linux tc qdisc 分流 ---> ECMP 合併 ---> LAN
    1網卡 a      2 + 2 網卡 b   1網卡+hub

其中 , 若 b 點四張網卡 , 皆使用同網段 ip , 是可行的喔 (route table 設 ok)
不過 (記憶中) tc qdisc 的那兩個私人 ip 無法由 lan ping 到 (但運作是正常的)

而曾經幫同學架過 5 個 seednet IP 全用的 ECMP + nat , 那就更沒是否同網段問題了
猜想 , 拿到同網段的 public IP , 也不一定是同網段的 "ISP 的對應私人 IP"

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
[Help] Client端與多個PPPoE連線
« 回覆 #14 於: 2004-01-11 02:37 »
引述: "dark"
小弟曾經做過
真實 ip ---> linux tc qdisc 分流 ---> ECMP 合併 ---> LAN
    1網卡 a      2 + 2 網卡 b   1網卡+hub

其中 , 若 b 點四張網卡 , 皆使用同網段 ip , 是可行的喔 (route table 設 ok)
不過 (記憶中) tc qdisc 的那兩個私人 ip 無法由 lan ping 到 (但運作是正常的)

而曾經幫同學架過 5 個 seednet IP 全用的 ECMP + nat , 那就更沒是否同網段問題了
猜想 , 拿到同網段的 public IP , 也不一定是同網段的 "ISP 的對應私人 IP"


hi dark

NAT--SW(192.168.0.254)-|---eth0(192.168.0.1/24)---|
NAT--SW(192.168.0.254)-|---eth1(192.168.0.2/24)---|-Linux Server

然後請問一下,你是否可以針對eth0和eth1同時利用Advance routing來指定default route呢?

註:eth0和eth1的gateway相同

而Seednet拿到的ip subnetmask為何?

我所指的「不同網段」為不同subnet netmask

以上情形下小弟是無法指定2張網卡同樣指定相同的gateway為default route
並且在Google大神的查詢下,皆說無法在相同網段下同時指定default route

如果dark大如果可以的話,請告知小弟問題為何?Thanks

kuolung

  • 俺是博士!
  • *****
  • 文章數: 1031
    • 檢視個人資料
    • http://www.kuolung.net
[Help] Client端與多個PPPoE連線
« 回覆 #15 於: 2004-01-11 15:31 »
請您在這兒用 " Linux ADSL Multipath Routing Solution"搜尋
就會找到您要的解答了
=========================
http://www.kuolung.net
==========================

airbag

  • 可愛的小學生
  • *
  • 文章數: 15
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #16 於: 2004-01-11 23:34 »
開欄者是不是企圖讓頻寬變成512k*8/64k*8?不然用那麼多ip除了試multipath Routing 還有什麼特殊的用途嗎?這樣真的可行嗎?因為小弟是有點質疑,不知道能不能請教一下路人甲?3Q!

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
[Help] Client端與多個PPPoE連線
« 回覆 #17 於: 2004-01-13 22:05 »
因為已經算 1 年多以前的實做了 , 所以只能憑印象以供參考 , 且身邊已經沒有這麼多硬體... 還請見諒

如果要合併 lan 中的頻寬(eth1,2 都是 0.0 網段) , 變 200 mb 跑的話 , 可下 :
ip route replace 192.168.0.0/24 nexthop dev eth1 nexthop dev eth2
小弟實作中發現 div 指向 gw ip 是可省略的
所以
ip route replace default nexthop dev ppp0 nexthop dev ppp1
即可

而 route -n 中會看到一個 : 203.1.1.1    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
這是單點路由的設定 (小弟不知此專有名詞)
而如我實做的環境中 , 必須加一些設定如 :
ip r get 192.168.0.251 from 192.168.0.100 iif eth1
設 192.168.0.251 為 gw 時 , 從192.168.0.100 來的走去 eth1
印象中有兩種方法 ... 實在想不起另一種  :(
請參考 /usr/share/doc/iproute-2.4.7/ip-cref.ps

而使用 ISP 的ppp介面時 , 只要從 ppp0 出去的 , 偽裝 ppp0 , ISP 不會送到 ppp1
上述中 , 出 eth1 eth2 是不偽裝的 , 所以才由 route table 下手

不過這時要是加入 equalize 參數的話(以封包算) , 都會是同一個 IP 出去
小弟猜想 , 可能是平均分配的關係 , 所以每次新 session 的第一個封包都還是從第一條出去

引述: "airbag"
開欄者是不是企圖讓頻寬變成512k*8/64k*8?不然用那麼多ip除了試multipath Routing 還有什麼特殊的用途嗎?這樣真的可行嗎?因為小弟是有點質疑,不知道能不能請教一下路人甲?3Q!

路人甲兄也是不想浪費可用 IP .....
況且 ... ISP 很摳的 ... 早限死死的嚕