在虚拟机中运行的Ubuntu, 经常会因为莫名其妙的原因连不上网。 往往简单粗暴的方法是在 VMWare workstation >> 编辑 >> 虚拟网络编辑器
中彻底重置虚拟网卡。 但面对虚拟网卡凭空消失这种情况是没用的。有个比较万能的办法解决这个问题:
首先配置NET上网模式:
VMWare workstation >> 虚拟机 >> 设置 >> 网络适配器 >> NET模式
如果不是经常需要固定IP的话最好设置成NET模式。
然后在Ubuntu下查看网卡设备名称信息:
sudo lshw -class network
# 会有类似如下的输出信息
*-network
description: Ethernet interface
product: 82545EM Gigabit Ethernet Controller (Copper)
vendor: Intel Corporation
physical id: 1
bus info: pci@0000:02:01.0
logical name: ens33
version: 01
serial: 00:0c:29:b1:06:aa
size: 1Gbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 66MHz
capabilities: pm pcix bus_master cap_list rom ethernet physical logical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000 driverversion=7.3.21-k8-NAPI duplex=full ip=192.168.184.130 latency=0 link=yes mingnt=255 multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:19 memory:fd5c0000-fd5dffff memory:fdff0000-fdffffff ioport:2000(size=64) memory:fd500000-fd50ffff
# 其中一行 logical name: ens33 就是我们要找的网卡设备名称
查找网卡设备名称还有其他方法, 在此列举一下
ip a
# ------------------------------------------------------
# 输出如下信息, 包括网卡设备名:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:b1:06:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.184.130/24 brd 192.168.184.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feb1:6aa/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:83:c6:f2:1d brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
iwconfig
# ------------------------------------------------------
# 输出如下信息, 包括网卡设备名:
ens33 no wireless extensions.
docker0 no wireless extensions.
lo no wireless extensions.
netstat -rn
# ------------------------------------------------------
# 输出如下信息, 包括网卡设备名
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.184.2 0.0.0.0 UG 0 0 0 ens33
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 ens33
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.184.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
Ubuntu18及以下编辑网卡配置文件
查到网卡设备信息后, 编辑网卡配置文件
sudo vim /etc/network/interfaces
内容如下
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
# 使用动态IP
auto ens33
iface ens33 inet dhcp
# 或者使用静态IP
auto ens33
iface ens33 inet static
address 192.168.157.132
netmask 255.255.255.0
gateway 192.168.157.2
修改DNS
sudo vim /etc/systemd/resolved.conf
## 添加如下
DNS=8.8.8.8 114.114.114.114
## 状态
sudo systemctl status systemd-resolved
### 重启
sudo systemctl restart systemd-resolved
### 开机启动
sudo systemctl enable systemd-resolved
## 实际生效的文件
cat /run/systemd/resolve/resolv.conf
Ubuntu 20及以上,编辑yaml配置文件
编辑文件 vim /etc/netplan/01-network-manager-all.yaml
编辑时注意缩进
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.157.136/24
gateway4: 192.168.157.2
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
配置生效
sudo systemctl restart systemd-networkd