我们是 OVH 的专用服务器,分配了 2001:41d0:a:72xx::/64
根据来自主机的虚拟机的 IPv6 公共路由,我已将机器设置在桥接到 wan 的网段上
网关是2001:41d0:a:72ff:ff:ff:ff:ff,网络外
我们正在运行一堆虚拟 Debian 服务器。
我们的一些(较旧的)服务器很乐意将 ipv6 路由到网关,但我尝试设置的新服务器在 ping gw 时说“无法访问目标;无法访问地址”。
防火墙设置相同(/64 的规则,而不是主机级别的规则),并且 /etc/network/interfaces 是相同的;ipv6 设置为静态。(不同的原因地址)
在工作和非工作机器上, netstat -rn6|grep eth1 show
2001:41d0:a:72xx::/64 :: U 256 2 40 eth1
2001:41d0:a:7200::/56 :: UAe 256 2 71 eth1
2001:41d0:a1:72xx::/64 :: UAe 256 0 0 eth1
2000::/3 2001:41d0:a:72ff:ff:ff:ff:ff UG 1024 2 63479 eth1
fe80::/64 :: U 256 0 0 eth1
::/0 fe80::205:73ff:fea0:1 UGDAe 1024 1 2 eth1
::/0 fe80::20c:29ff:fe22:60f8 UGDAe 1024 0 0 eth1
ff00::/8 :: U 256 2108951 eth1
在非工作机器上,ping gw 或 workd 会返回“Destination unreachable”。
这些机器都可以在本地局域网上相互访问。
我不知道这是否相关,但
ping -c3 ff02::2%eth1
64 bytes from fe80::20c:29ff:fedb:a137%eth1: icmp_seq=1 ttl=64 time=0.240 ms
64 bytes from fe80::20c:29ff:fe22:60f8%eth1: icmp_seq=1 ttl=64 time=0.250 ms (DUP!)
64 bytes from fe80::2ff:ffff:feff:fffd%eth1: icmp_seq=1 ttl=64 time=3.57 ms (DUP!)
64 bytes from fe80::2ff:ffff:feff:fffe%eth1: icmp_seq=1 ttl=64 time=5.97 ms (DUP!)
关于非工作
ping -c3 ff02::2%ens34
PING ff02::2%ens34(ff02::2%ens34) 56 data bytes
64 bytes from fe80::20c:29ff:fedb:a137%ens34: icmp_seq=1 ttl=64 time=0.130 ms
64 bytes from fe80::20c:29ff:fe22:60f8%ens34: icmp_seq=1 ttl=64 time=0.138 ms (DUP!)
:fffd amd :fffe 地址丢失。
所有 ipv6 地址都已在 OVH 控制面板中分配。
TL;DR:新旧服务器之间肯定有些不同,但我找不到。
更新:工作机器的克隆不起作用。
在 pfsense 的外部,设置为网桥,机器发送以下内容:
12:33:23.087778 IP6 test1.example.org > fe80::2ff:ffff:feff:fffe: ICMP6, neighbor advertisement, tgt is test1.example.org, length 32
12:33:24.106302 IP6 test1.example.org > par10s28-in-x0e.1e100.net: ICMP6, echo request, seq 451, length 64
但什么都回不来了。来自外部的 ping 也不会通过。
由于机器是工作机器的精确克隆,除了 ip 地址,它必须是 OVH 的上游问题。
更新 2 现在 OVH 声称要将数据路由到 IPv6,mac 需要与 IPv4 地址相关联。OMG工作的 IPv6 不是。
OVH 不知道如何正确地执行 IPv6,它们的设置仅在某些情况下有效,并不适用于任何地方。
只有当服务器暴露于世界并且还具有公共 IPv4 地址时,它才可以在没有特殊的箍跳的情况下工作。
他们无法提供一个公共 ipv6 和路由到它的子网,如果想要在自己的防火墙后面运行 VM,则需要这样做。
如果您对 IPv6 感兴趣,那么在他们让他们的东西正常工作之前,最好去别处看看。
OVH 在其交换机上运行交换机端口安全性,因此只有列入白名单的 MAC 地址才能使用任何给定端口。这不适用于 vRack;在 vRack 上禁用交换机端口安全性。但是 OVH 还不允许您将 IPv6 子网路由到 vRack。您也不能将IPv6 子网故障转移到另一台服务器。这是一个严重的疏忽;在这两种功能都存在之前,OVH 的 IPv6 支持被认为是有限的。
所以这就是我如何设置一个运行几十个虚拟机的 OVH 服务器:
在主机服务器上,br3 是一个包含 eno3 和我在其上路由 IPv6 的虚拟网络接口的网桥。主机配置为:
我有这样配置的静态路由:
然后我运行
ndppd
,它会回答我的 /64 中任何地址的 NDP 邻居请求查询。它是这样配置的:这会导致主机的 MAC 地址用于子网中的所有 IPv6 地址,然后我将其路由到 libvirt 中的虚拟接口,拆分为 /80 网络。一个示例是这样配置的:
此特定网络中的所有 VM 都分配有手动 IPv6 地址,但您可以根据需要设置 DHCPv6。那看起来像:
然后,我将 IPv4 故障转移地址路由到 vRack,该 vRack 桥接到一个网桥
br4
,eno4
我的所有 VM 都从该网桥获得第二个虚拟 NIC。因此,它们在一个接口上有 IPv6,在另一个接口上有 IPv4。这是可选的;您可以在主界面上保留 IPv4 故障转移地址(例如,如果您没有 vRack)。