VMWare系列-虚拟机网络异常问题排查
前面几句废话
最近因为租用的一台云服务器快要到期了,不准备再续费了。想把线上的一些数据备份到本地的虚拟机上,正好本地有一台已经安装好系统的 VMWare 虚拟机,跟云服务器的操作系统一样,想偷个懒直接启动来用。没想到重新配置了IP 之后,网络竟然不通,从配置检查到问题分析,折腾了一个多小时,故记录一下今天踩的坑。
问题现象
宿主机和虚拟机之间的网络不通,ping 不通。重启虚拟机网络之后,网卡报错如下:
“Failed to start LSB: Bring up/down”网络报错。
使用提示命令
1 | systemctl status network.service |
查看可以发现错误行:
1 | [root@VM-0-9-centos ~]# systemctl status network.service |
问题分析
回顾操作过程,原本可用的网络,经过了一次修改IP,运行过一段时间,再启动反而出现问题了。那么这个异常很可能跟这次修改IP有关系,开始排查配置文件。
根据排查情况分析下来,这样造成的原因是配置文件中 MAC 与当前网卡MAC 不一致,配置多网卡的 VMWare 虚拟机容易出现这个问题。具体原因不详,如有了解的朋友,还请不吝赐教。
简单粗暴的解决方案,修改一下配置文件即可解决问题。
解决当前问题的方法
- 方法1:修改MAC地址
实际使用的MAC地址和配置文件的MAC地址不匹配,直接修改/etc/sysconfig/network-scripts/ifcfg-eth0 和/etc/udev/rules.d/70-persistent-net.rules 文件的 MAC 地址一样就好了。
1、用命令查看当前MAC地址
1 | ifconfig -a |
2、修改/etc/sysconfig/network-scripts/下以ifcfg开头的网络链接文件
例如我环境的这个配置文件是ifcfg-eth1:
1 | vim /etc/sysconfig/network-scripts/ifcfg-eth0 |
将 HWADDR=”52:54:00:59:76:e8” 改为 HWADDR=”bc:24:11:85:b8:d6”
3、systemctl restart network.servic重启网络成功,再次查看状态即可正常。
- 方法2:禁用NetworkManager
在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。
network 和 NetworkManager 服务有冲突,这个好解决,直接关闭 NetworkManger 服务就好了,并且禁止开机启动,之后重启就好了。
1 | systemctl stop NetworkManager |
重启之后,网络恢复正常。
网上找到的其他方法
- 方法3:修改网卡文件名
上面两种操作都可以正常完成。这个方法是在网上查的方法,看起来相对复杂一点儿,原理跟方法1一样,但是是反过来修改硬件信息的,暂时未做验证,列出来仅供参考。
1、修改网卡名和配置文件
1 | mv /etc/sysconfig/network-scripts/ifcfg-enoeno9 /etc/sysconfig/network-scripts/ifcfg-eth0 |
修改配置文件里面name和device
1 | vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
1 | TYPE=Ethernet |
2、修改/etc/sysconfig/grub,添加net.ifnames=0 biosdevname=0
1 | vi /etc/sysconfig/grub |
1 | GRUB_TIMEOUT=5 |
3、手动生成70-persistent-net.rules以及其他方法
查看接口的MAC地址
1 | ip link show |
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT |
生成文件
1 | vi /etc/udev/rules.d/70-persistent-net.rules |
1 | SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?”, ATTR{address}”00:0c:29:28:ac:54″, ATTR{type}”1″, KERNEL==”eth”, NAME=”eth0″ |
最后重启机器:
1 | init 6 |
系统启动后网络可恢复正常。
也有帖子说执行 ip addr flush dev eth0 结果就好了,可以有朋友试过?
方法千千万,能有一个解决问题就好。
结束
又踩了一个坑。