由于涉及 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添加静态路由时如何指定网关?
答案1
不能说我知道修复是什么,但升级到版本 242 后,当您列出和选项systemd
时,问题消失了,现在可以正常工作了。Gateway
Destination
答案2
你应该看看这篇文章:
它解释了您应该如何:
创建一个命名路由表,在下面的情况下,路由表名为“mgmt”并获取编号“200”。
echo '200 mgmt' >> /etc/iproute2/rt_tables
最初 /etc/iproute2/rt_tables 文件看起来像这样,有一些保留的数字:
# # reserved values # 255 local 254 main 253 default 0 unspec # # local #
该帖子继续指定如何添加路线:
下面,Debian 7/8 接口文件定义了 eth0 和 eth1。 eth1 是 172 网络。 eth0 也可以使用 DHCP。 172.16.100.10 是分配给 eth1 的 IP 地址。 172.16.100.1是路由器的IP地址。
source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The production network interface auto eth0 allow-hotplug eth0 # iface eth0 inet dhcp # Remove the stanzas below if using DHCP. iface eth0 inet static address 10.10.10.140 netmask 255.255.255.0 gateway 10.10.10.1 # The management network interface auto eth1 allow-hotplug eth1 iface eth1 inet static address 172.16.100.10 netmask 255.255.255.0 post-up ip route add 172.16.100.0/24 dev eth1 src 172.16.100.1 table mgmt post-up ip route add default via 172.16.100.1 dev eth1 table mgmt post-up ip rule add from 172.16.100.10/32 table mgmt post-up ip rule add to 172.16.100.10/32 table mgmt
重新启动或重新启动网络。
感谢用户克里斯托弗对于这个答案。