当另一块网卡也发生故障时,另一块网卡也会发生故障

当另一块网卡也发生故障时,另一块网卡也会发生故障

我有带有两张网卡的 Debian 8,eth0并且eth1

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 上,但当这种情况发生在我的主机所在的同一段上时,我就不会理解。

我需要做什么才能使两张卡彼此独立工作?

答案1

你的做法是错误的。你要做的是通道键将两个接口合并为一个虚拟接口,bond0并给出全部将您的 IP 地址bond0设置为 。如果绑定配置为最简单的模式,即 active-backup,则不需要对交换机进行特殊配置;两个物理接口之一将用于所有流量,除非且直到链接消失,此时内核将切换到使用另一个接口。如果我理解正确的话,这就是你想要的。

使用正确配置的更智能的交换机,您可以为绑定配置更复杂的模式,其效果是使用两个都NIC,并根据各种算法在它们之间共享流量。

如果您需要系统在几个不同的子网上拥有地址,您应该使用 VLANning bond0;同样,需要交换机的支持。

关于在 Debian 上配置通道绑定,有很多指南;Debian 维基还有关于该主题的页面。

答案2

我认为路由表说明了一切:即使拔掉了电缆,计算机仍然会选择现在已经失效的 eth0 路由,而不是 eth1 路由。如果没有 NetworkManager 或类似的东西,Linux 在重新路由方面就不够强大。即使您 ping eth1 的 IP 地址,计算机也不一定使用该接口来返回数据包;相反,它会构造一个对 ping 的源 IP 的回复并发送,这将使用路由表来决定如何返回。

答案3

为了模拟 Windows 的行为,我必须使用 iproute2 创建第二个路由表,如下所示本指南

echo "1 my_route" >> /etc/iproute2/rt_tables
ip route add 192.168.x.0/24 dev eth1 src 192.168.x.y table my_route
ip route add default via 192.168.x.1 dev eth1 table my_route
ip rule add from 192.168.x.y/32 table my_route
ip rule add to 192.168.x.y/32 table my_route

完成此操作后,即使我移除了 eth0 的电缆,我也可以 ping eth1 的 ip。链接的指南还解释了如何使这些更改永久生效。

相关内容