1. 程式人生 > >資料包傳輸過程

資料包傳輸過程

雙網絡卡設定同一網段IP地址的問題

by mlsx
問題:
我在兩個網絡卡上面設定同樣網段的兩個IP(比如10.1.0.1和10.1.0.2),這時是可以正常工作的,但是如果我把第一快網絡卡(eth0)上的網 線拔掉之後,網路就不通了,按照我的設想,當eth0不通時系統應該可以從eth1走,所以網路應該還是通的,因為我設的是同一個網段的IP。而且,如果 我執行命令ifdown eth0之後,網就通了,也就是可以從eth1走了。
解答:

這樣配置是有問題的,當eth0的網線被拔掉時,系統並不能按您設想的改從eth1走,因為系統裡面有一個路由表,當您設定IP的時候就會同時設定 路由表,當需要訪問外面的時候,系統會去路由表裡面查詢,當查詢到第一個匹配的專案時就應用這個專案,也就是從這條路徑走了,當你拔掉eth0的網線的時 候,路由表並沒有同時改變,所以系統仍然會試圖從eth0走,並不會自動改成從eth1走。
但是,如果你執行命令ifdown eth0之後,系統就會把eth0這條路由刪除掉,之後就可以從eth1走了,網也就通了。
您可以使用命令route來檢視系統路由表:
[

[email protected] ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref
Use Iface
10.0.0.0 * 255.0.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1

像您設想的,您如果希望兩塊網絡卡能夠像熱備一樣工作,也就是一塊不通時可以從另外一塊走,那麼您可以使用網絡卡繫結,在核心裡面提供了網絡卡繫結的支援:
#insmod bonding mode=1
#ifconfig eth0 down
#ifconfig eth1 down
#ifconfig bond0 ipaddress
#ifenslave bond0 eth0
#ifenslave bond0 eth1
這樣設定之後,eth0和eth1就被繫結成了一個新的裝置:bond0,這個裝置可以工作在熱備(mode=  1)和負載均衡(mode=0)兩種方式下,任何一種工作方式下都可以實現您的設想,也就是任意拔掉一根網線,網路仍然可以正常工作,只是負載均衡方式需 要兩個網絡卡同時工作,要求交換機上的對應網口也要做繫結,這個就需要檢視交換機的使用說面了,如果您不清楚可以使用熱備的方式,它是一塊網絡卡工作,另外一 塊網絡卡做備份,如果工作的網絡卡出現問題,比如網路段了,那麼會馬上切換到另外一塊網絡卡上,保證網路通暢,這種方式不要求交換機做特殊設定。