![AnyIP 功能与 ndppd 结合在某些 VPS 上有效,但在另一些 VPS 上无效。为什么?](https://linux22.com/image/1032517/AnyIP%20%E5%8A%9F%E8%83%BD%E4%B8%8E%20ndppd%20%E7%BB%93%E5%90%88%E5%9C%A8%E6%9F%90%E4%BA%9B%20VPS%20%E4%B8%8A%E6%9C%89%E6%95%88%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%BA%9B%20VPS%20%E4%B8%8A%E6%97%A0%E6%95%88%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我的 VPS 大多来自同一提供商,但位于不同的地方。它们带有一个 IPv4 和一个 /112 IPv6 子网。我正在尝试使用 Linux 的 AnyIP 功能,如所述这里使我的 vps 响应对 IPv6 子网中任何 IP 的全局 ping,而不必将子网中的每个单独的 IP(超过 65000 个 IP)分配给我的接口。
考虑两个全新安装 Ubuntu 20.04 的 VPS,我的配置方式如下:
首先,我添加本地路线:
ip -6 route add local aa:bb:cc:dd:ee:ff:11::/112 dev lo
在两个 VPS 上,我都可以从 VPS 内部本地 ping 子网中的任何 IP。到目前为止一切顺利。然后我在两台服务器上安装 ndppd 作为邻居发现协议工具:
apt-get install ndppd -y
然后我将创建如下配置文件/etc/ndppd.conf
:
proxy eth0 {
router no
rule aa:bb:cc:dd:ee:ff:11::/112 {
static
}
}
然后重新启动 ndppd 守护进程:
systemctl restart ndppd
执行此操作后,我可以从任何支持全局 IPv6 的服务器 ping 通 VPS1 的所有子网 IP,但执行过相同过程的 VPS2 只能 ping 通直接分配给其接口的单个 IPv6。
ip -6 route show
两个服务器上的和的输出sysctl -a | grep ipv6
相同。
这可能是因为 VPS2 连接的路由器吗?这是否意味着我无法在 VPS2 上使用 AnyIP?
我该如何进一步探究这个问题?也许检查一下 VPS2,看看为什么 ping 数据包没有到达或没有响应?
提供商本身说您必须为 VPS1 和 VPS2 的接口分配 IP。他们不知道 Linux 的 AnyIP 功能吗?
更新: 在 VPS2 上,如果将子网中的任何候选 IP 添加到接口并快速将其删除,则该单个候选 IP 变得可用。奇怪!
ip -6 addr add aa:bb:cc:dd:ee:ff:22:1234 dev eth0
ip -6 addr del aa:bb:cc:dd:ee:ff:22:1234 dev eth0
然后 IPaa:bb:cc:dd:ee:ff:22:1234
就可用了,并且可以全局 ping 通。执行此添加/删除操作后,我发现路由没有变化。