IPv6 - 我的 ISP 如何知道如何将流量路由到我的委托子网?

ADS*_*103 4 router routing ipv6 isp

我的问题与这个问题有些相关:ISP 需要提供什么才能将本机 IPv6 /56 范围路由到多个 VLAN该问题集中在路由器的私有端,而我的问题集中在公共端,并且与如何ISP 履行其职责。

假设我的 ISP 为我提供了 IPv6 网络前缀 2001:db8:beef:a700::/56。假设我没有对其进行子网划分 - 我只是将路由器的 LAN 接口放在该子网中。假设我的路由器的 WAN 接口地址为 2001:db8:face:2000::2/64(通过 DHCP 分配),上游网关为 2001:db8:face:2000::1。当上游网关从公共 Internet 获取目标地址为 2001:db8:beef:a700::abcd 的数据包时,它必须将该数据包路由到位于 2001:db8:face:2000::2 的路由器。上游网关如何得知这是它必须执行的操作?

这个问题是在以下假设下提出的:

  • 客户设备未运行任何动态路由协议。我还没有看到运行路由协议的客户设备,因此我必须假设上游网关已通过其他方式获悉 2001:db8:beef:a700::/56 网络。那可能意味着什么?
  • 分发前缀的 DHCPv6 服务器未在上游网关上运行。相反,上游网关正在执行 DHCP 中继。这允许单个 DHCP 服务器为可能与社区或城镇关联的多个网络提供服务。

我尝试使用一些 Linux 主机和 pfSense 路由器对此进行测试,但我无法复制 ISP 提供的功能。我非常欢迎纠正我在学习 IPv6 时可能形成的误解。

San*_*ann 5

通常通过在 ISP 路由器和家庭路由器 (CPE) 之间使用DHCPv6-PD向消费者网络/客户提供 IPv6 。PD 代表前缀委派,是对常规 DHCPv6 选项的补充。它不仅向 CPE 提供链路地址,还为其提供一个完整的前缀,然后 CPE 可以使用该前缀在自己的网络中进一步分发。

为了能够将前缀路由到正确的 CPE,ISP 路由器必须记住哪些前缀被委托给了哪个 CPE。为此,它会记住 DHCPv6 客户端 ID (DUID)、其链路本地 (fe80:) 地址、委托前缀和租用时间。然后,它会自动为每个前缀创建一条静态路由,以 CPE 的链路本地地址作为下一跳,并在租约到期时再次删除该路由。

如果 ISP 路由器本身不是 DHCPv6 服务器(通常不是),则它会执行 DHCPv6 中继的角色。它将来自 CPE 的 DHCPv6 请求中继到中央 DHCPv6 服务器,该服务器将为每个 CPE 提供前缀。当中继这些消息时,ISP 路由器将在其中窥探以查看是否已委派前缀,并据此更新其路由。

作为示例,以下是有关此功能的一些 Cisco 文档

还有一些交换机可以监听 DHCPv6 流量。这样做是为了安全而不是为了路由。通过查看哪个以太网端口被分配了哪些 IPv6 地址和前缀,交换机可以确保其他端口上的设备无法使用其他 IPv6 地址欺骗数据包。这称为轻量级 DHCPv6 中继代理,并在RFC 6221中指定。