我目前正在使用 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 rule
和ip route show table <from rule>
,但两者基本上是相同的。
答案1
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 范围链接 noprefixroute
这是一个链接本地地址。这不太可能是问题的原因。
您说您比较了 NetworkManager 配置的内容。可以看出,那里可以清楚地看到潜在的差异。
查看wg show
,ip addr
,ip -4 route show table all
,ip -6 route show table all
,ip -4 rule
,ip -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 就不会自动添加无意义的默认路由——但不确定为什么这会有用。