Systemd 的 Networkd:无法添加 ipv6 默认路由

Systemd 的 Networkd:无法添加 ipv6 默认路由

我在新 VPS 上设置 IPv6 地址连接时遇到了麻烦。我以为我知道自己在做什么,但显然 networkd 不同意,我在尝试添加默认路由时一直遇到问题。

以下是我的 ISP 向我提供的网络信息:

Subnet      2001:19f0:6:2::/64
Gateway     2001:19f0:6::1
Nameserver  2001:4860:4860::8888
Nameserver  2001:4860:4860::8844

Interface:       ens3
OS:              Ubuntu 18.04.02
Systemd version: 237

当前设置

我可以使用以下 systemd 文件轻松设置我的 IP 地址并添加至网关的路由:

[Match]
Name=ens3

[Network]
Address=209.222.17.197/26
Gateway=209.222.17.193
DNS=8.8.8.8

[Network]
Address=2001:19f0:6:2::1337/64

[Route]
Destination=2001:19f0:6::1

我在 journalctl 中没有收到任何错误,我可以成功 ping 2001:19f0:6::1,但我当然没有默认网关或互联网访问权限。我可以使用2001:19f0:6::1以下命令轻松用作我的默认网关: sudo ip -6 route add default via 2001:19f0:6::1

这给了我完整的 IPv6 路由,我可以 ping ipv6.google.com

问题

我似乎无法在 networkd 中设置默认网关,我花了很多时间尝试不同的选项组合,我认为这可能是一个错误。例如,如果我将配置修改为如下所示:

[Match]
Name=ens3

[Network]
Address=209.222.17.197/26
Gateway=209.222.17.193
DNS=8.8.8.8

[Network]
Address=2001:19f0:6:2::1337/64

[Route]
Destination=2001:19f0:6::1

[Route]
Gateway=2001:19f0:6::1
GatewayOnlink=true

我在 journalctl 日志中收到以下错误:

May 27 19:31:46 public-NY systemd-networkd[2452]: ens3: Could not set route: No route to host

我总是看到那个该死的错误“没有到主机的路由”,如果没有路由2001:19f0:6::1那我为什么可以 ping 它?!

我已经受够了这个问题,但我想使用 netplan,因此我想使用 systemd-networkd 进行网络连接。我是不是在做蠢事,还是像 networkd 这样重要的东西真的这么糟糕?

答案1

可能是GatewayOnLink导致了问题,因为据我所知,该网关不在链接上。您的链接子网是2001:19f0:6:2::/64,而网关地址不在该子网中——它所/64在的 是2001:19f0:6:0::/64 (extra:0`(为了清楚起见,添加了)。

现在,我无法告诉您如何设法 ping 该网关地址 - 很可能是通过 RA 接收的,这在托管环境中很奇怪,但并非未知 - 但无论如何,它不是链接路由,因此 networkd 非常正确地告诉您使用您提供的参数没有到该主机的路由。

相关内容