FIBERIOT / 基础知识
给设备配好IPv6地址后,系统可能先显示“暂定”,过一会儿才允许正常使用。它通常不是在等待交换机分配网速,而是在做重复地址检测,简称DAD:先看看同一条链路上是否已有别的节点使用这个地址。本文用经典DAD流程解释原理,具体开关、例外和扩展以实际协议栈为准。

01地址写进配置,不等于已经可以使用
可以把地址配置想成准备给房间挂门牌,但挂上去之前,还要问问邻居有没有重号。这个类比解释的是“先检查,再使用”,并不意味着IPv6里有一位管理员逐台登记。检测工作由准备使用地址的节点协议栈完成,交换机主要承担相应链路帧的转送。
暂定地址是已经选出、但还没有按正常规则完成启用检查的地址。在经典DAD过程中,它不能像已启用的普通单播地址那样承担常规通信。看到管理界面已经列出这个地址,应同时看它的状态,而不是只看字符串是否出现。
一块接口也可能有不止一个IPv6地址。检测对象是某个地址在所在链路上的使用情况,不是给整台设备发一张永久合格证。某个地址通过检查,并不自动证明其他地址、网关设置或应用服务都正确。
02检测的询问藏在NS报文里
IPv6邻居发现使用ICMPv6消息,NS是邻居请求的简称,类型值为135。做DAD时,节点把候选地址放进NS的目标地址字段,意思可以理解为:我要使用这个地址,链路上是否已经有人在用?这不是向DNS询问名字,也不是向服务器申请新地址。
此时IPv6源地址使用未指定地址,常写成两个冒号“::”。因为候选地址还处于暂定阶段,不能先把它当成普通已生效的源地址。目的则是与候选地址对应的被请求节点组播地址,检测范围在本链路内;IPv6这里用的是组播,不是IPv4式广播。
“源地址未指定”只是在描述IPv6这一层,不代表以太网帧没有源MAC。抓包界面会同时呈现不同层的字段,必须分清它们的含义。也不要把NS中的目标地址,与承载这条查询的组播目的地址混成同一个东西。
03有人已在使用,NA怎样表达冲突线索
如果链路上一个节点已经使用候选地址,它可以按邻居发现规则回应NA,也就是邻居通告,类型值为136。对源地址为未指定地址的这类查询,回应面向链路内所有节点组播,而不是单播给“::”。图中橙色消息因此表现为链路内的组播通知。
准备启用地址的节点若收到指向其暂定地址的有效冲突证据,就不能继续把该地址当作唯一地址启用。还可能存在两台节点同时检测同一候选地址的情况,因此DAD处理并非只看有没有一条普通NA,相关NS和实际实现规则也很重要。
这里不把所有报文都当成可信证明。消息需要满足协议有效性检查,网络也可能出现回环或异常消息。增强DAD等扩展会进一步帮助识别回送的查询。本文没有画出全部选项和状态机,现场判断要结合系统日志、适用实现和原始报文。

04没发现重复,为什么还不能说永远唯一
正常完成规定的检测过程且未发现重复后,节点可以按规则推进地址状态。它表达的是当前检测范围与条件下没有观察到冲突,不是对未来所有接线、所有设备开机顺序作永久保证。另一台设备以后接入、地址配置变化,都会改变现场情况。
更不能把DAD通过写成“互联网上没人使用同一个地址”。它主要检查同链路范围,相关链路本地消息不会由普通路由器跨链路转发。图里的两片网络即使都写着候选符号X,也只是帮助读者理解检测范围,不表示可以任意重复部署全局地址。
如果网络把本来应能互相观察的节点隔开,或者过滤了检测所依赖的消息,检测结果就有条件限制。排查时应核对真实二层范围和报文能否到达,而不是拿“没有收到反对”代替“已经完整检查了所有设备”。
05地址可用,与业务连通是几道不同的门
DAD关心重复地址,路由关心数据往哪里走,应用则关心对方服务是否运行、回复是否有效。这几件事不能互相代替。地址状态正常后,仍可能因为路径、回程、安全策略、监听接口或应用配置而无法完成工业数据交换。
反过来,链路指示灯正常,也不能证明DAD已经通过。灯通常反映物理链路层面的连接状态,无法替终端协议栈确认某个IPv6地址的启用状态。只凭灯亮就不断重启交换机,容易把真正的地址或策略问题留在原处。
同样,不应为了让界面更快显示可用,就随意关闭检测或缩短等待。系统可能提供特殊模式、例外或可调参数,但是否适用要由实际设计与文档决定。科普中的简化流程不是对生产网络的统一修改指令。

