在Linux系统中,查看主DNS服务器地址的常用方法有两种:一是直接查看/etc/resolv.conf文件,该文件中的nameserver字段即为配置的DNS服务器地址,通常第一列为主DNS;二是使用resolvectl status命令(适用于systemd-resolved管理的系统),该命令会显示当前网络接口使用的DNS服务器,Current DNS Server”列即为主DNS地址,前者是传统配置文件,后者适用于现代Linux发行版,两者均能快速获取主DNS信息。
在Linux系统中,DNS(域名系统)服务器负责将人类可读的域名(如www.example.com)转换为机器可识别的IP地址,是网络访问的核心组件,我们会配置主DNS(DNS1)和备用DNS(DNS2)以确保网络连接的可靠性,如何快速查看Linux系统当前的主DNS服务器地址呢?本文将介绍几种常用方法,覆盖不同Linux发行版和配置场景。
DNS基础:什么是DNS1?
DNS1指的是系统优先使用的主DNS服务器,当需要解析域名时,系统会首先向DNS1发起请求;如果DNS1无响应或解析失败,则会依次尝试备用DNS(DNS2、DNS3等),DNS的配置方式可能是静态(手动设置)或动态(通过DHCP自动获取),因此查看方法也会略有不同。
方法1:查看/etc/resolv.conf文件(传统方法)
/etc/resolv.conf是Linux系统中最传统的DNS配置文件,无论采用何种网络管理工具,最终生效的DNS配置通常会同步到此文件中,这是最直接、通用的查看方式。

