IPv6 地址从哪来
IPv6 终端获取地址有两条路:无状态自动配置(SLAAC)依赖路由器通告(RA)携带前缀,终端据此自行生成地址;DHCPv6 则由服务器统一分配地址与 DNS 等参数。RA 报文里的 M(managed)标志与 O(other)标志决定终端要不要再去请求 DHCPv6,因此「终端拿不到该拿的地址」这类问题,先看 RA 是否在发、再看标志位怎么设。
基本信息
| 适用平台 | 思科 IOS / 华为 VRP / H3C Comware 三层设备 |
|---|---|
| RA 开关 | 华为与 H3C 用 ipv6 nd ra halt(undo 表示发送),思科用 ipv6 nd suppress-ra |
| 标志位 | M 标志 managed-address-flag / managed-config-flag,O 标志 other 类 |
| 前置条件 | 设备需开启 IPv6 转发能力(如思科的 ipv6 unicast-routing) |
典型使用场景
- IPv6 终端接入后完全拿不到地址,需要确认 RA 是否在发送
- 希望由 DHCPv6 统一管理地址与租期,需要把 M 标志置位
- 只需下发 DNS 等参数,地址仍由终端自生成,可只置 O 标志
- 排查终端同时持有多种 IPv6 地址的判定问题
- 规划地址管理方式时决定走 SLAAC 还是 DHCPv6
华为 VRP
华为 VRP
[Huawei-Vlanif10] ipv6 enable
[Huawei-Vlanif10] ipv6 address 2001:db8:10::1 64
[Huawei-Vlanif10] undo ipv6 nd ra halt # 确认 RA 正常发送
[Huawei-Vlanif10] ipv6 nd autoconfig managed-address-flag # M 位置位
<Huawei> display ipv6 nd interface Vlanif10思科 IOS
思科 IOS
SW-CORE-01(config)# ipv6 unicast-routing
SW-CORE-01(config-if)# ipv6 address 2001:DB8:10::1/64
SW-CORE-01(config-if)# no ipv6 nd suppress-ra
SW-CORE-01(config-if)# ipv6 nd managed-config-flag # M 位置位
SW-CORE-01(config-if)# ipv6 nd other-config-flag # O 位置位
SW-CORE-01# show ipv6 interface Vlan10
SW-CORE-01# show ipv6 nd interface Vlan10H3C Comware
H3C Comware
[H3C-Vlan-interface10] ipv6 enable
[H3C-Vlan-interface10] ipv6 address 2001:db8:10::1/64
[H3C-Vlan-interface10] undo ipv6 nd ra halt
[H3C-Vlan-interface10] ipv6 nd autoconfig managed-address-flag
<H3C> display ipv6 nd interface Vlan-interface10M 与 O 标志组合
| 标志组合 | 含义 | 终端行为 |
|---|---|---|
| M=1、O=1 | 地址与其它参数都由 DHCPv6 下发 | 终端主动请求 DHCPv6 |
| M=1、O=0 | 地址由 DHCPv6 分配 | O 在 M=1 时不单独生效,其它参数仍取自 DHCPv6 |
| M=0、O=1 | 地址由 RA 生成,其它参数走 DHCPv6 | 常见于只下发 DNS 信息的场景 |
| M=0、O=0 | 纯无状态自动配置 | 地址与参数都来自 RA |
三厂都有「停发 RA」的开关:华为与 H3C 是 ipv6 nd ra halt,思科是 ipv6 nd suppress-ra,默认是否发送随平台与版本不同。排查前先确认 RA 是否真的在发,再去看标志位与 DHCPv6 服务。
终端可能同时持有链路本地地址、RA 生成地址、DHCPv6 分配地址以及临时隐私地址,判断「地址对不对」前先把全量地址列出来,不要只看到第一条就下结论。
RA 是周期性发送的,间隔通常在几十秒量级,终端刚接入时可能要等到下一个周期才拿到地址。若希望接入即获得地址,可开启 RA 的快速发送能力,具体命令随平台与版本不同,以设备上的 ? 提示为准。