在 CentOS 系统中,正确配置 DNS(域名系统)是确保网络畅通无阻的关键一步,DNS 负责将我们易于记忆的域名(如 www.google.com)解析为机器能够识别的 IP 地址,更换为更快速、更安全或具备特定功能的公共 DNS 服务器,可以提升上网体验、增强隐私保护,甚至绕过某些网络限制,本文将详细介绍在 CentOS 不同版本中更换 DNS 的多种方法,并提供验证步骤和常用服务器推荐。

适用于 CentOS 7 及更早版本(编辑网络配置文件)
对于使用传统 network-scripts 管理网络的 CentOS 7 及更早版本,最稳定的方法是直接编辑网络接口的配置文件。
-
确定网络接口名称 使用以下命令查看您的网络接口名称,通常为
ens33、eth0等。ip addr
-
编辑配置文件 找到对应接口的配置文件,它位于
/etc/sysconfig/network-scripts/目录下,文件名格式为ifcfg-<接口名称>,接口名为ens33,则编辑文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33
-
添加或修改 DNS 设置 在文件中,添加或修改以下两行。
DNS1为主用 DNS,DNS2为备用 DNS,这里以 Google DNS 为例。DNS1=8.8.8.8 DNS2=8.8.4.4为防止 DHCP 服务器分配的 DNS 覆盖手动设置,建议同时添加或确保
PEERDNS参数为no:PEERDNS=no -
重启网络服务 保存文件后,重启网络服务使配置生效。
systemctl restart network
适用于 CentOS 8/9 及 Stream(使用 nmcli 命令)
从 CentOS 8 开始,NetworkManager 及其命令行工具 nmcli 成为默认的网络管理方式,使用 nmcli 是最推荐且现代的方法。

-
查看网络连接名称
nmcli管理的是“连接”,而非直接的“接口”,使用以下命令查看所有连接:nmcli connection show
找到您正在使用的连接名称,通常与接口名类似,
Wired connection 1或ens33。 -
修改连接的 DNS 设置 假设连接名称为
ens33,使用以下命令设置 DNS,多个 DNS 地址用空格隔开,并用引号包裹。nmcli con mod "ens33" ipv4.dns "8.8.8.8 8.8.4.4"
-
防止自动 DNS 覆盖 同样,为了防止 DHCP 自动获取的 DNS 覆盖手动设置,需执行:
nmcli con mod "ens33" ipv4.ignore-auto-dns yes
-
激活配置 通过重新激活连接来应用更改。
nmcli con down "ens33" && nmcli con up "ens33"
临时生效(直接编辑 resolv.conf)
此方法适用于临时测试,重启网络或服务器后配置会丢失。
直接编辑 /etc/resolv.conf 文件:

vi /etc/resolv.conf ```或直接在文件顶部添加:
nameserver 8.8.8.8 nameserver 8.8.4.4
保存后立即生效,但请务必注意,`NetworkManager` 或 `network` 服务在下次启动或续约 DHCP 时会覆盖此文件。
---
### **如何验证 DNS 设置是否生效**
无论使用哪种方法,都可以通过以下方式验证。
1. **查看 resolv.conf 文件**
查看 `/etc/resolv.conf` 文件内容,确认其中包含您设置的 `nameserver`。
```bash
cat /etc/resolv.conf
- 使用解析工具测试
使用
nslookup或dig命令解析一个域名,看是否能返回正确的 IP 地址。nslookup www.baidu.com
如果返回了百度的 IP 地址列表,说明 DNS 工作正常。
常用公共 DNS 服务器推荐
| 提供商 | 主 DNS | 备用 DNS | 特点 |
|---|---|---|---|
8.8.8 |
8.4.4 |
速度快,稳定,全球可用 | |
| Cloudflare | 1.1.1 |
0.0.1 |
注重隐私,速度快,响应时间短 |
| Quad9 | 9.9.9 |
112.112.112 |
内置安全策略,阻止已知恶意域名 |
| 阿里 DNS | 5.5.5 |
6.6.6 |
针对中国大陆用户优化,解析快 |
| 114 DNS | 114.114.114 |
114.115.115 |
国内老牌 DNS,速度快,纯净 |
相关问答 (FAQs)
为什么我修改了 /etc/resolv.conf 文件,重启网络或服务器后就失效了?
解答: 这是因为在现代 Linux 发行版(包括 CentOS)中,/etc/resolv.conf 文件通常是由网络管理服务(如 NetworkManager 或 network 脚本)动态生成的,当这些服务启动、重新配置或从 DHCP 服务器获取信息时,它们会根据其主配置文件(如 ifcfg-* 或 nmcli 的设置)来重写 /etc/resolv.conf,直接编辑该文件只是一种临时措施,要实现永久更改,必须修改网络管理服务的主配置,如方法一和方法二所示。
我应该选择哪个公共 DNS?它们之间有什么区别? 解答: 选择哪个 DNS 取决于您的具体需求。Google DNS (8.8.8.8) 是最通用的选择,以其稳定性和速度著称。Cloudflare DNS (1.1.1.1) 则强调用户隐私,承诺不会记录用户的浏览数据,且性能优异。Quad9 (9.9.9.9) 的主要卖点是安全,它会自动过滤掉已知的恶意网站,为设备提供一层额外的保护,如果您在中国大陆,阿里 DNS (223.5.5.5) 或 114 DNS 可能会提供更快的解析速度和更低的延迟,您可以根据自己对速度、隐私和安全性的优先级来做出选择。