WireGuard IPv6 配置文件适用于 wg-quick,但不适用于 NetworkManager

WireGuard IPv6 配置文件适用于 wg-quick,但不适用于 NetworkManager

我目前正在使用 WireGuard wg-quick,一切正常。它使用手动定义的 IPv6 地址,但不使用 IPv4 地址。

[Interface]
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
Address = xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/128
DNS = 1.1.1.1
MTU = 1280
[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
AllowedIPs = 0.0.0.0/0
AllowedIPs = ::/0
Endpoint = wg.example.com:xxxx
7: xxxx0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1280 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/128 scope global 
       valid_lft forever preferred_lft forever

我尝试使用NetworkManager而不是wg-quick.导入后nmcli conn import type wireguard file xxxx0.conf,界面不再工作,并卡在0 B received,或者至少卡在这个特定的服务器上。

除了设置原始 IPv6 地址之外,还会将生成的地址添加到接口中。

10: xxxx0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1280 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/128 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

我认为删除这个额外的 IPv6 地址应该可以解决问题。如何防止使用或添加这一额外的 IPv6 地址,以便仅使用手动指定的地址?我尝试寻找 的选项nmcli conn show xxxx0,但找不到任何明显的东西。

NetworkManager我不知道和之间还有什么不同wg-quick。我尝试比较ip ruleip route show table <from rule>,但两者基本上是相同的。

答案1

inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 范围链接 noprefixroute

这是一个链接本地地址。这不太可能是问题的原因。

您说您比较了 NetworkManager 配置的内容。可以看出,那里可以清楚地看到潜在的差异。

查看wg showip addrip -4 route show table allip -6 route show table allip -4 ruleip -6 rule

AllowedIPs = 0.0.0.0/0特别是,尽管设置了和,但您还没有配置 IPv4 地址DNS = 1.1.1.1。由于AllowedIPs设置wireguard.ip4-auto-default-route,NetworkManager 将为 IPv4 添加默认路由(在不同的路由表中)。这条路不会通向任何地方。

我认为 IPv4 不会通过 VPN 运行。您检查过 IPv6 是否有效吗?

修复您的配置,配置 IPv4 地址或不添加 0.0.0.0/0 的端点范围。或者至少,禁用wireguard.ip4-auto-default-route,那么 NetworkManager 就不会自动添加无意义的默认路由——但不确定为什么这会有用。

相关内容