Linux查看DNS服务器地址的命令是什么?
- 云服务器
- 2025-12-12
- 5
在Linux系统中,查看DNS服务器配置是网络管理和故障排查中的常见操作,DNS(域名系统)负责将人类可读的域名转换为机器可读的IP地址,因此了解当前系统使用的DNS服务器配置对于确保网络连接正常至关重要,本文将详细介绍多种在Linux中查看DNS服务器的方法,包括使用命令行工具、检查配置文件以及通过系统服务查询等,并针对不同场景提供适用建议。
最常用的查看DNS服务器的方法是通过resolv.conf文件,该文件是Linux系统中DNS解析的核心配置文件,通常位于/etc/resolv.conf路径下,直接使用cat、less或more等命令即可查看其内容,执行cat /etc/resolv.conf会显示类似以下内容:
nameserver 8.8.8.8 nameserver 8.8.4.4 search example.com
nameserver行指定的IP地址即为系统当前使用的DNS服务器,可以配置多个,系统会按顺序尝试解析。search行定义了域名搜索列表,当查询的域名不完整时会自动添加后缀,需要注意的是,在较新的Linux发行版(如使用systemd的系统)中,/etc/resolv.conf可能是由systemdresolved或NetworkManager等服务动态管理的,直接修改该文件可能不会持久化生效,此时需通过对应的服务配置进行修改。
使用systemdresolved服务的查询工具是现代Linux系统中的另一种方法。systemdresolved是systemd提供的网络名称解析服务,它会维护一个本地的DNS缓存,并通过/etc/resolv.conf或本地接口(如0.0.53:53)提供解析服务,要查看systemdresolved管理的DNS服务器,可执行以下命令:
resolvectl status
该命令会输出详细的DNS解析信息,包括当前使用的DNS服务器、域名搜索列表、DNS over TLS(DoT)配置等。
Global Protocols: LLMNR=+ mDNS DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 8.8.4.4 DNSSEC: unsupported DNSSEC NTA: example.com DNS Over TLS: no DNS Over TLS Server: DNS Crypt: no DNS Stub Listener: 127.0.0.53:53
通过resolvectl可以更全面地了解DNS解析的详细状态,尤其适用于启用了systemdresolved的系统。

对于使用NetworkManager管理网络连接的系统(如Ubuntu、Fedora等),可通过nmcli命令查看DNS配置。nmcli是NetworkManager的命令行工具,能够显示和管理网络连接及其配置,执行以下命令可查看所有活跃连接的DNS设置:
nmcli dev show | grep DNS
或者针对特定网络接口(如eth0)查询:
nmcli dev show eth0 | grep DNS
输出结果会显示该接口使用的DNS服务器,

这种方法适用于需要结合网络连接状态查看DNS配置的场景,尤其对于动态获取的DNS(如通过DHCP分配)非常有效。
对于需要临时查看当前DNS解析行为的场景,可以使用dig或nslookup工具查询特定域名的DNS服务器,执行dig example.com会返回详细的DNS查询结果,其中在ANSWER SECTION上方会显示查询使用的DNS服务器信息:
;; >>HEADER<< opcode: QUERY, status: NOERROR, id: 12345 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 300 IN A 93.184.216.34
在;; SERVER行中会显示本次查询使用的DNS服务器(通常是系统配置的DNS服务器之一)。nslookup工具的使用方法类似,执行nslookup example.com后,在非交互模式下会直接显示DNS服务器信息。
除了上述方法,还可以通过检查网络管理服务的配置文件来查看DNS设置,在NetworkManager中,每个连接的配置文件通常位于/etc/NetworkManager/systemconnections/目录下,文件名为连接名称(如eth0.nmconnection),使用cat或grep命令查看该文件中的[ipv4]或[ipv6]部分,可以找到dns选项,
[ipv4] dns=8.8.8.8,8.8.4.4
对于systemdnetworkd管理的网络,配置文件位于/etc/systemd/network/目录下,在[Network]部分查找DNS=选项,
[Network] DNS=8.8.8.8 8.8.4.4
通过直接查看配置文件,可以了解DNS设置的持久化配置,而不仅仅是当前运行时的状态。

为了更直观地比较不同方法的适用场景,以下表格归纳了上述查看DNS服务器的方式:
| 方法 | 命令/文件 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 查看resolv.conf | cat /etc/resolv.conf | 快速查看基础DNS配置 | 简单直接,兼容所有Linux系统 | 可能无法反映动态配置(如systemdresolved) |
| 使用resolvectl | resolvectl status | 现代systemd系统,查看详细DNS状态 | 信息全面,支持DoT/DNSSEC等特性 | 仅适用于启用了systemdresolved的系统 |
| 使用nmcli | nmcli dev show | grep DNS | NetworkManager管理的网络 | 结合网络连接状态,支持动态配置 | 依赖NetworkManager服务 |
| 使用dig/nslookup | dig example.com或nslookup example.com | 测试特定域名的DNS解析行为 | 可验证DNS解析是否正常工作 | 仅反映临时查询结果,非系统配置 |
| 查看配置文件 | /etc/NetworkManager/systemconnections/或/etc/systemd/network/ | 检查持久化DNS配置 | 了解底层配置,适合修改和管理 | 需要手动定位文件,操作稍复杂 |
在实际操作中,选择哪种方法取决于具体的Linux发行版、网络管理工具以及查看目的,在Ubuntu 20.04及更高版本中,systemdresolved默认启用,此时resolvectl是查看DNS的首选工具;而在CentOS 7等使用NetworkManager的传统系统中,nmcli或直接查看resolv.conf更为常见,对于需要调试DNS解析问题的用户,结合dig和resolvectl可以更全面地定位问题。
需要注意的是,DNS配置的优先级可能因系统而异,在大多数系统中,DNS配置的优先级为:网络管理服务(如NetworkManager、systemdnetworkd)的配置文件 > /etc/resolv.conf > DHCP服务器分配的DNS,如果发现DNS配置异常,建议依次检查这些来源,确保配置的正确性和一致性。
相关问答FAQs
Q1: 为什么/etc/resolv.conf文件中的DNS配置被重置了?
A1: 在使用systemd或NetworkManager的现代Linux系统中,/etc/resolv.conf通常由这些服务动态管理,直接修改该文件可能无法持久化,要永久修改DNS配置,需通过对应的服务配置:对于systemdresolved,编辑/etc/systemd/resolved.conf并重启服务;对于NetworkManager,使用nmcli connection modify命令或编辑连接配置文件(如/etc/NetworkManager/systemconnections/下的文件)。
Q2: 如何确认DNS解析是否正常工作?
A2: 可以使用dig或nslookup工具测试特定域名的解析,执行dig example.com,如果返回正确的IP地址且;; SERVER行显示预期的DNS服务器,则解析正常;若出现timed out或NXDOMAIN等错误,可能是DNS服务器不可用或网络问题。resolvectl query example.com可提供更详细的解析过程信息,便于排查故障。