networking protocol_error ai_generated partial

IPv6: Duplicate Address Detection failed for fe80::1 on eth0, address conflict detected

ID: networking/ipv6-ndp-dad-failure

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
1Evidence
2023-11-20First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Linux kernel 6.0+ active
FreeBSD 13.2+ active
Windows Server 2022+ active

Root Cause

Duplicate Address Detection (DAD) failure occurs when a host attempts to configure an IPv6 address but receives a Neighbor Solicitation or Advertisement indicating the address is already in use on the link.

generic

中文

重复地址检测(DAD)失败发生在主机尝试配置 IPv6 地址但收到邻居请求或通告表明该地址已在链路上使用时。

Official Documentation

https://datatracker.ietf.org/doc/html/rfc4862

Workarounds

  1. 80% success Use ip -6 neigh show to list neighbors and identify the conflicting host, then manually remove the duplicate address: ip addr del fe80::1/64 dev eth0 && ip addr add fe80::2/64 dev eth0
    Use ip -6 neigh show to list neighbors and identify the conflicting host, then manually remove the duplicate address: ip addr del fe80::1/64 dev eth0 && ip addr add fe80::2/64 dev eth0
  2. 70% success Increase DAD retries to allow more attempts before failure: sysctl -w net.ipv6.conf.eth0.dad_transmits=3
    Increase DAD retries to allow more attempts before failure: sysctl -w net.ipv6.conf.eth0.dad_transmits=3
  3. 75% success Temporarily disable IPv6 privacy extensions to avoid address conflicts from temporary addresses: sysctl -w net.ipv6.conf.eth0.use_tempaddr=0
    Temporarily disable IPv6 privacy extensions to avoid address conflicts from temporary addresses: sysctl -w net.ipv6.conf.eth0.use_tempaddr=0

中文步骤

  1. Use ip -6 neigh show to list neighbors and identify the conflicting host, then manually remove the duplicate address: ip addr del fe80::1/64 dev eth0 && ip addr add fe80::2/64 dev eth0
  2. Increase DAD retries to allow more attempts before failure: sysctl -w net.ipv6.conf.eth0.dad_transmits=3
  3. Temporarily disable IPv6 privacy extensions to avoid address conflicts from temporary addresses: sysctl -w net.ipv6.conf.eth0.use_tempaddr=0

Dead Ends

Common approaches that don't work:

  1. 85% fail

    手动分配不同的 IPv6 地址而不检查冲突会忽略根本原因,例如路由器配置错误或重复的静态分配。

  2. 90% fail

    通过 sysctl net.ipv6.conf.all.dad_transmits=0 完全禁用 DAD 会移除对地址冲突的保护,并可能导致静默失败。

  3. 95% fail

    重启网络接口或系统可能暂时解决问题,但如果网络中仍存在重复地址,冲突会再次发生。