在CentOS系统中,DNS(域名系统)配置的正确性直接影响网络服务的访问能力,因此掌握查看DNS配置的方法至关重要,以下是几种常用的查看DNS命令及其详细说明,帮助用户全面了解系统当前的DNS设置。

最基础且常用的命令是cat /etc/resolv.conf,该文件是Linux系统解析DNS的核心配置文件,直接记录了系统正在使用的DNS服务器地址,执行命令后,文件内容通常包含nameserver行,每行指定一个DNS服务器的IP地址,例如nameserver 8.8.8.8或nameserver 114.114.114.114,需要注意的是,在CentOS 7及更高版本中,该文件可能由NetworkManager动态管理,直接修改可能无法持久化生效,若需查看更详细的DNS解析配置,可结合systemctl status NetworkManager命令检查NetworkManager服务状态,确认是否启用了DNS管理功能。
使用nmcli命令是NetworkManager环境下查看DNS的推荐方式。nmcli是NetworkManager的命令行工具,功能强大且支持持久化配置,执行nmcli connection show可列出所有网络连接,再通过nmcli connection show "连接名称" | grep dns查看指定连接的DNS配置,若默认连接为ens33,则运行nmcli connection show ens33会显示ipv4.dns或ipv6.dns字段,其中列出了手动配置的DNS服务器,若未手动配置,ipv4.ignore-auto-dns字段为no时,系统会自动从DHCP服务器获取DNS信息;为yes时则忽略DHCP提供的DNS。nmcli dev show | grep DNS命令可直接查看当前活动设备的DNS设置,适用于快速排查问题。
对于需要查看系统全局DNS解析行为的场景,dig或nslookup工具更为实用,这两个工具属于bind-utils软件包,若未安装可通过yum install bind-utils或dnf install bind-utils(CentOS 8+)安装,执行dig www.baidu.com会显示完整的DNS解析过程,包括查询的DNS服务器、解析耗时及返回的IP地址;而nslookup www.baidu.com则以交互式方式展示解析结果,输入server命令可切换当前使用的DNS服务器,通过指定DNS服务器,如dig @8.8.8.8 www.baidu.com,可测试特定DNS服务器的解析能力,判断是否存在网络或DNS服务器故障。
systemd-resolved服务在CentOS 8及更高版本中可能被启用,它提供了本地DNS缓存功能,可通过systemctl status systemd-resolved检查服务状态,执行resolvectl status查看当前DNS解析配置,包括链路优先级、DNS服务器列表及缓存状态,若服务未启用,可使用systemctl enable --now systemd-resolved并创建符号链接ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf,使系统通过该服务管理DNS。

以下是不同命令的适用场景总结:
| 命令 | 功能 | 适用场景 | 示例 |
|---|---|---|---|
cat /etc/resolv.conf |
查看当前生效的DNS服务器地址 | 快速检查基础DNS配置 | cat /etc/resolv.conf |
nmcli connection show |
查看网络连接的DNS配置 | NetworkManager管理下的持久化配置 | nmcli connection show ens33 |
dig/nslookup |
测试DNS解析过程 | 诊断DNS解析故障或测试特定DNS服务器 | dig www.example.com |
resolvectl status |
查看systemd-resolved服务的DNS配置 | CentOS 8+启用systemd-resolved后 | resolvectl status |
在实际操作中,若发现DNS解析异常,可按以下步骤排查:首先检查/etc/resolv.conf中的nameserver是否正确;其次确认网络连接的DNS配置是否与/etc/resolv.conf一致;最后使用dig命令测试不同DNS服务器的解析能力,排除DNS服务器故障,若问题仍未解决,可尝试重启网络服务(systemctl restart network或nmcli connection down up ens33)或重置NetworkManager配置(nmcli connection reload)。
相关问答FAQs
Q1: 为什么修改/etc/resolv.conf后DNS配置没有生效?
A: 在CentOS 7及以上版本,/etc/resolv.conf通常由NetworkManager或systemd-resolved自动管理,直接修改可能被覆盖,建议使用nmcli命令修改DNS配置,例如nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114",然后执行nmcli connection up ens33使配置生效,若使用systemd-resolved,可通过修改/etc/systemd/resolved.conf并重启服务实现持久化配置。
Q2: 如何在CentOS中临时切换DNS服务器进行测试?
A: 可使用dig或nslookup命令指定临时DNS服务器,例如dig @8.8.8.8 www.example.com或nslookup www.example.com 8.8.8.8,此时查询将绕过系统默认的DNS配置,直接使用指定的DNS服务器,临时切换不会影响系统持久化配置,适合快速测试特定DNS服务器的可用性。

