菜鸟科技网

Ubuntu如何用命令查看DNS配置?

使用 resolvectl (推荐,现代系统)

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

Ubuntu如何用命令查看DNS配置?-图1
(图片来源网络,侵删)

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 解析过程

这个命令可以帮你诊断域名解析问题,它会详细展示解析过程。

Ubuntu如何用命令查看DNS配置?-图2
(图片来源网络,侵删)
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

输出示例:

Ubuntu如何用命令查看DNS配置?-图3
(图片来源网络,侵删)
# 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.81.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 1MyHotspot),然后使用:

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

使用 nslookupdig (测试 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-resolveresolvectl 的前身,在旧版 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 设置 ⭐⭐⭐⭐ (桌面用户)
nslookupdig 测试 DNS 解析是否成功,并找出当前使用的 DNS 服务器 ⭐⭐⭐⭐⭐ (用于诊断)

日常使用建议:

  • 快速查看当前 DNS 服务器: 直接运行 resolvectl status
  • 怀疑 DNS 解析有问题时: 使用 nslookupdig 命令来测试和诊断。
  • 修改 DNS 设置: 推荐通过图形界面“设置” -> “网络” -> 点击齿轮图标,或者在终端使用 nmcli 命令来修改,而不是直接编辑 /etc/resolv.conf
分享:
扫描分享到社交APP
上一篇
下一篇