同一子网上的两个 IPS 可以 ping 通,但由于主 IPS 发生故障而无法正常工作

同一子网上的两个 IPS 可以 ping 通,但由于主 IPS 发生故障而无法正常工作

我有几个 Linux RHEL 6 服务器,我在同一个子网中配置了 2 个独立的 NICS,具有 2 个不同的 IP。

> example:
>     eth0 : 172.23.23.1
>     eth1:  172.23.23.2

最初,我遇到的问题与“rp_filter”反向数据包过滤有关,我已在 sysctl.conf 文件中启用了“net.ipv4.conf.default.rp_filter = 2”,重启后仍会继续,两个网卡都在 ping,但奇怪的是,如果我们拔掉主网卡 eth0,主机就会停止响应。其次,在交换机端,它只接受两个 IP 的单个 MAC 地址。

如果有人遇到这种情况,请告知!

答案1

这是您设置的预期行为。您通过将其设置为 2 所做的rp_filter是指示内核接受反向路径与入站接口不同的数据包,否则它们将被丢弃。现在,它们被接受了,但反向路径(即路由表条目)仍然指向不同的接口,该接口已关闭,并且您没有收到任何回复。

如何处理这种情况取决于最初的意图。如果是 L2 冗余,请在交换机上设置捆绑,并在服务器端设置绑定接口。

答案2

添加两个接口的路由规则后,我就能解决这个问题。

1)需要在iproute2文件中添加如下表:

T_eth0 for eth0 interface
T_eth1 for eth1 interface

-> /etc/iproute2/rt_tables
1  T_eth0
2  T_eth1

2)添加 iproute2 表后,需要添加 ip 路由和 ip 规则,然后建立到网关的路由并通过该网关建立默认路由。

ip route add 172.23.15.0/21 dev eth0 table T_eth0
ip route add default via 172.23.23.134 dev eth0 table T_eth0

ip route add 172.23.15.0/21 dev eth1 table T_eth1
ip route add default via 172.23.23.134 dev eth1 table T_eth1

3) 接下来,设置路由规则。这些规则实际上选择使用哪个路由表进行路由。如果您已经有相应的源地址,您需要确保路由出给定的接口:

ip rule add from 172.23.23.1 table T_eth0
ip rule add from 172.23.23.2 table T_eth1

以上所有命令确保对特定接口传入流量的所有应答都从该特定接口得到应答。

相关内容