![ESXi 上的 OVH IPv6 -> pfSense -> VM 设置](https://linux22.com/image/778316/ESXi%20%E4%B8%8A%E7%9A%84%20OVH%20IPv6%20-%3E%20pfSense%20-%3E%20VM%20%E8%AE%BE%E7%BD%AE.png)
目前正在 OVH 机器上的 ESXi 主机上设置一些虚拟机。我在 OVH 上有两个 IPv4,包括一个 OVH 所需的虚拟 MAC 地址。一个 IPv4 用于 ESXi 主机本身,另一个用于 pfSense VM。现在,IPv4 在所有使用 pfSense NAT 的虚拟机上运行良好。但是,我就是无法运行 IPv6。
OVH 为我分配了一个 /64 块。但是,这个块根本没有路由给我。OVH 完全依赖机器来响应 NDP 请求。但是,由于除 pfSens 之外的所有虚拟机都没有连接到“物理”网卡,而只连接到 LAN(vSwitch),因此它们不会接收这些 NDP 信标,因此 OVH 不知道它们的存在。这个问题已经在多个 OVH 和 pfSense 论坛帖子中进行了深入讨论,但还没有确切的解决方案。
大多数人说 NDP 代理是最佳选择。但是,pfSense 并未将 NDP 代理集成到其软件中(我猜是为了避免引发不良行为)。因此,我做了以下操作:
首先,我启动了一个 FreeBSD 12.3 VM 并ndproxy
在那里进行了编译。然后,我将ndproxy.ko
内核模块上传到 pfSense 机器并将其放入/boot/modules
。最后,将此 shell 脚本放入 /usr/local/etc/rc.d:
#!/bin/sh
# Provides: ndproxy
kldload ndproxy
ifconfig vmx0 promisc
sysctl net.inet6.ndproxyconf_uplink_interface=vmx0
sysctl net.inet6.ndproxyconf_downlink_mac_address=`ifconfig vmx0 ether | grep ether | awk '{print $2;}'`
sysctl net.inet6.ndproxyconf_uplink_ipv6_addresses=`route -n6 show :: | grep gateway: | sed 's/%vtnet0//g' | awk '{print $2;}'`
vmx0
是上行链路接口(“物理接口”)。最后两行告诉ndproxy
pfSense 机器(机器ndproxy
自行运行)的 MAC 地址和 OVH IPv6 网关地址。
方便的是,这个网关位于在......之外/64 子网,所以我不得不使用 /56 块设置 pfSense WAN 网关。
对于 LAN 网关,我选择了一个 ULA 前缀。然后,在“NAT”中,我添加了一个从 ULA 子前缀到 WAN 子前缀的 NPt。因此,假设我的 WAN 前缀是2001:41d0:403:a11::/64
,我选择的 ULA 前缀是fd00:dead:beef:dead::/64
,我设置了一个从 ULAfd00:dead:beef:dead:dead::/80
到 WAN 的NPt 2001:41d0:403:a11:beef::/80
。
确保ndproxy
正在运行,结果 - 什么都没有!什么都没用。机器仍然无法使用(在虚拟机上给定 ULA 前缀并尝试在 NPt 中设置的 WAN 前缀上 ping 它们)。
在 pfSense 中,我可以在虚拟机的 LAN 地址(例如)上 ping 通它们fd00:dead:beef:dead:dead::2
,但不能在虚拟机相应的 NPt WAN 地址(例如2001:41d0:403:a11:beef::2
)上 ping 通它们。
有人知道我还能尝试什么吗?
答案1
确实,NDP Proxy 是可行的方法。但 pfSense 是一款糟糕的路由器。我向你保证:它永远不会起作用。使用基于 Linux 的路由器,只需输入 /sbin/ip -6 neigh add proxy 2001:51c0:a:26a3:b055::1 dev eth0(或必须路由的另一个 IP)
您将在 5 分钟内修复它。