CentOS 系统启动网卡时,遇到了错误提示:RTNETLINK answers: File exists 

 

原因分析

VMware 打开复制过来的操作系统文件,会新产生一个虚拟机配置文件,其与原始虚拟机网卡MAC地址不同的网卡。

对于CentOS这样的Linux系统,会把运行时的网卡MAC地址记入到 /etc/udev/rules.d/70-persistent-net.rules 文件中,这样克隆好的新系统里也保存了这个记录。

当新系统启动时,由于vmware已经为其配置了不同的MAC地址,因此系统会在启动扫描硬件时把这个新的MAC地址的网卡当做是eth1,并且增加记入上述文件中。而此时配置文件里的 /etc/sysconfig/network-scripts/ifcfg-eth0 里记录的还是原来的MAC地址,而这个MAC地址在新系统里是不存在的,所以无法启动。

 

解决方法

方法1:停止NetworkManager ,启动network验证失败,可参考

禁用NetworkManager (推荐关闭

systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
systemctl list-unit-files | grep NetworkManager

启用network

systemctl start network.service
systemctl enable network.service
systemctl list-unit-files | grep network

关闭防火墙 (推荐关闭

service firewalld stop
systemctl disable firewalld.service
systemctl stop iptables.service
systemctl disable iptables.service

重启服务器

chkconfig --list | grep -E "network|NetworkManager"
reboot

 

 

方法2:配置网卡信息验证失败,不推荐

vim /etc/udev/rules.d/70-persistent-net.rules    (若没有此文件,则新建一个)

找到含NAME="eth0"的那行直接删除,如下:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ac:95:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

编辑含NAME="eth1"的那行:"eth1"更改为"eth0"
 
编辑  vim /etc/sysconfig/network-scripts/ifcfg-eth0

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
DEFROUTE=yes
IPV6INIT=yes
IPV4_FAILURE_FATAL=no
PEERDNS=yes
NAME=eth0

IPADDR=172.16.132.136
NETMASK=255.255.255.0
GATEWAY=172.16.132.1
DNS1=119.29.29.29
DNS2=182.254.116.116

更改 HWADDR 地址跟上面rules文件的MAC地址一样。


 
最后重启系统

init 6 或者 reboot

 

 

方法3: 重写网卡验证失败,不推荐

ip addr flush dev eth0

 

 

方法4:查看网卡是否正确验证成功,解决问题

最后解决问题,是因为网卡配置错误

可用的网卡是 eth1 ,结果只使用了默认网卡 eth0,导致无法启动网卡

因此,有时需要检查网卡是 eth0、eth1、seth0 

 

 

参考推荐

RTNETLINK answers: File exists错误

RTNETLINK answers: File exists错误解决方法

Linux启动网卡时出现RTNETLINK answers: File exists错误解决方法