Skip to content

Linux

虚拟机的 DNS

查看当前 DNS 配置

bash
cat /etc/resolv.conf

测试 DNS 解析

bash
# 测试能否解析域名
nslookup docker.mirrors.ustc.edu.cn
dig docker.mirrors.ustc.edu.cn

# 测试能否拉取镜像
sudo docker pull openjdk:17-jdk-alpine

输出:

bash
nameserver 127.0.0.53

这里的 DNS 配置指向了本地 127.0.0.53(systemd-resolved 的本地 stub resolver),这个配置本身没问题,但上游 DNS 服务器可能没有正确设置。

查看当前上游 DNS 配置

bash
resolvectl status

输出:

bash
Current DNS Server:192.168.154.2
		DNS Servers:192.168.154.2
		DNS Domain:localdomain

DNS 服务器是 192.168.154.2,这是你虚拟机的网关地址(可能是 NAT 网络的网关)。这个网关可能没有配置 DNS 转发功能,导致无法解析外网域名。

解决方案:修改 DNS 为公共 DNS

方法1:直接用 resolvectl 设置(最快)

bash
# 设置网卡 ens33 的 DNS 为阿里 DNS
sudo resolvectl dns ens33 223.5.5.5 223.6.6.6

# 设置备用 DNS
sudo resolvectl dns ens33 223.5.5.5 223.6.6.6 114.114.114.114

# 验证
resolvectl status ens33

验证输出:

DNS Serves: 223.5.5.5 223.6.6.6 114.114.114.114

包含以上内容说明成功,现在用的是阿里 DNS(223.5.5.5)和 114 DNS。

拉取镜像

bash
sudo docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eclipse-temurin:17-jdk-alpine