我在混合 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
答案1
不要使用ping6
,而是尝试 ssh 到::ffff:127.0.0.1
。
我认为这里的具体失败与有关ping6
,而不是 IP4 映射地址。
IPv4 映射的 IPv6 地址实际上不是使用 IPv4 吗,因此不适合ping6
?
Linux 有一个套接字选项 IPV6_V6ONLY,它可以阻止某些应用程序使用 IPv4 映射地址。但是,我认为ping6
具体问题在于它内部的工作方式。
这来自 netbsd,但我认为它涵盖了这个问题。
您应该知道,IPv4 映射的 IPv6 仍然是 IPv4 - 它仅以类似于 IPv6 的文本格式呈现(或者实际上,在调用操作系统的库或内核时,以二进制套接字地址格式呈现。)
对于双协议应用程序来说这不是问题——它们知道如何切换(隐式地,当使用正确的(现代)库调用时)。