![如何将 IPv6 路由到外部接口?](https://linux22.com/image/774556/%E5%A6%82%E4%BD%95%E5%B0%86%20IPv6%20%E8%B7%AF%E7%94%B1%E5%88%B0%E5%A4%96%E9%83%A8%E6%8E%A5%E5%8F%A3%EF%BC%9F.png)
我从 IONOS 购买了一个 VPS。虽然他们提供了 IPv6 范围2a00:xxxx:xxxx:67::/64
,但他们不会将其路由到 VPS 本身,这很奇怪。
我不知道如何实现这一点。我只有 254 个客户端,所以我很乐意手动完成。这是我在路由表中已经看到的内容:
ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2a00:xxxx:xxxx:67:ffff::1 dev wg0 metric 1024 pref medium
2a00:xxxx:xxxx:67:ffff::2 dev wg0 metric 1024 pref medium
... all way to 254
2a00:xxxx:xxxx:67:ffff::254 dev wg0 metric 1024 pref medium
2a00:xxxx:xxxx:67::/64 dev ens192 proto kernel metric 256 pref medium
fd8e:xxxx:xxxx::/112 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev ens192 proto kernel metric 256 pref medium
default via fe80::1 dev ens192 metric 1024 onlink pref medium
那么,我是否需要单独分配客户端 IP 才能ens192
使其正常工作?我为此编写了一个小型 bash 脚本:
#!/bin/sh
NUMBER_CLIENTS=254
for ((DOT_IP=1; DOT_IP<=NUMBER_CLIENTS; DOT_IP++))
do
sudo ip -6 addr add 2a00:xxxx:xxxx:67:ffff::${DOT_IP}/64 dev ens192
done
脚本可以运行,但我的 Wireguard VPN 客户端仍然无法获得正常运行的 IPv6。成功连接 Wireguard 后,它们仅分配了 IPv4,而没有 IPv6。
请问我还能做什么?
根据他们的指导,他们好像建议accept_ra 0
在静态IP分配中使用。但我没有设置:
auto lo ens192
iface lo inet loopback
allow-hotplug ens192
iface ens192 inet dhcp
iface ens192 inet6 static
address 2a00:xxxx:xxxx:67::1
netmask 64
gateway fe80::1
除此之外,我还启用了转发功能/etc/sysctl.d/99-sysctl.conf
:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
非常感谢
答案1
我最近遇到了类似的问题。在使用默认配置的 IONOS VPS 上,启用 时 IPv6 不幸停止工作net.ipv6.conf.all.forwarding = 1
。这是 IONOS 设置所特有的,因为它们使用“路由器广告”来确定真正的 IPv6 地址,可能是为了避免在部署映像时必须为每个 VPS 创建特定的接口文件。它们的默认 IPv6 配置如下所示:
iface ens192 inet6 manual
pre-up sleep 5
up dhclient -6 -nw -v ens192
down dhclient -6 -r -v ens192
但是,IP6 转发默认禁用路由器通告,因此在这种情况下 IPv6 将停止工作。
解决该问题的一个有效方法是进行以下 IPv6 配置/etc/network/interfaces
(将该地址替换为您的 VPS 特定的 IPv6 地址,建议重新启动):
iface ens192 inet6 static
accept_ra 2
address 2a00:xxxx:xxxx:67::1/128
up ip -6 r a default dev ens192
强制accept_ra 2
路由器通告,但是对于“手动”方法,此参数会被忽略,因此采用“静态”方法。