小编Ine*_*neu的帖子

systemd-networkd 和直接路由

我在通过 systemd-networkd 添加直接路由时遇到问题。我想要实现的目标类似于:

ip a a 192.168.0.2/32 dev enp0s3
ip r a 192.168.0.1/32 dev enp0s3
ip r a default via 192.168.0.1
Run Code Online (Sandbox Code Playgroud)

这是奇怪的设置,我知道,但我不能使用通常ip a a 192.168.0.2/24到达网关。由于某种原因,整个 /24 子网都可以通过该子网中的网关访问。因此,此默认路由不仅适用于所有路由,还适用于到达子网。所以,我创建了/etc/systemd/network/enp0s3.network:

[Match]
Name=enp0s3

[Address]
Address=192.168.0.2/32

[Route]
Destination=192.168.0.1/32

[Route]
Gateway=192.168.0.1
Run Code Online (Sandbox Code Playgroud)

此设置的问题Route在于永远不会执行第二个块。我做了一些调试,这是第一个块的功能ipsystemd-networkd功能之间的区别Route

# ip
192.168.0.1 dev enp0s3 scope link
# networkd
192.168.0.1 dev enp0s3 proto static
Run Code Online (Sandbox Code Playgroud)

所以systemd-networkd不会添加scope link到路由中。这就是尝试通过添加默认路由192.168.0.1失败并Network is unreachable出现错误的原因。这可以通过

ip r c 192.168.0.1/32 dev enp0s3 # automatically …
Run Code Online (Sandbox Code Playgroud)

routing systemd

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

routing ×1

systemd ×1