我有一些双栈网站。当我打开我的网站时,他们第一次使用 IPv4 连接,然后是 IPv6。如果我直接 ping IP 地址,IPv6 的第一次 ping 会失败,然后工作正常。等待 24 小时同样的问题,第一次 ping 失败。
2607:9000:0:35::fc3:9749
是否有任何缓存问题,但看起来不像 ARP 缓存问题?
我有一些双栈网站。当我打开我的网站时,他们第一次使用 IPv4 连接,然后是 IPv6。如果我直接 ping IP 地址,IPv6 的第一次 ping 会失败,然后工作正常。等待 24 小时同样的问题,第一次 ping 失败。
2607:9000:0:35::fc3:9749
是否有任何缓存问题,但看起来不像 ARP 缓存问题?
IPv6 不使用 ARP,因此没有 ARP 缓存。IPv6 使用 ND,主机维护邻居缓存和目标缓存等。
这是正常行为,您也经常在 IPv4 中看到它。有时,目标设备响应其 MAC 地址的时间过长,并且 ping 会超时。真的没有错。
IPv6 使用邻居发现 (ND)。它维护 IPv6 邻居缓存条目,其中更新 IPv6 地址和 IPv6 链路本地地址。根据您的观察,它看起来可能是您的设备需要一些时间来解决邻居问题。理想情况下,当接口出现时,路由器应该发送 NS(邻居请求)并且邻居需要使用类似于 ARP(请求和回复)的 NA(邻居广告)消息来回复其 MAC。如果您的设备需要更多时间来解决进程,请检查状态机中的邻居状态,该条目可能在一段时间内处于不完整条目。它预计会持续几毫秒,但如果需要更多时间,则预计不会。有关更多信息,请参阅(RFC 4861)。
我搬到了一个新的 VPS 提供商,它有同样的问题,然后我摆弄了一些设置
/etc/sysctl.d/99-sysctl.conf
并且未注释
net.ipv6.conf.all.forwarding=1
现在它工作正常,即使在 12 小时后 ping 也能正常工作。