在Linux系统中,DNS(域名系统)配置是网络管理的基础环节,它决定了用户如何通过域名访问互联网资源,Linux系统会通过/etc/resolv.conf文件或网络管理工具(如NetworkManager、systemd-networkd)来配置DNS服务器地址,其中最常见的是两个DNS服务器(DNS1和DNS2)的设置,本文将详细解析Linux系统中DNS1和DNS2的配置方法、作用原理及最佳实践,帮助用户优化网络访问体验。

DNS1与DNS2的基本概念
DNS1和DNS2分别指代主DNS服务器和备用DNS服务器,主DNS服务器是系统解析域名时优先查询的地址,若其不可用或响应超时,系统会自动切换至备用DNS服务器(DNS2)进行查询,这种冗余设计确保了网络访问的可靠性,避免因单一DNS故障导致服务中断。
在Linux中,DNS服务器的配置方式因发行版而异,基于Debian的系统(如Ubuntu)通常使用NetworkManager管理网络配置,而基于RHEL的系统(如CentOS)则可能依赖ifcfg文件或nmcli命令,无论采用哪种方式,理解DNS1和DNS2的配置逻辑都是关键。
配置DNS1和DNS2的常用方法
直接编辑/etc/resolv.conf文件
/etc/resolv.conf是Linux系统中传统的DNS配置文件,其格式简单直观,以下是一个示例配置:
nameserver 8.8.8.8 # DNS1(Google DNS) nameserver 8.8.4.4 # DNS2(备用Google DNS) search example.com # 可选:默认域名后缀
注意事项:
- 在某些系统中(如Ubuntu 18.04+),
/etc/resolv.conf可能被systemd-resolved或NetworkManager动态管理,直接编辑可能被覆盖,建议通过系统工具永久修改配置。
使用NetworkManager(适用于Ubuntu、Fedora等)
通过nmcli命令行工具配置DNS:
sudo nmcli connection modify "连接名称" ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"
参数说明:

ipv4.dns:指定DNS1和DNS2,多个地址用空格分隔。连接名称:可通过nmcli connection show查询。
使用systemd-networkd(适用于CentOS 7+/RHEL)
编辑网络配置文件(如/etc/sysconfig/network-scripts/ifcfg-eth0):
DNS1=8.8.8.8 DNS2=8.8.4.4
重启网络服务使配置生效:
sudo systemctl restart network
通过netplan(适用于Ubuntu 18.04+)
在/etc/netplan/01-netcfg.yaml中添加以下配置:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
执行sudo netplan apply应用配置。
DNS1和DNS2的选择建议
选择合适的DNS服务器对网络性能至关重要,以下是常用公共DNS服务器的对比:
| DNS提供商 | DNS1地址 | DNS2地址 | 特点 |
|---|---|---|---|
| Google DNS | 8.8.8 | 8.4.4 | 全球分布广,响应速度快 |
| Cloudflare DNS | 1.1.1 | 0.0.1 | 注重隐私,支持DNS-over-HTTPS |
| OpenDNS | 67.222.222 | 67.220.220 | 提供安全过滤功能 |
| 阿里云DNS | 5.5.5 | 6.6.6 | 国内访问速度快,适合中国用户 |
选择原则:

- 可靠性:选择提供冗余服务的DNS提供商,避免单点故障。
- 速度:通过
ping命令测试延迟,选择响应最快的DNS服务器。 - 安全性:如需过滤恶意域名,可选择OpenDNS等支持安全功能的DNS。
高级配置:DNS缓存与故障转移
Linux系统通常通过nscd(Name Service Cache Daemon)或systemd-resolved提供DNS缓存功能,减少重复查询的延迟,启用缓存后,系统会暂存常用域名的解析结果,提升访问速度。
对于企业环境,可配置本地DNS服务器(如BIND)作为DNS1,并设置多个备用DNS(DNS2、DNS3等)实现故障转移。
nameserver 192.168.1.10 # 本地DNS服务器(主) nameserver 8.8.8.8 # 公共DNS(备用) nameserver 8.8.4.4 # 公共DNS(备用2)
常见问题排查
- DNS解析失败:检查
/etc/resolv.conf是否正确配置,或使用nslookup命令测试DNS服务器连通性。nslookup example.com 8.8.8.8
- 配置被覆盖:确保通过系统工具(如
nmcli、netplan)修改配置,而非直接编辑/etc/resolv.conf。
相关问答FAQs
Q1: 如何在Linux中测试DNS解析是否正常?
A1: 可使用nslookup或dig命令测试DNS解析。
nslookup example.com 8.8.8.8 # 指定DNS1查询 dig example.com @8.8.4.4 # 指定DNS2查询
若返回IP地址,说明DNS解析正常;若超时或报错,需检查DNS服务器配置或网络连通性。
Q2: 为什么修改DNS配置后仍不生效?
A2: 可能的原因包括:
- 配置文件未正确保存或应用(如未重启网络服务)。
- 系统使用了其他DNS管理工具(如
systemd-resolved),需通过其专用接口修改配置。 - 防火墙或安全策略阻止了DNS查询端口(53)。
建议检查/etc/resolv.conf内容是否更新,并确认网络服务状态。