通过网关使用 systemd-networkd 配置路由会导致错误:无法设置路由:网络不可达

通过网关使用 systemd-networkd 配置路由会导致错误:无法设置路由:网络不可达

我在我的机器上运行了几个 LXC 容器,其中一些容器在与主机共享的网络之外有自己的 IP 地址。此 IP 地址以及相应的网络掩码和网关由我的 ISP 提供给我。我使用 systemd 238 并尝试了以下配置 [1]:

[Match]
Name=enpXsY

[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
IPForward=yes

[Route]
Destination=10.0.0.64/29
Gateway=10.0.0.65

systemd-networkd日志中我看到以下错误:Could not set route: Network is unreachable,但我无法真正解释这一点。如果我不指定网关,内核可以很好地路由到该网络。因此,我假设它也能够通过同一接口将流量路由到网关。如果我在Destination=10.0.0.65/32路由到之前指定了路由10.0.0.64/29,以便亲自指导内核并解释如何到达该网络,这甚至不起作用。

更新:与此同时,我对主机的网络配置进行了重大更改,但这些是它配置的 IPv4 地址和路由 [1]:

# ip -4 address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enpXsY: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet 192.168.0.2/24 brd 192.168.0.255 scope global enpXsY
       valid_lft forever preferred_lft forever
4: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    inet 10.10.10.1/24 brd 10.10.10.255 scope global lxcbr0
       valid_lft forever preferred_lft forever

# ip -4 route
default via 192.168.0.1 dev enpXsY proto static 
192.168.0.0/24 dev enpXsY proto kernel scope link src 192.168.0.2
10.10.10.0/24 dev lxcbr0 proto kernel scope link src 10.10.10.1 

[1]:出于隐私原因,我将实际 IP 地址转换为非路由网络中的类似地址。

答案1

在 systemd-networkd 日志中我看到以下错误:Could not set route: Network is unreachable,但我无法真正解释这一点。

这告诉你实际问题是什么。你需要将路由器置于分配给任意一个网络接口的 IP 地址的子网内。

您的 IP 地址为 ,192.168.0.2子网掩码为24。网关位于 ,192.168.0.1应该位于 ,因为它位于子网内。

问题发生在此部分:

[Route]
Destination=10.0.0.64/29
Gateway=10.0.0.65

如果您没有其他 systemd-networkd 配置文件来指定具有 IP 地址的接口,则10.0.0.64/29systemd-networkd 不知道如何到达 的网关10.0.0.65。请注意,文件名会控制文件的处理顺序,因为它们在执行之前按词汇顺序排序。正如我上面所述,网关必须是下一跳这意味着它位于主机已知的特定子网内。

相关内容