IPv6路由问题

IPv6路由问题

我从服务器提供商处收到了本机 IPv6 /64 子网,但我无法让它按照我想要的方式运行。

我正在运行虚拟机,我希望它们拥有自己的公共 IP。

假设我得到了以下信息:

IP:1:1:1:1::/64,网关:1:1:1:0::1

现在我希望主机具有 ip 1:1:1:1::1,其余的从 eth0 路由到所有虚拟机桥接的内部 br0。

可以从根机器 ping6 ipv6.google.com,所以到目前为止它似乎是有效的。

我已经启用路由,并且看起来数据包已从内部机器(从 br0)通过 eth0 正确转发 - 但仅此而已......没有回复。

注意,eth0 不是 br0 的一部分。

有任何想法吗?

答案1

除非你的提供商真的路线将您的子网连接到您的主机,您必须设置您的主机,以便它为您的访客的 IP 代理 ICMPv6 邻域发现 (ND)。

假设您已被分配2001:0DB8:A::/64,您的主机位于2001:0DB8:A::1eth0并且您的客户虚拟机使用2001:0DB8:A::2(在虚拟桥上br0)。要告诉您的主机代理 ND 查询,请发出以下命令:

ip -6 neigh add proxy 2001:0DB8:A::2 dev eth0

还要确保已为 IPv6 启用转发和 ND 代理:

sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.proxy_ndp=1

在客户机上,您可以使用主机的本地链路地址br0作为默认网关。或者,在主机的接口上添加一个额外的 IP br0,并将其用作客户机的默认网关。

答案2

如果您从隧道提供商或 ISP 处获得了本机 /64,那么您可以毫无问题地将其路由到 IPv6 互联网。您也不需要代理 NDP 来执行此操作。大多数虚拟机(包括 VirtualBox 和 VMware Workstation/Player)都允许主机设置未桥接或 NAT 路由到主机 LAN 网络的专用网络。假设您在 Linux 上使用 VirtualBox,您可以在“首选项”->“网络”下创建一个新的仅主机网络。它可能会得到一个类似的名字vboxnet1。您可以忽略任何 IPv4 设置并保持 DHCP 禁用。然后选择虚拟机的网络适配器下的仅主机网络和vboxnet1。如果要保留现有的 IPv4 适配器,可以创建一个新的网络适配器。现在,您将能够将主机用作常规的旧 IPv6 路由器。您需要设置 radvd 以在 上通告前缀vboxnet1并在 中启用 IPv6 转发/etc/sysctl.conf。它是net.ipv6.conf.all.forward=1。您还需要从同一个 /64 网络分配一个静态 IPv6 地址vboxnet1。但重要的是,不要将该 /64 网络中的地址分配给主机上的其他适配器,否则它将不知道如何正确路由。

相关内容