当我创建一个 6in4 隧道(例如在HE上)时,我会得到一堆地址和掩码:
IPv6 Tunnel Endpoints:
Server IPv4 Address: 216.66.80.162
Server IPv6 Address: 2001:470:70:625::1/64
Client IPv4 Address: [redacted]
Client IPv6 Address: 2001:470:70:625::2/64
Routed IPv6 Prefixes:
Routed /64: 2001:470:71:625::/64
Routed /48: 2001:470:6297::/48
在我看来,他们为我分配了一个 /64 子网,标记为路由 /64。所有应该去往那里的流量都会到达他们的服务器,并通过 IPv4 隧道传输到我(客户端 IPv4 地址)。要发送 IPv6 数据包,我只需要知道服务器 IPv4 地址,然后我只需封装并将它们发送到那里,声称我的 IPv6 地址是客户端 IPv6 地址。我不明白的是:
- 为什么客户端 IPv6 地址不在路由 /64下?如果我的 IP 与隧道不关联,响应如何路由回我?
- 按照路由器指南设置好一切后,网络上的设备开始获取路由 /48下的地址。那么客户端 IPv6 地址的用途是什么?
- 该指南并未要求输入服务器 IPv6 地址,其用途是什么?
该配置非常模拟 ISP 与客户之间的真实连接。只有 IPv4 端点地址是隧道特定参数 - 其余所有内容都可以在物理以太网接口上看到(例如,我们在工作场所收到的光纤以太网链路,它实际上具有类似的 IPv6和IPv4 配置)。
因此,如果您首先将参数列表分成两组,其中“客户端/服务器 IPv4”描述隧道链路的“物理层”(可以这么说),其余部分是贯穿隧道的“网络层”,这将有所帮助。
具有“客户端”和“服务器”地址的 /64 被分配给您与 ISP 之间的连接,它是与您的 LAN 分开的网段,因此具有单独的网络范围/前缀。
再次,将隧道想象为通往 HE(作为您的 ISP)的物理 WAN 接口。事实上,
Client IPv6
它本质上与您的物理路由器的“WAN 接口”地址相同,并且该Server IPv6
参数将是路由器的“默认网关”。如上所述,这两者应该分配给路由器上的不同接口。
该机制实际上是将它们路由到您。在隧道服务器上,您的每个“路由”前缀都配置为静态 IP 路由,如下所示(在 Linux 术语中):
本机 IPv6 的工作方式相同;例如,使用 DHCPv6-PD 获取 /64 会导致类似的路由出现在您所连接的 ISP 网关上。
(实际上,IPv4 中的路由也以完全相同的方式工作,只是相比之下,很少会将整个公共 IPv4 范围路由给您 - 也就是说,不参与 BGP。)
这是 6in4(或更普遍的是 IP-in-IP)隧道与以太网不同之处 - 它是点对点链路(类似于 ppp 接口),另一端只有一个设备。
因此,尽管我之前说过该
Server IPv6
地址是您的“默认网关”地址,但实际上隧道接口使它们都变得无关紧要,因为从技术上讲,仅将设备指定为路由的一部分就足够了。尽管如此,HE 还是为隧道分配了一个 /64,因为这是配置事物的“更正确”的方式,并且因为他们还销售相同快捷方式不起作用的物理连接,所以不妨保持两种产品之间的流程相同。
(此外,即使您不使用“服务器 IPv6”地址,HE也会将他们那边的“客户端 IPv6”地址用于其他目的 - 他们偶尔会 ping 您的路由器以确保隧道处于活动状态,并在几个月没有响应后将其删除。因此,如果您的路由器固件在制作时考虑到了 HE,制造商就知道需要设置“客户端 IPv6”地址以进行活动性检查,即使它实际上对于隧道操作不是必需的。)