Linux

當另一個也出現故障時,網卡也會出現故障

  • September 20, 2016

我有帶兩個網卡的 debian 8,eth0eth1.

eth0是 192.168.3.43 和eth1192.168.3.44。

兩者都由 dhcp 配置:

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

這是路由表:

Destination     Gateway         Genmask         Flags Metric Ref        Use   Iface

0.0.0.0         192.168.3.1     0.0.0.0         UG    0      0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.128 U     0      0        0 eth0
192.168.3.0     0.0.0.0         255.255.255.128 U     0      0        0 eth1

問題是如果我從 eth0 上拔下電纜,即使從同一 192.168.3.x 網段中的機器上,我也無法 ping eth1。

如果其中一個在不同的網段中,我會理解的,因為路由表顯示預設網關位於 eth0 上,但當這種情況發生在我的主機所在的網段上時,我不會。

我需要什麼才能使兩張卡彼此獨立工作?

你正在以錯誤的方式解決這個問題。您要做的是將兩個介面通道綁定到一個虛擬介面中bond0,並將您的所有IP 地址提供給bond0. 如果bonding配置為最簡單的模式active-backup,則不需要對交換機進行特殊配置;兩個物理介面之一將用於所有流量,除非並且直到鏈路消失,此時核心將切換到使用另一個介面。如果我理解正確,這就是你想要的。

使用您正確配置的更智能的交換機,您可以為綁定配置更複雜的模式,這具有使用兩個NIC 並根據各種算法在它們之間共享流量的效果。

bond0如果您需要係統具有多個不同子網的地址,則應在;之上使用 VLANning 再次,將需要轉換的縱容。

在 debian 上配置通道綁定有很多指南;Debian wiki也有一個關於這個主題的頁面。

我認為路由表說明了這個問題:即使拔掉了電纜,電腦仍然更喜歡通過 eth0 的已死路由,而不是通過 eth1 的路由。如果沒有 NetworkManager 或類似的東西,Linux 在重新路由方面並不健壯。即使您 ping eth1 的 IP 地址,電腦也不一定使用該介面返回數據包;而是構造一個對 ping 的源 IP 的回复並發送,它將使用路由表來決定如何返回。

引用自:https://serverfault.com/questions/803375