服务器报错如下:
[root@VM-0-6-opencloudos ~]# sudo dnf install -y nsd
BaseOS 9 - x86_64 0.0 B/s | 0 B 00:00
Errors during downloading metadata for repository 'BaseOS':- Curl error (6): Couldn't resolve host name for https://mirrors.opencloudos.tech/opencloudos/9/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirrors.opencloudos.tech]- Curl error (6): Couldn't resolve host name for http://mirrors.tencentyun.com/opencloudos/9/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirrors.tencentyun.com]
Error: Failed to download metadata for repo 'BaseOS': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Z.AI回答如下:
这个报错和 NSD 没有任何关系,核心问题是:你的服务器本身的 DNS 解析功能瘫痪了。
服务器无法把 mirrors.opencloudos.tech 翻译成 IP 地址,所以 dnf 无法下载软件包。
原因分析
之前你安装并运行了 Technitium DNS,它接管了服务器的 53 端口,同时系统的 /etc/resolv.conf 很可能指向了 127.0.0.1(让本机的 Technitium 来负责解析)。
现在 Technitium 被卸载了,本机 53 端口已经没有程序在监听了,但 /etc/resolv.conf 还在傻傻地问本地要答案,所以所有域名都解析不了。
修复方法(30秒搞定)
让服务器临时使用公共 DNS(如腾讯云内网 DNS 或 Google DNS)来解析:
第一步:检查当前配置
cat /etc/resolv.conf
你大概率会看到里面只有 nameserver 127.0.0.1 或者内容为空。
第二步:写入公共 DNS
sudo bash -c 'echo -e "nameserver 10.53.53.53\nnameserver 223.5.5.5" > /etc/resolv.conf'
注:
10.53.53.53是腾讯云内网 DNS,在你的腾讯云服务器上解析最快、最稳定。223.5.5.5是阿里云公共 DNS 作为备用。
第三步:验证网络是否恢复
ping -c 3 baidu.com
如果能通,说明 DNS 已恢复。
第四步:重新安装 NSD
sudo dnf install -y nsd
第五步:防止重启后再出问题(关键)
OpenCloudOS 9 默认使用 NetworkManager 管理网络,重启后可能会覆盖你手动写的 resolv.conf。需要固化 DNS 设置:
# 查看你的网卡名称(通常是 eth0 或 ens33)
nmcli connection show
# 假设网卡名是 eth0,设置 DNS(如果不是 eth0,请替换)
sudo nmcli connection modify eth0 ipv4.dns "10.53.53.53 223.5.5.5"
sudo nmcli connection modify eth0 ipv4.ignore-auto-dns yes
sudo nmcli connection up eth0
安装完 NSD 后的注意事项
NSD 是权威 DNS 服务器,它只负责回答"我管理的域名怎么解析",不负责帮你解析百度、淘宝等互联网域名。
所以安装完 NSD 后,/etc/resolv.conf 必须保持指向公共 DNS(如 10.53.53.53),不能改成 127.0.0.1,否则你的服务器又会无法上网。
两者分工如下:
| 角色 | 负责什么 | 监听端口 |
|---|---|---|
| NSD | 解析你自己的 300 个域名 | 53 端口(对外的) |
| 公共 DNS | 服务器自己上网查资料 | 写在 resolv.conf 里 |
| 现在去执行第二步和第四步吧,应该能顺利装上 NSD 了。 |
