Linux主机的DNS怎么看?

HCRM技术_小炮 DNS 2025-08-21 2 0

以下是几种最常用和有效的方法,从最简单直接的开始。

方法一:查看当前正在使用的 DNS 服务器(最推荐)

系统解析域名时,真正使用的 DNS 服务器可能来自多个来源(网络管理器、/etc/resolv.conf、systemd-resolved),最好的方法是使用resolvectl 命令(systemd-resolved 服务)或nmcli 命令(NetworkManager)。

1. 使用resolvectl status 命令(适用于大多数现代发行版)

如果您的系统使用systemd-resolved(Ubuntu、Fedora、Debian 等默认使用),这是最准确的方法。

resolvectl status

或者简写:

resolvectl stat

输出示例:

Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub-link
Link 2 (eth0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1
        DNS Domain: ~.

这里清晰地显示了当前网卡 (eth0) 正在使用的 DNS 服务器是192.168.1.1(通常是我的路由器)。

2. 使用nmcli 命令(如果使用 NetworkManager)

如果你的桌面或服务器使用 NetworkManager 管理网络,这个方法很好用。

nmcli dev show | grep DNS

输出示例:

IP4.DNS[1]:                             192.168.1.1
IP6.DNS[1]:                             fe80::1%eth0

这会显示由 NetworkManager 分配给的 DNS 服务器地址。

方法二:查看传统的配置文件/etc/resolv.conf

这个文件是传统的 DNS 解析器配置文件。但请注意:在现代系统中,这个文件通常是由网络服务(如 systemd-resolved, NetworkManager, dhclient)动态生成的,直接编辑它可能会被覆盖,它显示的是当前系统解析器实际使用的配置。

cat /etc/resolv.conf

输出示例:

This file is managed by man:systemd-resolved(8). Do not edit.
#
This is a dynamic resolv.conf file. DO NOT EDIT THIS FILE!
nameserver 127.0.0.53
options edns0 trust-ad
search .

重要提示: 如果你看到nameserver 127.0.0.53127.0.0.1,这表示系统正在使用一个本地 DNS 缓存守护进程(如 systemd-resolved 或 dnsmasq),真正的上游 DNS 服务器需要用法一中的命令查看。

方法三:查看静态网络配置(看网卡的静态设置)

如果你想看某个网络接口的静态配置(开机或重启网络时可能会被应用),你需要查看对应的配置文件,位置和格式因发行版而异。

1. 对于使用Netplan 的系统(如 Ubuntu 18.04+)

配置文件在/etc/netplan/ 目录下。

cat /etc/netplan/*.yaml

2. 对于使用NetworkManager 文本连接的系统

nmcli con show “你的连接名” | grep ipv4.dns

首先用nmcli con show 查看连接名。

3. 对于使用传统ifcfg 脚本的系统(如 CentOS 7, RHEL 7)

配置文件在/etc/sysconfig/network-scripts/ 目录下,文件名类似ifcfg-eth0

cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep DNS

方法四:使用dig 命令(测试而非查看配置)

dig 命令用于查询 DNS 服务器,而不是查看本地配置,但它可以巧妙地用来显示你的系统默认使用哪个 DNS 服务器进行查询

dig | grep SERVER

输出示例:

;; SERVER: 127.0.0.53#53(127.0.0.53)

这再次证实,系统上的应用程序正在向本地的127.0.0.53(即 systemd-resolved)发送 DNS 查询请求。

命令 作用 推荐度
resolvectl status查看当前生效的、真正用于解析的 DNS 服务器 ⭐⭐⭐⭐⭐最佳选择
nmcli dev show 查看由 NetworkManager 管理的 DNS 服务器 ⭐⭐⭐⭐
cat /etc/resolv.conf 查看解析器使用的当前配置(但可能是本地缓存地址) ⭐⭐⭐
查看/etc/netplan/ 等文件 查看静态配置,而不是当前运行时配置 ⭐⭐

给你的建议:

1、首先尝试resolvectl status,它通常能给你最清晰、最准确的答案。

2、 如果提示命令未找到,再尝试nmcli 或查看/etc/resolv.conf

3、 记住/etc/resolv.conf 中的127.0.0.xx 地址代表本地缓存服务,真正的上游 DNS 需要用法一的命令查看。

文章摘自:https://idc.huochengrm.cn/dns/13731.html

评论