首页/网络/IP 与子网速查/DAD 重复地址检测:用 NS 从 :: 发出探测
IPv6 与下一代网络42 条

DAD 重复地址检测:用 NS 从 :: 发出探测

地址启用前先做 DAD:以 :: 为源、向该地址的 solicited-node 组播发 NS;收到 NA 即冲突,地址标记 dadfailed;无应答才启用。DAD 只保护本链路段,跨网冲突它看不到。

IP 与子网速查网络更新于 2026-10-13

重复地址检测是什么

六层地址不需要人工申请,主机可以自行生成。为了避免两台设备同时使用同一个地址,地址在正式启用前要先做一次探测:主机以未指定地址为源,向目标地址对应的组播组发出邻居请求,如果没有收到任何应答,就认为地址可用并正式启用。

探测过程与状态

发出请求后,主机在检测期间把地址标记为待定状态,不会用它接收业务流量。一旦收到某台设备对该地址的邻居通告,说明地址已被占用,主机把地址标记为冲突并放弃使用。默认情况下发送一次探测、等待约一秒即可,参数可按需调整。

基本信息

触发时机地址启用前,包括自动配置与手工配置
请求源地址未指定地址
目标待检测地址对应的组播组
成功判据无应答,地址转为可用
失败判据收到应答,地址标记为冲突并放弃

典型使用场景

  • 排查地址冲突:系统日志或地址状态里出现冲突标记时,先定位冲突来源再修正配置
  • 克隆设备上线:虚机或镜像克隆会让多台设备带同一地址,检测能阻止冲突设备启用
  • 手工配置复核:手工指定地址前先确认该地址未被占用,避免影响在线业务
  • 排障顺序:地址处于待定状态时业务不通,先看检测是否卡住,再看上层服务
  • 自动化部署:批量部署脚本中等待地址脱离待定状态再继续,避免后续步骤失败
  • 教学演示:观察探测过程,理解地址启用为什么要先问一句“有人用吗”

观察状态

观察状态
ip -6 addr show | grep -E 'tentative|dadfailed'
# tentative 表示检测中;dadfailed 表示检测到冲突,地址未启用
ip -6 neigh show | grep -i incomplete
# 邻居发现尚未完成,可结合判断链路是否正常
journalctl -k | grep -i duplicate
# 内核关于重复地址的提示常用于确认冲突时间点

地址状态读法

状态含义是否可用处理建议
待定检测进行中不可用等待数秒后再看
可用检测通过可用正常状态
冲突检测到重复不可用先修正冲突来源
已弃用超出首选期可收不可新建属正常生命周期
克隆虚拟机、批量镜像与手工复制配置是冲突的常见肇因:冲突出现后先修正来源,再重建地址,否则重启后仍会重复出现。
检测只在本链路内有效:它看不到其他链路或远端网络中是否使用了同一地址。跨网段规划时仍需在地址管理系统里做唯一性校验,不能依赖这项机制。

易错点

  • 以为这项检测能防跨网冲突,它只在本链路生效,跨网段冲突无法发现
  • 看到地址处于冲突状态仍继续排查业务,地址实际未启用,业务不通属于必然
  • 克隆设备批量上线前不做唯一性校验,多台设备争用同一地址,链路状态反复抖动

数据来源与参考

  • RFC 4862 §5.4(重复地址检测)
  • RFC 4861(邻居发现)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