重复地址检测是什么
六层地址不需要人工申请,主机可以自行生成。为了避免两台设备同时使用同一个地址,地址在正式启用前要先做一次探测:主机以未指定地址为源,向目标地址对应的组播组发出邻居请求,如果没有收到任何应答,就认为地址可用并正式启用。
探测过程与状态
发出请求后,主机在检测期间把地址标记为待定状态,不会用它接收业务流量。一旦收到某台设备对该地址的邻居通告,说明地址已被占用,主机把地址标记为冲突并放弃使用。默认情况下发送一次探测、等待约一秒即可,参数可按需调整。
基本信息
| 触发时机 | 地址启用前,包括自动配置与手工配置 |
|---|---|
| 请求源地址 | 未指定地址 |
| 目标 | 待检测地址对应的组播组 |
| 成功判据 | 无应答,地址转为可用 |
| 失败判据 | 收到应答,地址标记为冲突并放弃 |
典型使用场景
- 排查地址冲突:系统日志或地址状态里出现冲突标记时,先定位冲突来源再修正配置
- 克隆设备上线:虚机或镜像克隆会让多台设备带同一地址,检测能阻止冲突设备启用
- 手工配置复核:手工指定地址前先确认该地址未被占用,避免影响在线业务
- 排障顺序:地址处于待定状态时业务不通,先看检测是否卡住,再看上层服务
- 自动化部署:批量部署脚本中等待地址脱离待定状态再继续,避免后续步骤失败
- 教学演示:观察探测过程,理解地址启用为什么要先问一句“有人用吗”
观察状态
观察状态
ip -6 addr show | grep -E 'tentative|dadfailed'
# tentative 表示检测中;dadfailed 表示检测到冲突,地址未启用
ip -6 neigh show | grep -i incomplete
# 邻居发现尚未完成,可结合判断链路是否正常
journalctl -k | grep -i duplicate
# 内核关于重复地址的提示常用于确认冲突时间点地址状态读法
| 状态 | 含义 | 是否可用 | 处理建议 |
|---|---|---|---|
| 待定 | 检测进行中 | 不可用 | 等待数秒后再看 |
| 可用 | 检测通过 | 可用 | 正常状态 |
| 冲突 | 检测到重复 | 不可用 | 先修正冲突来源 |
| 已弃用 | 超出首选期 | 可收不可新建 | 属正常生命周期 |
克隆虚拟机、批量镜像与手工复制配置是冲突的常见肇因:冲突出现后先修正来源,再重建地址,否则重启后仍会重复出现。
检测只在本链路内有效:它看不到其他链路或远端网络中是否使用了同一地址。跨网段规划时仍需在地址管理系统里做唯一性校验,不能依赖这项机制。