作者 主題: 同一台機器,同網段IP,當拔eth0網路線時,為何eth0和eth1網路都不通  (閱讀 7333 次)

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

rainday

  • 鑽研的研究生
  • *****
  • 文章數: 738
  • 性別: 男
  • enhancing and optimizing
    • 檢視個人資料
觀念問題,但頓時想不通
一時之間也不知道該搜尋什麼關鍵字
所以就先po出來

A
eth0 10.0.10.3

B
eth0 10.0.10.1
eth1 10.0.10.2

rain@test:/# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.10.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.10.0       0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         10.0.10.254       0.0.0.0         UG    0      0        0 eth1 <---後加的
0.0.0.0         10.0.10.254       0.0.0.0         UG    0      0        0 eth0 <---先加的

測試1.拔B eth0網路線
A ping 10.0.10.1 or 10.0.10.2都不通

測試2.拔B eth1網路線
A ping 10.0.10.1 or 10.0.10.2都通
這個我想是透過lo->eth1 , 所以ping 10.0.10.2也會回應

但想不通測試1,為什麼是以最先設定的為主,還是有什麼我沒注意到的設定嗎
« 上次編輯: 2010-02-26 19:56 由 rainday »
<0  =_=  Don't learn to hack , hack to learn.

TWASA

  • 活潑的大學生
  • ***
  • 文章數: 269
  • 性別: 男
    • 檢視個人資料
同一台多介面又有同網段這種測試用ping -b的方式指定你的icmp封包從哪個介面走才好釐清吧
« 上次編輯: 2010-02-26 19:50 由 TWASA »

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
同時出現兩個 default gateway ... 您的 kernel 偷改過 ??
小弟只在少數某些 linux base 的網路設備看過這現象
但個人覺得改的都沒 iproute2 功能好 ...

您拔線後 routing table 有變化嗎 ?
通往 10.0.10.0 網段的封包都丟第一行 eth0
拔掉 eth0 若沒變化就丟不出去了

rainday

  • 鑽研的研究生
  • *****
  • 文章數: 738
  • 性別: 男
  • enhancing and optimizing
    • 檢視個人資料
目前測試
1. 拔B eth0網路線
從B上ping A 10.0.10.3 有封包出去 , -I eth0 (Destination Host Unreachable) (正確狀態)
ping 10.0.10.3 -I eth1 -bv
PING 10.0.10.3 (10.0.10.3) from 10.0.10.2 eth1: 56(84) bytes of data.
64 bytes from 10.0.10.3: icmp_seq=1 ttl=255 time=0.126 ms
64 bytes from 10.0.10.3: icmp_seq=2 ttl=255 time=0.115 ms

但A ping -c 1 -bv 10.0.10.1 and 10.0.10.2
Destination Host Unreachable
1 packets transmitted, 0 received, 100% packet loss,time 0ms

看起來eth1內對外出去是ok的
問題在其他台進不去B eth1

回dark
用route add指定不同dev即可
拔線route table不會有變化,除非device down不存在,route table才會跟著刪除
« 上次編輯: 2010-02-26 20:43 由 rainday »
<0  =_=  Don't learn to hack , hack to learn.

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
原來 dev 不同介面即可達到喔 ... 沒試過

routing table 先碰到的會符合
您測試又都在同網段
不到 default gateway 就比對到了

而回應封包不會像 ping 一樣能指定介面

hongbin

  • 憂鬱的高中生
  • ***
  • 文章數: 101
    • 檢視個人資料
以下為小弟淺見:

1.拔掉網路線並不會讓 linux routing table  中的entry 消失,因此把 主機B 的eth0 網路線拔除時,
   主機B的routing table 是不會改變的
2.當主機B的封包要往主機A(10.0.10.3)送時,經由主機B 的routing table 可知封包會由主機B 的eth0 出去(
   因為  10.0.10.0    0.0.0.0     255.255.255.0   U     0   0     0 eth0   是第一筆),   除非有指定outbound的Interface [-I 選項],      但這時eth0 的網路線已被拔除,所以封包會無法傳送過去,產生timeout
3.linux 預設並不會像路由器的行為,當往第一筆routing傳送封包失敗時,會往下一個interface(eth1)傳送
4.這就是為何拔除B eth0網路線時,A ping 主機B (10.0.10.1 or 10.0.10.2)都不通,因為B 無法回送封包給A
5. 因為主機B往 10.0.10.0/24送出的封包預設是由 eth0 傳送,因此當拔掉eth1網路線時,不影響主機A 跟主機B 的通訊
6.這就是為何拔除主機B eth1網路線,A ping 10.0.10.1 or 10.0.10.2都通
 

rain@test:/# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.10.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.10.0       0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         10.0.10.254       0.0.0.0         UG    0      0        0 eth1 <---後加的
0.0.0.0         10.0.10.254       0.0.0.0         UG    0      0        0 eth0 <---先加的

« 上次編輯: 2010-02-27 11:56 由 hongbin »

rainday

  • 鑽研的研究生
  • *****
  • 文章數: 738
  • 性別: 男
  • enhancing and optimizing
    • 檢視個人資料
謝謝大家以上的意見
稍微整理一下目前研究的一些成果
和所發現到的二種相關或相似的機制

1. dynamic routing似乎需要配合其他設備,取得清單來建立routing table (OSPF,BGP,RIP,所組成的Dynamic routing protocols,還有一些工作指令Zebra, routed)

2. bonding的機制能偵測dev的狀態,來決定由哪一個dev進出,但bonding起來,就會看成是單一dev,也就是只能設定一個IP,但就功能來看,改寫bonding就能做到更多的功能了

3. 大概就是寫個監控程式做切換

雖然不太知道什麼情況會用到這種同網段IP在同一台的設定,不過釐清一下自己的網路觀念也是不錯的
不知道MS有沒有這種問題? MS網路斷線,裝置應該就跟著down了吧
<0  =_=  Don't learn to hack , hack to learn.

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
os 中的 routing table 稱不上 dynamic route
而 rip2 好像 .. 可能才是

記得 bonding 最初文件中都提到 .. 為了讓介面速度加成
所以猜想這功能為了網卡變 2 倍 3 倍速度而來的 ...
但在 linux 下 , 什麼網卡綁什麼 ip 似乎不太重要 ... 要改很容易
再加上 iproute2 功能 , 可以任意控制外出封包
最大問題恐怕在於回來的封包 .. 可以搜尋 L2 的 mutilcast

倒也沒去留意哪些環境下 , 哪種介面變動 , routing table 會跟著變 ...
不過猜想是程式設計上的問題 , 而非 kernel ...
如 rp-pppoe 程式就有當撥接成功是否改變 default gateway 的參數