操作步骤:
-
使用
cat命令查看文件内容:cat /etc/resolv.conf
-
解读输出结果:
文件中以nameserver开头的行即为DNS服务器地址,第一个nameserver对应的就是DNS1(主DNS),后续为备用DNS。# Generated by NetworkManager nameserver 8.8.8.8 # DNS1(主DNS) nameserver 8.8.4.4 # DNS2(备用DNS) nameserver 114.114.114.114 # DNS3(备用DNS)上述示例中,
8.8.8就是当前系统的主DNS服务器。
注意事项:
- 在现代Linux发行版(如Ubuntu 18.04+、CentOS 8+)中,
/etc/resolv.conf可能是动态生成的(由NetworkManager或systemd-resolved管理),直接修改该文件可能不会永久生效,但查看当前DNS配置依然有效。 - 如果文件中无
nameserver行,说明系统未配置DNS(此时可能依赖/etc/hosts文件解析域名,或网络未正常连接)。
方法2:使用nmcli命令(NetworkManager工具)
对于使用NetworkManager管理网络的系统(如Ubuntu、Fedora、Linux Mint等桌面版),nmcli(NetworkManager命令行工具)是查看网络配置(包括DNS)的首选方式。
操作步骤:
-
查看当前活动的网络连接及其DNS配置:
nmcli connection show --active
输出会显示当前活动的连接名称(如"ens33"、"Wired connection 1"等),记下连接名称(假设为"ens33")。
-
查看指定连接的DNS配置:
nmcli connection show "ens33" | grep dns
输出示例:
dns: 8.8.8.8, 8.8.4.4, 114.114.114.114逗号分隔的第一个DNS地址(
8.8.8)即为DNS1。 -
更直观的查看方式(推荐):
nmcli dev show | grep DNS
该命令会直接显示当前网络设备(如网卡)的DNS服务器列表,第一个就是DNS1:
DNS: 8.8.8.8, 8.8.4.4, 114.114.114.114
注意事项:
nmcli需要安装NetworkManager,绝大多数现代Linux系统默认已安装。- 如果系统使用其他网络管理工具(如systemd-networkd),此方法可能不适用。
方法3:使用resolvectl命令(systemd-resolved工具)
在Ubuntu 18.04+、Debian 10+、CentOS 8+等采用systemd-resolved作为本地DNS解析器的系统中,resolvectl是查看DNS配置的高效工具,它不仅能显示DNS服务器,还能展示DNS解析状态。
操作步骤:
-
查看当前DNS解析状态和服务器列表:
resolvectl status
-
解读输出结果:
输出中会明确标注"Current DNS Server"或"DNS Servers",第一个即为DNS1。Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=yes resolv.conf mode: foreign Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 8.8.4.4 114.114.114.114上述示例中,
8.8.8就是主DNS服务器。
注意事项:
systemd-resolved会通过本地缓存(0.0.53:53)提供DNS解析服务,因此/etc/resolv.conf中的nameserver可能指向本地地址(0.0.53),此时需通过resolvectl查看实际DNS服务器。- 如果系统未启用
systemd-resolved,可使用systemctl enable --now systemd-resolved启用。
方法4:查看网络接口配置文件(静态DNS场景)
对于使用静态网络配置的系统(如服务器版Linux),DNS信息可能直接写在网络接口配置文件中(如CentOS/RHEL的/etc/sysconfig/network-scripts/ifcfg-eth0)。
操作步骤:
-
定位网络接口配置文件:
网卡配置文件通常位于/etc/sysconfig/network-scripts/下,文件名格式为ifcfg-网卡名(如ifcfg-ens33),可使用以下命令列出所有网卡配置文件:ls /etc/sysconfig/network-scripts/ifcfg-*
-
查看文件内容:
cat /etc/sysconfig/network-scripts/ifcfg-ens33
-
解读DNS配置:
如果配置了静态DNS,文件中会出现DNS1和DNS2字段,TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 # 主DNS DNS2=8.8.4.4 # 备用DNS ONBOOT=yesDNS1的值(8.8.8)即为系统主DNS。
注意事项:
- 此方法仅适用于静态配置DNS的场景,如果通过DHCP自动获取DNS,文件中可能无
DNS1字段(DNS信息由DHCP服务器分配,可通过方法1或方法3查看)。
方法5:使用systemd-networkd工具(适用于无NetworkManager的系统)
对于轻量级服务器或使用systemd-networkd管理网络的系统(如Arch Linux、Debian minimal),可通过networkctl查看网络配置,包括DNS。
操作步骤:
-
查看网络接口状态:
networkctl
找到活动的网卡(如
ens33),记下接口名。 -
查看指定接口的DNS配置:
networkctl status ens33
在输出中查找"DNS"字段,
DNS: 8.8.8.8 8.8.4.4 114.114.114.114第一个DNS地址即为DNS1。
如何选择合适的方法?
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
/etc/resolv.conf |
所有Linux系统(通用) | 直接、简单 | 现代系统可能是动态生成,修改无效 |
nmcli |
使用NetworkManager的系统(桌面版为主) | 直观、支持活动连接查询 | 需要NetworkManager支持 |
resolvectl |
使用systemd-resolved的系统(新版Ubuntu/CentOS等) |
信息全面、显示实际DNS服务器 | 依赖systemd-resolved |
| 网络接口配置文件 | 静态DNS配置的服务器系统 | 可直接查看静态配置 | 仅适用于静态场景 |
systemd-networkd |
轻量级系统、无NetworkManager时 | 轻量、适合服务器环境 | 功能相对简单 |
快速推荐:
- 桌面用户:优先使用
nmcli或resolvectl status,命令简洁且信息全面。 - 服务器用户:如果是静态配置,查看网络接口配置文件;如果是动态配置(DHCP),使用
/etc/resolv.conf或resolvectl。 - 不确定环境:直接执行
cat /etc/resolv.conf,这是最通用的“兜底”方法。
通过以上方法,你可以轻松查看Linux系统的主DNS服务器地址(DNS1),确保网络解析功能正常,如果需要修改DNS配置,可根据系统环境选择手动编辑/etc/resolv.conf、使用nmcli修改连接设置,或调整网络接口配置文件。


