我有一台具有两个公共地址的 Oracle Linux 8 计算机,类似于此示例配置(示例中的私有地址):
ens224: connected to ens224
[...]
ip4 default
inet4 10.1.1.94/30
route4 10.1.1.92/30 metric 104
route4 default via 10.1.1.93 metric 104
ens256: connected to ens256
[...]
inet4 10.1.1.98/30
route4 10.1.1.96/30 metric 102
问题在于,进入 10.1.1.98 (ens256) 的流量将通过 10.1.1.93 (ens224) 路由出回复,因为它是默认网关。这在我的情况下不起作用,因为它们是不同提供商的单独公共地址。
我需要确保通过该接口响应对 10.1.1.94 的请求,但对 10.1.1.98 的请求必须通过 10.1.1.97 响应。这似乎需要某种源路由来确保流量选择正确的传出网关。
我正在尝试使用“nmcli”来实现这一点,以符合 OL 中界面管理的最新最佳实践。但到目前为止,我还无法获得完全满足我需要的配置。
答案1
根据评论中AB提供的参考,这就是我想出的解决方案。它似乎解决了双路由的主要问题,但没有使用 nmcli 来完成工作。
echo "10 public1" >> /etc/iproute2/rt_tables
echo "20 public2" >> /etc/iproute2/rt_tables
ip route add 10.0.0.92/30 dev ens224 src 10.0.0.94 table public1
ip route add default via 10.0.0.93 table public1
ip route add 10.0.0.96/30 dev ens256 src 10.0.0.98 table public2
ip route add default via 10.0.0.97 table public2
ip route add 10.0.0.92/30 dev ens224 src 10.0.0.94
ip route add 10.0.0.96/30 dev ens256 src 10.0.0.98
ip rule add from 10.0.0.94 table public1
ip rule add from 10.0.0.98 table public2
请注意,除了 rt_tables 部分之外,这不会在重新启动后持续存在。我通过创建一个在网络启动后运行“ip”命令的自定义服务解决了这个问题,但我认为这超出了这个问题的范围。
如果有人知道如何使用 nmcli 获得相同的结果,我仍然会很感激。