Linux虚拟机网络问题
问题
Linux虚拟机,如Ubuntu,deepin等,可能突然启动后网络不好使,这个网络不好使的通常表现为ping不出去与ifconfig只能看到127.0.0.1
➜ Desktop ping www.baidu.com
ping: www.baidu.com: Temporary failure in name resolution
➜ Desktop ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 775 bytes 54312 (54.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 775 bytes 54312 (54.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
➜ Desktop ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:0c:29:9d:1b:13 brd ff:ff:ff:ff:ff:ff
altname enp2s1
Ping 不出去表示网络连通性不可用,ifconfig表示本机的ip地址已经没有了
下面说解决办法
方法
ping www.baidu.com
# 发现网络问题
ifconifg
# 查看ip地址,确定问题
ip link
systemctl status NetworkManager
ip a
sudo systemctl start NetworkManager
# 解决问题
sudo ip link set ens33 up
ip link show ens33
sudo dhclient ens33
ip a
ping www.baidu.com
上面的简单几条命令,却构成了完整的debug链条,环环相扣,从排查问题到解决问题,接下来讲一下这个问题的详细解决分析过程
原理
首先 ping 命令用于发现网络中存在的问题,这是DNS层的错误不是ICMP层的,系统无法把域名节解析成ip地址,接着向下查询网络层

ifconfig可以看到没用任何非loopback接口在工作,所以系统没有对外通讯的可能性

Ip link

查看信息,ens33网卡存在,但是没有启用,相当于网卡插了但是网线没有插好,这说明网卡可以被识别,不是vmare到虚拟机之间的驱动问题,虚拟网卡被识别只是没有被启动
所以我们要做的就清晰了,现在要启动网卡

三条命令之间解决
现在我们来分析一下
首先打开ens33这个网卡,再查看网卡状态看到有UP,和LOWER_UP说明网卡现在处于开启状态,网卡刚开启还没有分配ip地址,使用dhcp服务为ens33请求一个ip地址,至此虚拟机就可以上网了

中间还有一个检查网络服务启动情况的步骤,但是感觉和这个没有太大的关系
为什么出现这个问题
因为Linux的接口和网卡,连接上不代表它就一定要开启,在物理机上发行版安装器会帮你来起来,NetworkManager会自动接管,但是在虚拟机上从Ubuntu->虚拟网卡->vmware->宿主机网卡->真实网络这个链路会变得模糊不清,ubuntu没有开启你的虚拟网卡,发生宿主机wifi切断,挂起,睡眠,更改网络模式等事情都会有这种情况的可能性
一般来说重启应该可以解决,当重启时,虚拟机检测到新接口就会自动拉起来并配置DHCP,但是也会发生重启无效的情况,就是ens33已经存在,但是被标记为DOWN,系统就不会管它,这时候我们应该启动ens33网卡,配置DHCP,这是多种问题导致的断网问题

浙公网安备 33010602011771号