在Linux系统中,查看DNS服务器配置是网络管理和故障排查中的常见操作,DNS(域名系统)负责将人类可读的域名转换为机器可识别的IP地址,正确配置DNS服务器对于网络连接至关重要,本文将详细介绍多种在Linux系统中查看DNS服务器配置的方法,包括命令行工具、配置文件查看以及网络诊断工具的使用,并通过表格对比不同方法的适用场景,最后附上相关FAQs解答常见问题。

使用命令行工具查看DNS配置
-
nslookup命令
nslookup是诊断DNS解析问题的常用工具,可以查询指定域名的IP地址或反向查询IP对应的域名。- 基本用法:
nslookup 域名(如nslookup www.baidu.com),默认使用系统配置的DNS服务器。 - 指定DNS服务器:
nslookup 域名 DNS服务器IP(如nslookup www.baidu.com 8.8.8.8)。 - 交互模式:直接输入
nslookup进入交互模式,使用server命令切换DNS服务器,set querytype=ANY查询所有记录类型。
- 基本用法:
-
dig命令
dig(Domain Information Groper)是更强大的DNS查询工具,提供详细的解析过程和返回信息。- 基本用法:
dig 域名(如dig www.google.com),默认显示全局查询统计、DNS服务器响应及详细记录。 - 简化输出:
dig +short 域名仅返回IP地址(如dig +short www.github.com)。 - 指定DNS服务器:
dig @DNS服务器IP 域名(如dig @114.114.114.114 www.qq.com)。
- 基本用法:
-
host命令
host是轻量级DNS查询工具,适合快速查询域名解析。- 基本用法:
host 域名(如host www.taobao.com)。 - 指定DNS服务器:
host 域名 DNS服务器IP(如host www.jd.com 223.5.5.5)。
- 基本用法:
查看系统DNS配置文件
Linux系统的DNS配置通常存储在以下文件中,不同发行版可能略有差异:

| 文件路径 | 适用系统 | 说明 |
|---|---|---|
/etc/resolv.conf |
所有Linux发行版 | 核心DNS配置文件,记录nameserver(DNS服务器IP)、search(域名后缀)等。 |
/etc/systemd/resolved.conf |
Systemd系统(如Ubuntu、CentOS 7+) | systemd-resolved服务的配置文件,启用后/etc/resolv.conf可能为其符号链接。 |
/etc/network/interfaces |
Debian/Ubuntu | 网络接口配置文件,可通过dns-nameservers选项指定DNS服务器。 |
/etc/sysconfig/network-scripts/ifcfg-eth0 |
RHEL/CentOS | 网络接口配置文件(如eth0为网卡名),DNS1、DNS2字段定义DNS服务器。 |
/etc/NetworkManager/NetworkManager.conf |
使用NetworkManager的系统(如Ubuntu、Fedora) | NetworkManager的主配置文件,可通过[main]段的dns选项指定DNS模式。 |
查看方法:
- 直接使用文本编辑器(如
vi、nano)打开上述文件,查找nameserver或DNS字段。 - 命令行查看:
cat /etc/resolv.conf或grep "nameserver" /etc/resolv.conf。
注意事项:
- 在Systemd系统中,
/etc/resolv.conf可能由systemd-resolved动态管理,修改需通过systemctl edit systemd-resolved调整配置。 - 使用NetworkManager的系统,修改DNS后需重启网络服务(
sudo systemctl restart NetworkManager)或重新连接网络。
网络诊断工具与DNS缓存
-
systemd-resolve
在启用systemd-resolved的系统(如Ubuntu 18.04+),可通过以下命令查看DNS状态:systemd-resolve --status:显示当前DNS服务器、缓存状态及域名搜索列表。systemd-resolve --statistics:查看DNS缓存统计信息。
-
nmcli(NetworkManager命令行工具)
对于使用NetworkManager的系统,nmcli可管理网络配置,包括DNS:
(图片来源网络,侵删)nmcli connection show "连接名" | grep dns:查看指定网络连接的DNS配置。nmcli connection modify "连接名" ipv4.dns "8.8.8.8 114.114.114.114":动态修改DNS服务器。
-
DNS缓存查询
Linux系统可能缓存DNS解析结果,可通过以下方式查看或清理缓存:systemd-resolve --flush-caches:清理systemd-resolved的DNS缓存(需root权限)。sudo /etc/init.d/nscd restart:清理nscd(Name Service Cache Daemon)缓存(适用于安装了nscd的系统)。
综合对比与适用场景
以下是不同查看DNS方法的对比总结:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
nslookup/dig/host |
无需修改配置,实时查询 | 仅显示当前DNS解析结果,不显示配置来源 | 临时测试DNS解析、故障排查 |
查看/etc/resolv.conf |
直接显示系统级DNS配置 | 可能被NetworkManager或systemd-resolved覆盖 | 静态配置系统、传统发行版(如CentOS 6) |
systemd-resolve |
适合systemd系统,显示缓存状态 | 仅适用于启用systemd-resolved的系统 | Ubuntu、Debian等现代发行版 |
nmcli |
动态管理NetworkManager的DNS | 依赖NetworkManager服务 | 使用NetworkManager的图形化网络管理 |
| 网卡配置文件 | 永久生效,适用于静态IP配置 | 需修改配置文件并重启网络服务 | 服务器环境、固定IP场景 |
相关问答FAQs
问题1:为什么/etc/resolv.conf中的DNS配置被自动修改?
解答:在Ubuntu、CentOS 7+等使用NetworkManager或systemd-resolved的系统中,/etc/resolv.conf可能由服务动态管理,NetworkManager在获取DHCP地址时会自动更新DNS服务器,而systemd-resolved会生成该文件的符号链接(指向/run/systemd/resolve/stub-resolv.conf),要永久修改DNS,需通过nmcli命令或编辑NetworkManager配置文件(如/etc/NetworkManager/NetworkManager.conf),并禁用自动更新:在[main]段添加dns=none,然后重启NetworkManager服务。
问题2:如何确认当前系统使用的DNS服务器是否生效?
解答:可通过以下步骤验证:
- 使用
nslookup或dig查询域名,观察返回的DNS服务器IP是否与配置一致。nslookup www.example.com的响应中“Server:”字段显示的DNS地址即为当前使用的服务器。 - 检查
systemd-resolve --status(systemd系统)或nmcli connection show(NetworkManager系统),确认DNS配置是否正确加载。 - 清除DNS缓存后重新查询,避免缓存干扰结果,执行
systemd-resolve --flush-caches后再次测试解析速度和服务器地址。
若查询结果与配置不符,需检查网络服务状态(如systemctl status systemd-resolved或systemctl status NetworkManager)及配置文件权限(确保/etc/resolv.conf可被服务写入)。