06放进工业光通信链路,应核实谁处理IPv6
飞畅官网的mini工业轨式5路百兆电交换机,是工业设备互联的一类真实产品背景。本文用它说明链路承载场景,不根据产品名称推断其拥有IPv6终端协议栈、DAD日志界面或可配置的组播控制功能,具体能力须查对应资料。
在常见透明二层传送场景中,执行地址检查的是两端真正使用IPv6地址的设备,交换机或光电传输设备并不会自动变成每个终端的DAD代理。若链路包含路由、代理或特殊组播功能,还要按实际配置重新确认消息边界,不能只根据线缆外形判断。
因此,采购或验收时应问清楚:哪台设备生成并使用地址,哪台只承载帧,哪些设备会检查、过滤或代理邻居发现消息。IPv6能力、透明转送能力和管理界面支持IPv6,是不同的能力描述,不要只凭一个“支持网络”标签合并理解。
抓包时还要说明观察位置和时间范围。在一个端口没有看到通告,只能说明这次采集没有记录到它,不能直接推断整个网络永远没有冲突。应把地址状态变化、接口编号和报文时间放在一起核对,并确认采集过程是否覆盖启用前的检测窗口;不完整的记录要明确标为待确认。
07怎样把“正在等”变成可核对的证据
先保存地址字符串、接口名称、当前状态和发生时间,再在允许的测试环境中观察NS、NA及系统日志。抓包时同时看ICMPv6类型、IPv6源与目的、目标地址,以及接口所在链路,避免只按报文列表里的一个名字下结论。
如果发现重复,应追查实际配置来源与设备归属;若一直停在暂定或出现失败,则要核对链路、组播传送及实现日志。不要仅凭一条通告就断言某设备遭到攻击,也不要把地址冲突日志自动解释成某款交换机硬件损坏。
最实用的结论是:先理解地址状态,再理解检测消息,最后验证真实业务。DAD能帮节点避免在本链路盲目启用重复地址,但它既不是设备身份认证,也不是加密或整网连通性测试。保留这些边界,才能把协议现象解释清楚。
资料依据
IETF RFC 4862第5.4节:暂定地址与DAD;RFC 4861第7.2节:NS/NA处理与源地址未指定时的回应;RFC 7527增强DAD:回送消息识别的扩展背景。真实产品背景:飞畅mini工业轨式5路百兆电交换机。通用协议说明不证明该型号提供全部图示诊断或IPv6管理功能。
现场常见问题
暂定的IPv6地址能直接用于正常业务吗?
在本文解释的经典DAD过程中,暂定地址还未按规则完成启用检查,不能当作已启用普通单播地址使用;特殊模式和例外须查实际协议栈资料。
DAD查询为什么用两个冒号作为源地址?
“::”是IPv6未指定地址。候选地址尚未启用,不能先当作普通源地址;NS内的目标地址字段写候选地址,承载查询的目的则是对应的被请求节点组播。
DAD通过,为什么应用仍可能不通?
DAD检查同链路重复地址,不检查完整路由、回程、服务监听或业务协议,也不提供身份认证。地址状态正常后仍应分别核验这些条件。
适用边界与延伸阅读
经典IPv6 DAD概念与选定字段,非全部扩展或特定产品功能保证;符号X不表示可随意重复全局地址。


