我可以 ping v6 映射的 v4 地址吗?
Can I ping a v6 mapped v4 address?
如果我有地址 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 流量运行良好。
您正在尝试做的事情称为 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 解析器)发出 IP 地址为 10.3.3.2 的主机名的 DNS 请求称为 DNS64 解析器,如 RFC-6147 中所述)。 Google 提供这个(除其他外):2001:4860:4860::6464
,所有人免费使用。因此,您只需配置您的 DNS 解析器来请求此 Google 主机(不要忘记删除任何其他解析器)。
请注意,Google public DNS64 解析器不支持私有 IPv4 地址。因此,在您的示例中,我们需要将 10.3.3.2 替换为 public 地址。所以,我选择1.3.3.2,也就是一个public地址。
为了方便大家测试,我创建了如下DNS记录:tstaupreti.fenyo.fr
,映射到1.3.3.2。
然后使用dig
,你可以很容易地检查它是如何工作的:
1- 首先,您可以请求标准 public DNS,例如 8.8.8.8(Google 的 public DNS,但不符合 DNS64),以提供 IPv4该主机的地址:
% dig @8.8.8.8 tstaupreti.fenyo.fr. a +short
1.3.3.2
%
2- 现在,您可以检查没有与主机名关联的 IPv6 地址:
% dig @8.8.8.8 tstaupreti.fenyo.fr. aaaa +short
%
3- 那么,让我们看看 Google DNS64 解析器会发生什么:
% dig @2001:4860:4860::6464 tstaupreti.fenyo.fr. a +short
1.3.3.2
%
这是正常的,因为我们请求了 IPv4 地址,而 DNS64 解析器当然是 IPv4 兼容的。
4- 但现在,让我们看看 DNS64 解析器如何为您计算映射:
% dig @2001:4860:4860::6464 tstaupreti.fenyo.fr. aaaa +short
64:ff9b::103:302
%
如您所见,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 网关 并将 64:ff9b::/96
的 IPv6 数据包路由到此 NAT64 网关。这样,无论 DNS64 映射返回什么值,您的 ICMP 请求 (ping) 都将转到 NAT64 网关。此网关会将您的数据包从 IPv6 转换为 IPv4(或多或少类似于标准 NAT IPv4 网关 - 请参阅 RFC 了解更多详细信息,其中存在细微差异)。
不幸的是,NAT64 将 64:ff9b::/96
定义为您无法在 Internet 上路由的保留前缀(这是因为此地址在提供 NAT64 网关的每个专用网络上都是相同的,例如 10.x.x.x 通常在专用网络上路由,因此,出于同样的原因,它不能在 Internet 上路由)。因此,没有使用 NAT64 前缀 64:ff9b::/96
的 public NAT64 网关(您可以使用另一个前缀,并将其路由到配置了这个不常见前缀的 NAT64 网关,但这是另一回事)。一些 Internet 服务提供商将此类地址路由到专用于其客户的私有 NAT64 网关。如果您的 ISP 不这样做,您需要自己在您的私有 IPv6 网络上安装这样的网关。为此,您可以将 Tayga 用于 Linux。
因此,在执行完最后一步(例如安装 Tayga)后,您将收到来自 ping 请求的 ICMP 回复。当向 Internet 上任何仅支持 IPv4 的服务器发送 ping 数据包时,它会起作用。
如果我有地址 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 流量运行良好。
您正在尝试做的事情称为 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 解析器)发出 IP 地址为 10.3.3.2 的主机名的 DNS 请求称为 DNS64 解析器,如 RFC-6147 中所述)。 Google 提供这个(除其他外):2001:4860:4860::6464
,所有人免费使用。因此,您只需配置您的 DNS 解析器来请求此 Google 主机(不要忘记删除任何其他解析器)。
请注意,Google public DNS64 解析器不支持私有 IPv4 地址。因此,在您的示例中,我们需要将 10.3.3.2 替换为 public 地址。所以,我选择1.3.3.2,也就是一个public地址。
为了方便大家测试,我创建了如下DNS记录:tstaupreti.fenyo.fr
,映射到1.3.3.2。
然后使用dig
,你可以很容易地检查它是如何工作的:
1- 首先,您可以请求标准 public DNS,例如 8.8.8.8(Google 的 public DNS,但不符合 DNS64),以提供 IPv4该主机的地址:
% dig @8.8.8.8 tstaupreti.fenyo.fr. a +short
1.3.3.2
%
2- 现在,您可以检查没有与主机名关联的 IPv6 地址:
% dig @8.8.8.8 tstaupreti.fenyo.fr. aaaa +short
%
3- 那么,让我们看看 Google DNS64 解析器会发生什么:
% dig @2001:4860:4860::6464 tstaupreti.fenyo.fr. a +short
1.3.3.2
%
这是正常的,因为我们请求了 IPv4 地址,而 DNS64 解析器当然是 IPv4 兼容的。
4- 但现在,让我们看看 DNS64 解析器如何为您计算映射:
% dig @2001:4860:4860::6464 tstaupreti.fenyo.fr. aaaa +short
64:ff9b::103:302
%
如您所见,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 网关 并将 64:ff9b::/96
的 IPv6 数据包路由到此 NAT64 网关。这样,无论 DNS64 映射返回什么值,您的 ICMP 请求 (ping) 都将转到 NAT64 网关。此网关会将您的数据包从 IPv6 转换为 IPv4(或多或少类似于标准 NAT IPv4 网关 - 请参阅 RFC 了解更多详细信息,其中存在细微差异)。
不幸的是,NAT64 将 64:ff9b::/96
定义为您无法在 Internet 上路由的保留前缀(这是因为此地址在提供 NAT64 网关的每个专用网络上都是相同的,例如 10.x.x.x 通常在专用网络上路由,因此,出于同样的原因,它不能在 Internet 上路由)。因此,没有使用 NAT64 前缀 64:ff9b::/96
的 public NAT64 网关(您可以使用另一个前缀,并将其路由到配置了这个不常见前缀的 NAT64 网关,但这是另一回事)。一些 Internet 服务提供商将此类地址路由到专用于其客户的私有 NAT64 网关。如果您的 ISP 不这样做,您需要自己在您的私有 IPv6 网络上安装这样的网关。为此,您可以将 Tayga 用于 Linux。
因此,在执行完最后一步(例如安装 Tayga)后,您将收到来自 ping 请求的 ICMP 回复。当向 Internet 上任何仅支持 IPv4 的服务器发送 ping 数据包时,它会起作用。