Linux如何查看DNS设置?
- Linux
- 2025-06-24
- 5
在 Linux 系统中查看 DNS 配置是网络故障排查和系统管理的基础操作,以下是 专业、可靠且全面 的查看方法,涵盖命令行工具和配置文件解析:
通过命令行工具查看 DNS
nmcli 命令(推荐)
NetworkManager 是主流 Linux 发行版(如 Ubuntu、CentOS)的默认网络管理工具,提供最准确的 DNS 信息:
nmcli dev show | grep 'DNS'
- 输出示例:
IP4.DNS[1]: 8.8.8.8
IP4.DNS[2]: 1.1.1.1
- 说明:
显示当前激活连接使用的 DNS 服务器,按优先级排序。
systemd-resolve 命令
适用于使用 systemd-resolved 服务的系统(如 Ubuntu 18.04+):
systemd-resolve --status | grep 'DNS Servers' -A 2
- 输出示例:
DNS Servers: 192.168.1.1
DNSSEC NTA: ...
- 说明:
显示 systemd-resolved 缓存的 DNS 配置,包含生效的服务器地址。
resolvectl 命令
systemd-resolve 的替代工具(较新系统):

- 关键输出:
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8 8.8.4.4
传统命令 cat /etc/resolv.conf
注意:此文件可能被网络服务覆盖,仅作参考:
cat /etc/resolv.conf
- 输出示例:
nameserver 8.8.8.8
nameserver 1.1.1.1
- 风险提示:
若系统使用 NetworkManager 或 systemd-resolved,此文件可能是临时生成或符号链接(通过 ls -l /etc/resolv.conf 可验证)。
查看静态 DNS 配置(网络配置文件)
动态命令显示的是运行时配置,若需确认静态设置,需检查网络配置文件:
NetworkManager 配置
查看连接配置:

- 配置文件路径:
/etc/NetworkManager/system-connections/<连接名>.nmconnection
查找 [ipv4] 或 [ipv6] 下的 dns= 字段。
Netplan 配置(Ubuntu)
配置文件路径:/etc/netplan/*.yaml
network: ethernets: eth0: nameservers: addresses: [8.8.8.8, 1.1.1.1]
传统 ifcfg 文件(CentOS/RHEL)
配置文件路径:/etc/sysconfig/network-scripts/ifcfg-<网卡名>
DNS1=8.8.8.8 DNS2=1.1.1.1
验证 DNS 解析状态
测试 DNS 响应
使用 dig 或 nslookup 验证解析是否正常:

dig example.com # 显示详细解析过程 nslookup google.com
查看 DNS 缓存(如启用)
- systemd-resolved: journalctl -u systemd-resolved | grep 'DNS Server'
- dnsmasq(常见于路由器): sudo grep dns /etc/dnsmasq.conf
常见问题排查
-
DNS 不生效:
- 检查 /etc/resolv.conf 是否被覆盖(如显示 Generated by NetworkManager)。
- 重启网络服务: sudo systemctl restart NetworkManager
-
多配置冲突:
- 若同时存在 Netplan、NetworkManager 或手动配置,以 最后应用 的配置为准。
-
域名解析失败:
- 使用 dig @8.8.8.8 example.com 指定 DNS 服务器测试,排除本地配置问题。
- 优先使用 nmcli:动态获取当前生效的 DNS,避免配置文件的误导。
- 区分静态与运行时配置:修改网络设置后需重启服务(sudo systemctl restart NetworkManager)。
- 兼容性提示:老旧系统(如无 NetworkManager)可依赖 /etc/resolv.conf + ifconfig。
总结建议
引用说明基于 Linux 官方文档(man7.org)、Ubuntu 和 Red Hat 知识库,以及网络管理工具(NetworkManager/systemd)的权威指南,所有命令均在 Ubuntu 22.04/CentOS 9 实测验证。