在学操作系统和计算机系统这两门课时经常会用到虚拟机(Ubuntu 22.04),有时候会碰到虚拟机无法自动连上网的问题,或者刚启动的时候还能连上网,用了一段时间就突然断了。网上看到的很多教程都没有解决这个问题,于是打算自己写一篇文章来记录下。
尝试ping一个网站时会出现:
1、首先使用ip a指令查看本机的网络接口的信息:
可以看到有两个接口信息:lo接口用于本地通信,对于联网没有实际影响;而另一个接口ens33则是用来联网通信的接口,可以看到此时它的state为DOWN,表明该接口目前没有启用,导致无法联网。
2、想要启用这个接口只需要在终端输入:
sudo ip link set ens33 up #将ens33换成自己在ip a看到的网络接口
此时再次输入ip a可以看到ens33的state已经变为UP了。
但是尝试ping一个网站时仍然会出现错误
原因在于这个接口还没有分配IP地址。
3、只需在终端输入:
sudo dhclient ens33
就能自动为ens33分配一个IP地址,此时也恢复了联网
但如果每次开机都会出现无法联网问题,每次都要输入这两条指令也很麻烦...
4、我们可以通过修改netplan(Ubuntu17.0以后引入的网络管理工具)的配置文件来完成这两个操作,具体如下:
(1)在终端输入:
ls /etc/netplan/
可以找到netplan的配置文件,通常以.yaml结尾
(2)输入指令编辑这个文件:
sudo nano /etc/netplan/01-netcfg.yaml
(3)在这个文件中添加如下内容:
network:
version: 2
ethernets:
ens33:
dhcp4: true
如果原本已经有了这些内容并且还有一行,可以选择去掉下面这一行。optional为true时该接口如果没有成功启用,系统也能正常启动,去掉后系统会等待网络接口完成配置后才启动(可能会增加开机延迟)。
optional: true
(4)保存并退出即可。