我可以 ping v6 映射的 v4 地址吗?

aup*_*eti 4 ipv6

如果我有一个地址10.3.3.2,将它映射到 v6 将导致 0:0:0:0:0:ffff:a03:302。我可以 ping 10.3.3.2,但是 ping 0:0:0:0:0:ffff:a03:302 会出现“No route to host”错误。现在,我无法从我的网络中 ping 任何 IPv6 地址,因此预计会出现错误。

我很好奇
ping6 0:0:0:0:0:ffff:a03:302

如果 IPv6 流量完美无缺。

Ale*_*nyo 5

您尝试执行的操作称为NAT64并在RFC-6146 中进行了描述

你必须做更多的事情才能让它发挥作用。

首先,映射地址必须以64:ff9b::(它是一个保留前缀,专门用于 NAT64)而不是0:0:0:0:0:ffff:(这个旧前缀,首次出现于 1995 年底,在 RFC-1884 中,不用于 IPv6 到 IPv4 网关 - 它被使用例如,映射由网络软件存储的地址,但当您想通过 IPv6 网络连接到 IPv4 主机时则不然)。

因此,将 10.3.3.2 映射到 ipv6 给出 64:ff9b::a03:302

但在现实世界中,没有人需要做这样一个奇怪的映射,你只需要向符合 DNS64 的解析器(这样的 DNS 解析器称为 DNS64 解析器)对 IP 地址为 10.3.3.2 的主机名进行 DNS 请求,如RFC-6147 中所述)。Google 提供了这个(以及其他):2001:4860:4860::6464,对所有人免费使用。因此,您只需配置您的 DNS 解析器来请求此 Google 主机(不要忘记删除任何其他解析器)。

请注意,Google 公共 DNS64 解析器不支持私有 IPv4 地址。因此,在您的示例中,我们需要将 10.3.3.2 替换为公共地址。所以,我选择1.3.3.2,这是一个公共地址。

为了您进行测试,我创建了以下 DNS 记录:tstaupreti.fenyo.fr,映射到 1.3.3.2。

然后使用dig,您可以轻松检查它是如何工作的:

1- 首先,您可以询问标准的公共 DNS,例如 8.8.8.8(Google 的公共 DNS,但不符合 DNS64),为此主机提供 IPv4 地址:

% dig @8.8.8.8 tstaupreti.fenyo.fr. a +short
1.3.3.2
%
Run Code Online (Sandbox Code Playgroud)

2- 现在,您可以检查没有与主机名关联的 IPv6 地址:

% dig @8.8.8.8 tstaupreti.fenyo.fr. aaaa +short
%
Run Code Online (Sandbox Code Playgroud)

3- 所以,让我们看看 Google DNS64 解析器会发生什么:

% dig @2001:4860:4860::6464 tstaupreti.fenyo.fr. a +short
1.3.3.2
%
Run Code Online (Sandbox Code Playgroud)

这是正常的,因为我们已经请求了 IPv4 地址,而且 DNS64 解析器当然是 IPv4 兼容的。

4- 现在,让我们看看 DNS64 解析器如何为您计算映射:

% dig @2001:4860:4860::6464 tstaupreti.fenyo.fr. aaaa +short
64:ff9b::103:302
%
Run Code Online (Sandbox Code Playgroud)

如您所见,NAT64 Google 解析器没有发现任何与 tstaupreti.fenyo.fr 相关联的 IPv6 地址,因此它尝试查看 IPv4 地址是否与此主机名相关联,发现 1.3.3.2 并因此将其转换到 NAT64 IPv6 格式: 64:ff9b::103:302

但这还不足以在使用 IPv6 ping tstaupreti.fenyo.fr 时获得 icmp 回复。

这是因为您还需要访问NAT64 IPv6 到 IPv4 网关并将 IPv6 数据包路由64:ff9b::/96到此 NAT64 网关。这样,无论 DNS64 映射返回什么值,您的 ICMP 请求 (ping) 都将转到 NAT64 网关。这个网关会将您的数据包从 IPv6 转换为 IPv4(或多或少类似于标准的 NAT IPv4 网关 - 请参阅 RFC 了解更多详细信息,有细微的变化)。

不幸的是,NAT64 定义64:ff9b::/96为不能在 Internet上路由的保留前缀(这是因为该地址在每个提供 NAT64 网关的专用网络上都是相同的,例如经常在专用网络上路由的 10.xxx,因此,对于同理,不得在互联网上路由)。因此,没有使用 NAT64 前缀的公共 NAT64 网关64:ff9b::/96(您可以使用另一个前缀,并将其路由到配置了此不常见前缀的 NAT64 网关,但这是另一回事)。某些 Internet 服务提供商将此类地址路由到专用于其客户的私有 NAT64 网关。如果您的 ISP 没有这样做,您需要自己在私有 IPv6 网络上安装这样的网关。为此,您可以使用Tayga for Linux。

因此,在执行完最后一步(例如安装 Tayga)后,您将收到来自 ping 请求的 ICMP 回复。将 ping 数据包发送到 Internet 上任何仅支持 IPv4 的服务器时,它将起作用。