如何将 IPv6 路由到外部接口?

如何将 IPv6 路由到外部接口?

我从 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路由器通告,但是对于“手动”方法,此参数会被忽略,因此采用“静态”方法。

相关内容