路由器是否应该使用 SLAAC 进行 IPv6 地址分配?

网络工程 路由器 dhcp ipv6 射频卡 dhcpv6
2021-07-14 16:25:29

我对以下 2 个与 IPv6 相关的 RFC 感到有些困惑:

  • RFC 4862(IPv6 无状态地址自动配置)
  • RFC 7084(IPv6 CE 路由器要求)

RFC 4862 规定:

本文档中指定的自动配置过程仅适用于主机而不适用于路由器。由于主机自动配置使用路由器通告的信息,因此需要通过其他方式配置路由器。

RFC 7084 列出了其对地址分配的 WAN 侧配置要求之一:

WAA-1:IPv6 CE 路由器必须支持无状态地址自动配置 (SLAAC) [RFC4862]。

这里有矛盾吗?

路由器是否应该能够为其 WAN 接口自动配置 IPv6 地址?


为什么 RFC 4862 说

由于主机自动配置使用路由器通告的信息,因此需要通过其他方式配置路由器。

例如,如果我使用路由器将 LAN 连接到 ISP,则 ISP 的网络中是否没有路由器与我的路由器通话?

我会认为将 2 个(或更多)路由器链接在一起是完全合理的。在这种情况下,为什么不在第二个路由器的 WAN 接口上使用 SLAAC?


也许问题归结为主机和路由器之间的人为区分?来自 RFC 4862:

节点 - 实现 IP 的设备。

路由器 - 转发未明确寻址到自身的 IP 数据包的节点。

主机 - 任何不是路由器的节点。

但是主机(即托管服务器或应用程序的机器)不能也有路由表并充当路由器吗?我们再次有效地将 2 个路由器链接在一起。


编辑:我后来发现的一些额外信息......

Linux 内核处理 SLAAC,并严格遵循 RFC 4862。直到主机和路由器之间的区别。请参阅有关ip-sysctl的内核文档

  • 假设主机行为。这意味着将发送路由器请求,并且路由器广告将用于地址自动配置。
  • 仅当启用转发( /proc/sys/net/ipv6/conf/all/forwarding) 时,设备才被视为ROUTER这意味着不会发送任何路由器请求,并且路由器广告将被忽略。

事实证明,这种区别可以追溯到 IPv6 之前。查看参数/proc/sys/net/ipv4/ip_forward

这个变量是特殊的,它的变化将所有配置参数重置为其默认状态(RFC1122用于主机,RFC1812用于路由器)

3个回答

在 RFC 7084 中,它还指出:

W-1:当路由器连接到 WAN 接口链路时,为了无状态 [RFC4862] 或有状态 [RFC3315] 接口地址分配的目的,它必须充当 IPv6 主机。

简而言之,是的 - 路由器应该能够为其 WAN 接口自动配置 IPv6 地址。

但实际上,大多数 ISP 实施 DHCPv6 和 DHCPv6-PD ( RFC3633 ) 以进行下游地址分配以及前缀委派。

这可确保您的路由器不仅在其 WAN 接口上收到地址,而且还收到可在其内部 LAN 接口上使用的前缀。

RFC 4862 真正描述了单个管理控制中的路由器。RFC 7084 阐明了客户路由器的行为方式。这让 ISP 在如何向其客户支持 IPv6 方面具有一定的自由度。

对于PE路由器,CE路由器就是一个主机。从 LAN(二层域,包括 PE 到 CE 的链路)的角度来看,路由器实际上只是网络上的另一台主机。在大多数情况下,WAN 链接地址将通过 DHCP 或 PPP 静态定义,实际上并不使用 SLAAC。

我认为您错过了 RFC 7084 中您引用的内容之前的部分:

WAN侧要求:

W-1:当路由器连接到 WAN 接口链路时,为了无状态 [ RFC4862 ] 或有状态 [ RFC3315 ] 接口地址分配的目的,它必须充当 IPv6 主机

为什么 RFC 4862 说“由于主机自动配置使用路由器通告的信息,路由器将需要通过其他方式进行配置。”

编写该文档的人(以及它的前身 RFC 2462 )几乎肯定有一种世界观,认为有两种类型的设备。数量众多且管理负担重的“主机”和由主管网络管理员管理的“路由器”。

在 2000 年代初期,我们看到了始终在线的 DSL/电缆连接的兴起,并且家里拥有一台以上可以使用互联网连接的计算机的人数也在增加。由于许多 ISP 只会向客户提供一个 IP 地址(至少不收取额外费用),因此我们看到使用带有 NAT 的“家庭路由器”将多台计算机隐藏在这种连接后面的情况大量增加。NAT 允许“家庭路由器”向 ISP 隐藏它的真实性质,就 ISP 而言,“家庭路由器”就像一个主机。

这种使用起初只被 ISP 所“容忍”,但最终他们认为这毕竟不是一件坏事,并开始实际向他们的客户提供/销售“家用路由器”。因此,我们最终将大量这些设备放置在家庭和小型企业中。

直到最近,IETF 才开始正确探索“家庭路由器”和为它们提供服务的 ISP 在 IPv6 环境中应该如何表现。答案是“WAN 端”接口应该像主机一样,而“LAN 端”接口应该像普通路由器一样运行。由于没有 NAT,因此需要一些额外的细节来处理为 LAN 端提供地址。


关于 Linux 内核,它确实在启用路由时默认情况下会忽略 RA,但如果需要,可以覆盖此行为。