Linux 是否支持 IPv4 映射的 IPv6 地址?

Gen*_*ent 4 linux ipv6 ping ipv4

我在混合 IPv4 / IPv6 环境中工作。我读到可以使用此语法将 IPv4 地址映射到 IPv6 空间

::ffff:1.2.3.4(1.2.3.4 是 IPv4 地址)

Linux 是否支持这种表示法?所有这些都在我的服务器上失败:

ping6 ::ffff:1.2.3.4 # to the server IP
ping6 ::ffff:127.0.0.1
Run Code Online (Sandbox Code Playgroud)

Eig*_*ony 8

与其使用ping6,不如尝试通过 ssh 连接到::ffff:127.0.0.1

我认为这里的具体失败与ping6IP4 映射地址有关,而不是与 IP4 映射地址有关。

IPv4 映射的 IPv6 地址不是实际上使用 IPv4,因此不适合ping6吗?

Linux 有一个套接字选项 IPV6_V6ONLY,它可以防止某些应用程序使用 IPv4 映射地址。但是,我认为ping6具体问题是它内部的工作方式。

是来自netbsd,但我认为它涵盖了这个问题。

您应该知道 IPv4 映射的 IPv6 仍然是 IPv4 - 它仅以类似于 IPv6 的文本格式呈现(或者实际上,在调用操作系统的库或内核时,二进制套接字地址格式。)

对于双协议应用程序,这没有问题——它们知道如何切换(隐式地,当使用正确的(现代)库调用时)。

  • http://www.lists.apple.com/archives/ipv6-dev/2011/Oct/msg00003.html 有关`ping6`的解释 (2认同)