CentOS 7在VirtualBox中DAD冲突过多,IPv6静态IP配置故障求助
Hey,看起来你在CentOS 7上部署静态IPv6时碰到了DAD(重复地址检测)碰撞的麻烦——地址一直卡在tentative状态,还堆了好几个fe80开头的链路本地地址,NetworkManager反复重试也没解决对吧?我来给你梳理几个排查和解决的步骤:
1. 先确认静态IPv6地址是否真的冲突
DAD报错的核心原因大概率是你配置的1000::206/64在当前网络里已经被其他设备占用了。先验证这一点:
ping6 -c 3 1000::206
如果能收到回复,说明地址确实被占用了,换一个未被使用的静态IPv6地址就能解决大部分问题。
2. 调整网卡配置,优化DAD和自动配置行为
CentOS 7默认用NetworkManager管理网络,默认的DAD重试次数和自动配置逻辑可能会加剧这个问题。打开你的网卡配置文件/etc/sysconfig/network-scripts/ifcfg-enp0s3,添加或修改以下参数:
IPV6_DAD_TRANSMITS=1:把DAD重试次数从默认的3次降到1次,减少碰撞重试的循环IPV6_AUTOCONF=no:关闭自动配置,避免生成多余的链路本地地址IPV6_ADDR_GEN_MODE=eui64:确保链路本地地址用标准的EUI-64规则生成,减少异常地址堆积
修改后的完整配置示例参考:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=no IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=eui64 NAME=enp0s3 UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxx # 保留你原有的UUID DEVICE=enp0s3 ONBOOT=yes IPV6ADDR=1000::206/64 IPV6_DAD_TRANSMITS=1
3. 清理现有异常链路本地地址,重启网络服务
先手动清除已经堆积的fe80开头地址,再重启NetworkManager让配置生效:
ip -6 addr flush dev enp0s3 scope link systemctl restart NetworkManager
4. 验证配置是否生效
重启后用以下命令检查地址状态:
ip -6 addr show dev enp0s3
如果1000::206/64后面标注的是global(全局地址),而不是tentative,同时链路本地地址只有1个,说明配置成功了。再检查日志确认没有DAD报错:
journalctl -u NetworkManager | grep -i dad
5. 备选方案:切换到network服务管理网络
如果NetworkManager的行为还是异常,可以尝试暂时禁用它,改用传统的network服务管理网络:
systemctl stop NetworkManager systemctl disable NetworkManager systemctl start network systemctl enable network
之后再重复步骤4验证地址状态。
内容的提问来源于stack exchange,提问作者user1613049
相关产品推荐
相关产品推荐

