IPv6 DAD 与邻居请求——重复地址检测和 SLAAC 故障排查
如何分析 IPv6 重复地址检测、邻居请求、邻居广告、SLAAC 故障、缺少 NA 响应、重复 IPv6 地址以及数据包捕获中无 IPv6 连接。
IPv6 故障通常在 TCP、TLS、DNS 或 HTTP 之前开始。当主机有地址但无法可靠通信时,用户会搜索“IPv6 DAD 数据包捕获”、“邻居请求无响应”、“缺少邻居广告”、“重复的 IPv6 地址”、“SLAAC 不工作”和“无 IPv6 连接 pcap”。
PCAP 手术很有用,因为 IPv6 邻居发现依赖于小型 ICMPv6 交换,而这些交换很容易被错误地删除。应用程序故障之前的数据包通常可以解释一切。
爸爸是做什么的
重复地址检测会在将 IPv6 地址分配给接口之前检查该地址是否已被使用。在 DAD 期间,主机发送对暂定地址的邻居请求。
如果另一个节点响应,则该地址是重复的,不应使用。如果没有找到重复的地址,该地址就可以使用。
搜索者通常在操作系统输出中仅看到“IPv6 地址暂定”或“dadfailed”。 pcap 可以显示实际的邻居请求和任何回复。
邻居招揽和邻居广告
邻居请求询问谁拥有 IPv6 地址。邻居广告回答。
常见数据包证据:
- ICMPv6 邻居请求。
- 请求节点多播目的地。
- 目标地址。
- DAD 期间可能未指定源地址。
- ICMPv6 邻居通告响应。
- 链路层地址选项。
如果发送了 NS 数据包但 NA 从未返回,则问题可能是 L2 可达性、多播过滤、防火墙策略、重复地址处理或错误的链路假设。
SLAAC 和路由器通告上下文
SLAAC 依靠路由器通告来学习前缀和标志。 DAD 然后检查生成的地址。
有用的 IPv6 启动跟踪包括:
- 路由器征集。
- 路由器广告。
- 前缀信息选项。
- 生成的地址。
- 爸爸邻居征集。
- 任何邻居广告。
- DNS 选项(如果相关)。
如果只捕获后来失败的 TCP 连接,则自动配置原因可能不可见。
重复地址症状
重复的 IPv6 地址问题显示为:
- 地址暂定。
- 地址已被弃用或失败。
- 连接会短暂工作然后失败。
- 邻居缓存在 MAC 地址之间翻转。
- 从一个映像克隆的两个虚拟机发生冲突。
- 容器重用稳定的地址。
- 路由器记录重复检测。
数据包捕获可以证明另一个节点是否响应了 DAD,或者主机是否错误地认为存在重复节点。
失踪的邻居广告
如果主机向网关或对等方发送 NS,但未收到 NA,则应用程序连接失败。
可能的原因:
- 目标离线。
- VLAN 错误。
- 组播过滤。
- 防火墙阻止 ICMPv6。
- 交换机监听问题。
- 管理程序桥接问题。
- 地址实际上不在链接上。
- NAT 或代理设计混淆了邻居发现。
阻止 ICMPv6 通常会以看似无关的方式破坏 IPv6。
捕获点和多播
邻居发现大量使用多播。占领点很重要。
查看:
- 捕获是否在正确的接口上?
- 它是否看到多播帧?
- VM 桥接是否通过 ICMPv6?
- 是否存在 VLAN 标记?
- Wi-Fi 组播是否被过滤或转换?
- 开关镜是否捕获两个方向?
当捕获不完整时,单方面的捕获可能会使国庆民主党看起来破碎。
错误的应用诊断
IPv6 NDP 故障经常被误诊为:
- DNS问题。
- TLS 问题。
- 网络服务器问题。
- TCP 超时。
- 防火墙端口块。
- VPN 路由问题。
这些可能是下游症状。如果邻居请求失败,主机可能永远无法到达 L2 的对等点。
调试清单
使用此工作流程:
- 从界面启动时捕获。
- 保留路由器请求和路由器通告。
- 查找 DAD 邻居征集。
- 检查暂定地址目标。
- 寻找邻居广告。
- Check solicited-node multicast destination.
- 比较选项中的 MAC 地址。
- 检查网关邻居解析。
- 验证 VLAN 和捕获点。
- 保留包含失败的应用程序流的 NDP 数据包。
最终诊断
IPv6 DAD 和邻居请求失败发生在应用层之前。重要的证据是 ICMPv6 邻居请求、邻居通告、路由器通告上下文、多播传送、重复地址响应和捕获放置。
PCAP 手术有助于将那些小但决定性的数据包附加到失败的流中,以便“无 IPv6 连接”成为特定的 DAD、SLAAC、NDP、防火墙或 L2 诊断。