这个错误通常是由于IP地址冲突、网络配置重复或网络服务状态异常导致的。以下是完整的解决步骤:
# 停止网络服务并清理接口
sudo ip addr flush dev eth0 # 将eth0替换为你的网卡名
sudo systemctl stop NetworkManager
sudo systemctl stop network # 如果使用network服务
sudo ip link set eth0 down
sudo ip link set eth0 up
sudo systemctl start NetworkManager
# 查看网卡名称
ip link show
# 检查网络配置文件
cat /etc/sysconfig/network-scripts/ifcfg-eth0 # CentOS/RHEL
# 或
cat /etc/netplan/*.yaml # Ubuntu 18.04+
# 或
cat /etc/network/interfaces # Debian/Ubuntu 16.04
确保配置文件中没有重复的IP地址设置,特别是:
IPADDR配置BOOTPROTO=static又有BOOTPROTO=dhcp# 清除ARP缓存
sudo ip neigh flush all
# 查看并清理重复路由
ip route show
sudo ip route del default via 192.168.1.1 dev eth0 # 删除重复的默认路由
# 方法1:完全重启网络
sudo systemctl restart network
sudo systemctl restart NetworkManager
# 方法2:禁用并重新启用网卡
sudo nmcli connection down "连接名"
sudo nmcli connection up "连接名"
# 方法3:重新加载网络配置
sudo nmcli connection reload
# 查看运行的服务
systemctl list-units | grep -E "(network|NetworkManager|networking)"
# 如果同时运行了NetworkManager和network服务,建议只保留一个
sudo systemctl disable network
sudo systemctl enable NetworkManager
# 查看是否有残留的网络命名空间
ip netns list
# 如果有残留,删除它们
sudo ip netns delete <namespace-name>
# 查看是否有多个dhclient进程
ps aux | grep dhclient
# 如果有多个,结束所有dhclient进程
sudo pkill dhclient
# 然后重新启动网络
sudo dhclient -r eth0
sudo dhclient eth0
有时文件系统错误也会导致此问题:
# 检查文件系统
sudo fsck /dev/sda1 # 替换为系统分区
# 检查/var/lib/NetworkManager目录
ls -la /var/lib/NetworkManager/
避免手动和自动配置混合使用
检查网络配置文件语法
# 对于netplan配置
sudo netplan generate
sudo netplan apply
# 检查NetworkManager连接配置
nmcli connection show
更新网络驱动
sudo modprobe -r e1000 # 卸载驱动,替换为你的驱动名
sudo modprobe e1000 # 重新加载
# 查看详细日志
journalctl -xe | grep -i "RTNETLINK\|eth0\|network"
# 查看内核日志
dmesg | grep -i network
# 最彻底的方法:重启服务器
sudo reboot
建议按照顺序尝试上述方法,通常方案1和方案B能解决大部分问题。如果是在虚拟机环境中遇到此问题,还需要检查虚拟网络配置。