CentoOS 和 IP 规则

CentoOS 和 IP 规则

我不明白我的情况。我有一个像图片上的网络实验室。我无法从 192.168.1.2 ping 192.168.5.1,然后 192.168.5.1 有 192.168.4.2 作为默认网关。

Linux# ip route
default via 192.168.4.2 dev eth1 proto static src 192.168.4.1 metric 90
default via 192.168.5.2 dev eth2 proto static src 192.168.5.1 metric 91

反之亦然。那么默认网关是 192.168.5.2 我无法 ping 192.168.4.1。但在两种情况下我都能在接口上看到 icmp 数据包。我做错了什么?

在此处输入图片描述

在此处输入图片描述

答案1

您似乎没有在接口上设置 IP 时应用的接口路由。

它们应该看起来像这样

192.168.4.0/24 dev eth1 proto static src 192.168.4.1 metric xx
192.168.5.0/24 dev eth2 proto static src 192.168.5.1 metric xx

您有两个默认路由。当创建数据包时,内核通过路由表匹配数据包目的地并采用第一个匹配。您只有两个路由,并且它们都是默认的(即 0.0.0.0/0),因此路由表中的第一个路由始终获胜。

您似乎尝试通过 IP 规则转移流量,但这并不起作用,因为源地址将在选择路由后应用。

假设 Linux 尝试将数据包发送到 192.168.5.2。它应该选择一个传出地址,但这取决于传出接口。要选择传出接口,它必须查阅路由表。由于规则设置,它会在“辅助”中查找,但源地址尚未设置,因此它会在“默认”中查找。路由表只有默认路由和第一个匹配项。

可以设置这些规则来改变流经的数据包的路由,而不是改变原始数据包的路由。

相关内容