仅当目标机器 ping 回来时才可以进行 IPv6 ping

仅当目标机器 ping 回来时才可以进行 IPv6 ping

我遇到了一个典型的“a 可以 ping b 但 b 不能 ping a”的问题。我使用 IPv6 进行 ping。我的情况比较特殊,即“b”在 ping “a”之后立即可以 ping “a”。经过几次尝试,我意识到如果我使用“-I eth0”指定应使用的网络接口,则一切都会正常工作(是的,Linux 机器上的两个接口位于同一子网中)。我仍然想了解机器“b”回复 ping 后会发生什么变化,并希望获得一些专家知识。使用 IPv4 进行 ping 在两个方向上都可以正常工作。如果我停止从“b”进行 ping,“a”仍然可以 ping “b”,直到我用 Ctrl-C 停止它。即使我立即尝试,再次尝试也会失败,因此我相信这不是 upcache 问题。一些信息:

机器“a”

操作系统:Windows(在防火墙例外中添加了“ICMPv6”)

IPv6 地址:fe80::21c:1cff:fe00:3de3

机器 "b":

操作系统:Linux Busybox

IPv6 地址:fe80::21c:1cff:fe00:3de4

尝试了“ping”和“ping6”二进制文件

答案1

链路本地 IPv6 地址 您始终需要指定接口。原因是每个网络都使用相同的地址块(前缀):地址fe80::21c:1cff:fe00:3de3仅在特定链接(接口)上是唯一的。在不同的链接上,相同的地址可能用于完全不同的设备。

因此,本地链接地址通常不太适合手动使用,因为每次都需要指定接口。在另一台计算机上,接口名称可能不同,因此您不能直接向某人发送带有地址的链接,因为您不知道该链接在对方那边的接口名称是什么。

为了避免指定接口,您需要具有可路由的全局范围的“真实”IPv6 地址。

例如,您可以使用 https://cd34.com/rfc4193/,您输入一个 MAC 地址,它会进行计算并返回一组可供使用的 IPv6 地址。

在您的例子中,一台计算机 ping 另一台计算机后,其 IPv6 地址 及其界面目标计算机知道这一点,因此它可以 ping 回去。

相关内容