由于涉及 VPN 和 IP 范围冲突的一些网络特性,我有两个子网路由到两个不同的接口。我想让一个子网中的一个 IP 地址通过不同的网关出去。
我可以通过运行:
$ route add -host 1.2.3.4 gw 5.6.7.8
$ ip route show
1.2.3.4 via 5.6.7.8 dev eth0 scope link
我想让这个改变永久化。当我使用 systemd-networkd 时,我试图通过更新现有的来做到这一点/etc/systemd/network/50-dhcp.conf
:
[Match]
Name=eth0
[Network]
DHCP=ipv4
[Route]
#Gateway=5.6.7.8
Destination=1.2.3.4/32
这行得通,但没有这Gateway
条线,它不会设置路线:
$ ip route show
1.2.3.4 dev eth0 proto static scope link
如果我取消注释该Gateway
行,那么新路线根本不会出现!
使用 systemd-networkd 添加静态路由时如何指定网关?
不能说我知道修复是什么,但是在升级到
systemd
版本 242 后问题就消失了,现在它可以工作了,当您同时列出Gateway
和Destination
选项时。你应该看看这个帖子:
添加永久路线的最佳方法是什么?
它解释了您应该如何:
创建一个命名路由表,在下面的情况下路由表称为“mgmt”并获取编号“200”。
最初 /etc/iproute2/rt_tables 文件看起来像这样,带有一些保留的数字:
该帖子继续指定如何添加路由:
感谢用户Christopher的回答。