使用 resolvectl (推荐,现代系统)
对于使用 systemd-resolved 服务作为本地解析器的现代 Ubuntu 系统(通常是 18.04 及以后版本),resolvectl 是官方推荐且最强大的命令。

a) 查看当前使用的 DNS 服务器
这是最常用的命令,它会显示系统当前正在使用的 DNS 服务器。
resolvectl status
输出示例:
Global
Protocols: +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
...
Link 2 (enp0s3)
Current Scopes: DNS
Protocols: +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1 fd00::1
...
解读:
Global部分显示了全局的 DNS 设置。Link 2 (enp0s3)部分显示了特定网络接口(这里是enp0s3)的 DNS 设置。DNS Servers:后面列出的就是当前生效的 DNS 服务器地址。
b) 查询特定域名的 DNS 解析过程
这个命令可以帮你诊断域名解析问题,它会详细展示解析过程。

resolvctl DOMAIN.COM # resolvectl www.google.com
输出示例:
www.google.com: 142.250.196.68
-- link: enp0s3
-- proto: cache
-- scope: [global]
-- class: IN
c) 查看所有链路(网络接口)的 DNS 配置
resolvctl query
使用 cat 查看 /etc/resolv.conf 文件
传统的 DNS 配置文件是 /etc/resolv.conf,在 systemd-resolved 管理下,这个文件通常是一个符号链接或由 systemd-resolved 自动维护,不建议直接手动编辑。
查看它的内容仍然可以快速了解 DNS 服务器。
cat /etc/resolv.conf
输出示例:

# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
nameserver 127.0.0.53
options edns0
注意:
- 如果看到
nameserver 127.0.0.53,这表示你的系统正在使用systemd-resolved服务,它作为本地缓存解析器,真正的 DNS 服务器配置在resolvectl status中查看。 - 如果看到的是像
8.8.8或1.1.1这样的公共 DNS IP,则说明是直接配置在此文件中。
使用 nmcli (适用于 NetworkManager 用户)
如果你的网络连接由 NetworkManager 管理(这是 Ubuntu 桌面版的默认情况),可以使用 nmcli 来查看和修改 DNS 配置。
a) 查看所有连接的 DNS
nmcli dev show | grep DNS
输出示例:
DNS configuration: automatic
DNS servers: 192.168.1.1
b) 查看特定活动连接的 DNS
首先找到你的活动连接名称(Wired connection 1 或 MyHotspot),然后使用:
nmcli con show "你的连接名称" | grep "ipv4.dns" # nmcli con show "Wired connection 1" | grep "ipv4.dns"
输出示例:
ipv4.dns: 8.8.8.8, 1.1.1.1
使用 nslookup 或 dig (测试 DNS 解析)
这两个命令不直接“查看”DNS 配置,而是用来“测试” DNS 是否工作正常,以及当前系统正在使用哪个 DNS 服务器来解析域名。
a) nslookup
nslookup DOMAIN.COM # nslookup github.com
输出示例:
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: github.com
Address: 140.82.121.3
Name: github.com
Address: 2606:50c0:8003::154
解读:
Server:行显示的是本次查询所使用的 DNS 服务器地址,这就是你系统当前正在使用的 DNS。
b) dig
dig 提供了更详细的信息。
dig DOMAIN.COM # dig wikipedia.org
输出示例:
; <<>> DiG 9.16.1-Ubuntu <<>> wikipedia.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56824
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;wikipedia.org. IN A
;; ANSWER SECTION:
wikipedia.org. 3600 IN A 103.102.166.224
wikipedia.org. 3600 IN A 103.102.166.225
wikipedia.org. 3600 IN A 208.80.153.224
;; Query time: 15 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Oct 26 10:30:00 CST 2025
;; MSG SIZE rcvd: 107
解读:
;; SERVER: 192.168.1.1#53明确指出了查询请求被发送到了哪个 DNS 服务器。
使用 systemd-resolve (旧版命令)
systemd-resolve 是 resolvectl 的前身,在旧版 Ubuntu 中常见,在新版中,其功能已被 resolvectl 取代。
# 查看状态 systemd-resolve --status # 查询域名 systemd-resolve www.google.com
总结与推荐
| 命令 | 主要用途 | 推荐度 |
|---|---|---|
resolvectl status |
查看当前系统正在使用的 DNS 服务器(最推荐) | ⭐⭐⭐⭐⭐ |
cat /etc/resolv.conf |
快速查看传统配置文件内容(注意 0.0.53 的情况) |
⭐⭐⭐ |
nmcli dev show \| grep DNS |
查看由 NetworkManager 管理的连接的 DNS 设置 | ⭐⭐⭐⭐ (桌面用户) |
nslookup 或 dig |
测试 DNS 解析是否成功,并找出当前使用的 DNS 服务器 | ⭐⭐⭐⭐⭐ (用于诊断) |
日常使用建议:
- 快速查看当前 DNS 服务器: 直接运行
resolvectl status。 - 怀疑 DNS 解析有问题时: 使用
nslookup或dig命令来测试和诊断。 - 修改 DNS 设置: 推荐通过图形界面“设置” -> “网络” -> 点击齿轮图标,或者在终端使用
nmcli命令来修改,而不是直接编辑/etc/resolv.conf。
