我正在 Ubuntu 中测试 IPv6 的实现。我的 Ubuntu Linux 客户端正确地从服务器获取 RA 并在通告的前缀中配置一个地址。接下来,它通过 DHCP 获取另一个带有掩码的地址/128
。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether f8:a9:63:0c:3c:cb brd ff:ff:ff:ff:ff:ff
inet6 2001:xxxx:1f15:yyyy::9/128 scope global
valid_lft forever preferred_lft forever
inet6 2001:xxxx:1f15:yyyy:faa9:63ff:fe0c:3ccb/64 scope global dynamic
valid_lft 82162sec preferred_lft 10162sec
inet6 fe80::faa9:63ff:fe0c:3ccb/64 scope link
valid_lft forever preferred_lft forever
我对此地址的掩码很感兴趣/128
,它暗示着点对点链接。为什么掩码是/128
而不是/64
?
这是 DHCPv6 的正常行为还是与我的 DHCP 服务器的配置有关?
答案1
是的,这是正常行为。DHCPv6 服务器提供地址(使用 IA_NA 选项),但不会告诉客户端有关子网的任何信息。因此,客户端只需在接口上配置单独的地址。到子网的任何路由均由 RA 提供。如果 RA 在没有自动配置选项的情况下宣布前缀,则客户端不会自动配置地址,但会为本地子网添加路由。
这种职责分离是有意为之。DHCPv6 服务器有权分配地址(以及其他事项),但没有权力谈论网络状态。DHCPv6 服务器通常甚至不在本地子网上,而是通过中继与客户端通信。客户端直接与之通信的设备是路由器。因此,在 IPv6 中,路由器使用 RA 告知客户端网络状态(前缀、默认网关、路由等)。额外的配置选项和可选的地址分配由 DHCP 服务器完成。
这样,客户端可以快速响应网络变化,同时仍然可以从 DHCPv6 接收更多长寿命信息。