根据源/目标路由(转发)所有流量(Linux / CentOS)

根据源/目标路由(转发)所有流量(Linux / CentOS)

我有一个主动-主动 Linux 路由器(运行 CentOS),有三个接口(ens100、ens101、ens102)。我使用 iptables 来路由流量。

我的问题在于“服务器 A”和“服务器 B”之间的连接。我无法从“服务器 A”ping 通“服务器 B”,但我可以从“Linux 路由器”ping 通“服务器 B”。我还可以看到有数据包通过“Linux 路由器”ens100 接口从“服务器 B”传到“服务器 A”

我认为这是因为“服务器 B”在“交换机 A”上有一个默认网关,因此来自“服务器 B”的流量通过“交换机 A”、“交换机 B”并最终通过“Linux 路由器”进行路由。但由于“Linux 路由器”在与“服务器 B”相同的网络中有一个接口,因此从“服务器 A”到“服务器 B”的所有流量都将绕过“交换机 B”和“交换机 A”路由。这似乎会破坏一切。

我想在“Linux 路由器”上进行某种条件转发或基于策略的路由,以便从“服务器 A”到 10.2.0.0/24 的流量将被路由/转发到“交换机 B”,即通过 ens100 而不是通过 ens102(“Linux 路由器”上网络 10.2.0.0/24 的默​​认路由接口)。

网络示意图

答案1

正如 AB 所评论的 - 解决方案(不确定是否是唯一的解决方案)是使用基于策略的路由。

/etc/iproute2/rt_tables步骤 1:在我的例子中,添加一个未使用的 id 的新表105 appstest

步骤 2:强制在“服务器 A”所在网络的连接上使用新的路由表: ip rule add from 10.5.0.0/24 table appstest

步骤 3:从主表添加路线但替换:

10.2.0.0/24 dev ens102 proto kernel scope link src 10.2.0.252 metric 102

10.2.0.0/24 via 10.8.0.254 dev ens100 proto static metric 102

因此命令变成:

ip route add default via 10.8.0.254 dev ens100 proto static metric 100 table appstest

ip route add 10.2.0.0/24 via 10.8.0.254 dev ens100 proto static metric 102 table appstest

ip route add 10.5.0.0/24 dev ens101 proto kernel scope link src 10.5.0.254 metric 101 table appstest

这些指标是我的设置特定的。希望这对某些人有帮助。

相关内容