我一直在阅读相互矛盾的资料来源并看到关于 CPE 路由器应如何分配 IPv6 地址的不同行为。
RFC3633似乎意味着每个主机都应该获得 /64,而RFC6204表示路由器应该为其每个 LAN 接口分配一个 /64(对于简单的住宅网络,每个主机仍然是一个 /64,对吗?)
同时,我已分配了一个 /56(通过隧道),并且我有一个运行 OpenWRT Barrier Breaker 的路由器。
我电脑上的 SLAAC 只给我前 /64 的 IP;为了自动(而不是通过手动分配)为每台电脑分配一个完整的 /64,我尝试过的两个 DHCPv6 服务器(odhcpd 和 dnsmasq)仍然只分配前 /64 的 IP。
更具体地说,对于 dnsmasq,我尝试过,dhcp-range=2001:xxxx:e001:c501::,2001:xxxx:e001:c5ff::
但它错误地显示“DHCPv6 范围不一致”,并dhcp-range=2001:xxxx:e001:c500::,56
给出“前缀长度必须至少为 64”。
因此,实际的 DHCPv6(和 SLAAC)似乎只对整个网络使用单个 /64,但我只读到每个主机都应该获得一个 /64。
那么哪个是正确的?
编辑:
如果整个网络的 /64 是住宅站点的“正确”分配,那么为什么当前最佳实践为每个站点分配 /56 或 /48?
我假设路由器会为每个主机分配一个 /64。
PS,我的路由器接口上的 IP 如下所示:
$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 2001:xxxx:e001:c500::1/56 scope global
valid_lft forever preferred_lft forever
inet6 fdd0:da3b:f524::1/56 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
7: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
8: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a2f3:c1ff:fed4:3678/64 scope link
valid_lft forever preferred_lft forever
22: sit1: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1280
inet6 2001:xxxx:f000::32af/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::7892:987e/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::c0a8:101/64 scope link
valid_lft forever preferred_lft forever
答案1
每个广播域都会获得一个 /64。如果您的主机是隔离的,因此每个子网应该只有一个主机,您可以为单个主机分配整个 /64。这主要用于服务器,您无论如何都会使用静态 IP 分配。如果您发现需要 SLAAC 或有状态 DHCPv6,您可能应该为整个网段分配一个 /64,而不是单个主机。
答案2
IPv6 通常对每个子网使用一个 /64。路由器向 LAN 发送路由器通告或 RA。此 RA 包含 LAN 的基本设置,例如要使用哪些前缀(通常为单个 /64)、路由器是否可以用作默认网关、是否允许主机自动配置以及 LAN 上是否有 DHCPv6 服务器(以及 DHCPv6 服务器的类型:有状态还是无状态)。默认 DNS 解析器也可以在 RA 中发送。
是的,这意味着运行没有 DHCP 的网络并让一切自动运行完全没有问题。
如果允许主机自动配置,它们将采用 RA 中公布的 /64 并在该 /64 中为自己提供一个或多个地址。可能让您感到困惑的是,这显示为例如2001:db8:aa:b::12ab/64
。这并不意味着主机获得整个 /64,而是意味着主机是一部分在地址为 的 LAN 上2001:db8:aa:b::12ab
,该 /64 的
DHCPv6 可以以两种方式工作:有状态和无状态。有状态类似于您在 IPv4 中习惯的方式:DHCP 服务器将地址分配给主机并为其提供配置信息,如 DNS 解析、NTP 服务器等。无状态更简单:它仅提供配置信息。在 RA 中传达了 LAN 上可用的 DHCPv6 服务器类型。
自动配置和无状态 DHCPv6 的组合非常常见。