1 背景
通过VMWare打开一个OpenEuler系统镜像,想要install工具时却报错
OS
Errors during downloading metadata for repository 'OS':
- Curl error(6) Couldn't resolve host name for https://mirrors.openeulers.org/metalink?repo=22.03LTS_SP3/OS&arch=x86_64 [Could not resolve host: mirrors.openeuler.org]
- Curl error(6) Couldn't resolve host name for http://repo.openeuler.org/openEuler-22.03-LTS-SP3/OS/x86_64/repodata/repomd.xml [Could not resolve host: mirrors.openeuler.org]
Error: Failed to download metadata for repo 'OS': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
2 排查
通过错误信息能看出来可能是前往软件仓库时,无法对域名进行解析,所以要么时网络的配置问题,要么是DNS的问题。我们从这两方面逐步排查:
2.1 网络连接
- 先看VMWare的网络适配器是否配置正确
VMware 里,虚拟机有多种网络模式,像桥接模式、NAT 模式、仅主机模式等。如果有访问外网的需求,确保配置是桥接或者NAT。
配置完,测一下网络连通性
ping baidu.com
如果成功则OK,否则继续。
- 系统内检查网络连接是否正确
ifconfig -a
查看网络接口是否是UP状态
一开始忘记截图了,所以看到是没有IP的状态,上方<>中体现的是UP状态(诡异的是没有IP信息)
这里如果没有UP,就手动启用一下
ip link set defv ens33 up
或者
ifconfig ens33 up
这里的ens33
需要根据大家自己ifconfig里看到的接口来设置。
配置了还是不行则继续。
- 手动进行DNS配置
修改DNS配置文件,查看/etc/resolv.conf
cat /etc/resolv.conf
看看nameserver是什么,如果是 192.168.9.1 这种说明虚拟机使用的是本地网络中的DNS服务器。可以尝试手动把该地址修改为8.8.8.8(Google)或223.5.5.5(阿里云)
vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 223.5.5.5
再次尝试ping,通过则OK,否则继续。
虚拟机的网络配置和DNS修改后都没用,基本说明不是这两个方面的问题。
- 防火墙
还有一种可能性是防火墙的问题,通过
systemctl status firewalld
看一下防火墙状态,如果是active就关掉再试一次
systemctl stop firewalld
如果还是ping不通,继续找方法。(一般来说不建议把防火墙关掉)
- 前面的方法都试完还是没有解决
这个时候想起来前面ifconfig展示的结果比较奇怪,没有显示IP地址,说明配置可能并不是完全正确。我们可以用其他方式看一下网络连接状态
nmcli device status
这个时候突然发现,我们的ens33接口居然是disconnected状态,这说明这个接口目前并没有成功连接上,接下来就去查看一下网络接口的配置文件是否正确。
cd /etc/sysconfig/network-scripts/
ls
接下来就发现了问题,通过ifconfig看到的接口是ens33,但是该文件夹下没有这个配置,而是ifcfg-enp0s3
,打开后看到文件内DEVICE
和NAME
也配置的是enp0s3
,很可能就是这个问题导致网络连接失败。
尝试创建一个能和本地ens33接口对应的配置文件。
先备份原配置文件防止出错无法回滚。
cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s3.bak
重命名配置文件
mv /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-ens33
修改配置文件内容
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将文件中找到NAME
和DEVICE
字段(如果存在),将其值修改为ens33
,示例如下:
NAME=ens33
DEVICE=ens33
保存并退出编辑器。然后重启网络服务
systemctl restart NetworkManager
再次ping,发现ping成功了。通过nmcli查看状态也连接上了:
至此这个问题得到解决。