三个标志决定地址来源
路由器通告 RA 决定了终端从哪里拿地址、从哪里拿其他配置。前缀信息选项里的 A 位控制这个前缀能否用于无状态自动配置;RA 头里的 M 位表示“地址请去问 DHCPv6”;O 位表示“其他配置比如 DNS 请去问 DHCPv6”。默认路由则由 RA 的源地址直接给出,与 M、O 无关,这是最容易记错的一点。
基本信息
| A 位 | 位于前缀信息选项中,A=1 允许终端用该前缀做 SLAAC |
|---|---|
| M 位 | RA 头中,M=1 表示地址由 DHCPv6 分配 |
| O 位 | RA 头中,O=1 表示其他配置由 DHCPv6 提供 |
| 默认路由 | 来自 RA 的源地址,任何标志组合都不影响 |
| DNS 来源 | 可由 RA 中的 RDNSS 选项或 DHCPv6 提供 |
| 发送周期 | 路由器周期发送,终端也可主动发 RS 立即索要 |
典型标志组合
| 组合 | 地址来源 | 其他配置 |
|---|---|---|
| A=1, M=0, O=0 | SLAAC 自动生成 | 仅依赖 RA 与 RDNSS |
| A=1, M=0, O=1 | SLAAC 自动生成 | DHCPv6 提供 DNS 等 |
| A=0, M=1, O=1 | DHCPv6 分配 | DHCPv6 分配,企业最常见 |
| A=0, M=0, O=0 | 无自动配置,需手工 | 手工配置 |
查看与验证
查看与验证
ip -6 addr show dev eth0 # 有地址说明 SLAAC 或 DHCPv6 生效
ip -6 route show default # 默认路由的 next hop 来自 RA 源地址
sysctl net.ipv6.conf.eth0.accept_ra # 1 表示接受 RA,0 则完全不听
rdisc6 eth0 # 主动发送 RS 并打印 RA 详情
# 抓包只看 RA:tcpdump -ni eth0 'icmp6 and ip6[40] == 134'典型使用场景
- 企业内网想统一由 DHCPv6 管地址:把 RA 配成 A=0、M=1,终端就不再靠 SLAAC 自己生成后缀
- 只想用 RA 发地址、DNS 交给 DHCPv6:设置 A=1、M=0、O=1,混合模式在存量网络里常见
- 排查“有地址上不了网”:先看默认路由是否存在,RA 缺失时地址可能有但路由为空
- 排查 DNS 不生效:确认 O 位与实际 DNS 来源是否匹配,O=0 却指望 DHCPv6 下发 DNS 必然失败
- 核对终端安全策略:禁用 RA 接收的服务器必须静态配置路由与 DNS,否则启用 IPv6 后直接不可达
M=1 并不表示禁用了 SLAAC 地址:若前缀选项里 A 仍为 1,终端可能同时持有 SLAAC 地址与 DHCPv6 地址,出向连接用哪个取决于地址选择规则。