Linux系统如何查看主DNS服务器地址

LEAF
在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配置通常会同步到此文件中,这是最直接、通用的查看方式。

Linux系统如何查看主DNS服务器地址

操作步骤:

  1. 使用cat命令查看文件内容

    cat /etc/resolv.conf
  2. 解读输出结果
    文件中以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)的首选方式。

操作步骤:

  1. 查看当前活动的网络连接及其DNS配置

    nmcli connection show --active

    输出会显示当前活动的连接名称(如"ens33"、"Wired connection 1"等),记下连接名称(假设为"ens33")。

  2. 查看指定连接的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。

  3. 更直观的查看方式(推荐)

    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解析状态。

操作步骤:

  1. 查看当前DNS解析状态和服务器列表

    resolvectl status
  2. 解读输出结果
    输出中会明确标注"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)。

操作步骤:

  1. 定位网络接口配置文件
    网卡配置文件通常位于/etc/sysconfig/network-scripts/下,文件名格式为ifcfg-网卡名(如ifcfg-ens33),可使用以下命令列出所有网卡配置文件:

    ls /etc/sysconfig/network-scripts/ifcfg-*
  2. 查看文件内容

    cat /etc/sysconfig/network-scripts/ifcfg-ens33
  3. 解读DNS配置
    如果配置了静态DNS,文件中会出现DNS1DNS2字段,

    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=yes

    DNS1的值(8.8.8)即为系统主DNS。

注意事项:

  • 此方法仅适用于静态配置DNS的场景,如果通过DHCP自动获取DNS,文件中可能无DNS1字段(DNS信息由DHCP服务器分配,可通过方法1或方法3查看)。

方法5:使用systemd-networkd工具(适用于无NetworkManager的系统)

对于轻量级服务器或使用systemd-networkd管理网络的系统(如Arch Linux、Debian minimal),可通过networkctl查看网络配置,包括DNS。

操作步骤:

  1. 查看网络接口状态

    networkctl

    找到活动的网卡(如ens33),记下接口名。

  2. 查看指定接口的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时 轻量、适合服务器环境 功能相对简单

快速推荐:

  • 桌面用户:优先使用nmcliresolvectl status,命令简洁且信息全面。
  • 服务器用户:如果是静态配置,查看网络接口配置文件;如果是动态配置(DHCP),使用/etc/resolv.confresolvectl
  • 不确定环境:直接执行cat /etc/resolv.conf,这是最通用的“兜底”方法。

通过以上方法,你可以轻松查看Linux系统的主DNS服务器地址(DNS1),确保网络解析功能正常,如果需要修改DNS配置,可根据系统环境选择手动编辑/etc/resolv.conf、使用nmcli修改连接设置,或调整网络接口配置文件。

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码