Ubuntu 16.04怎么查看当前使用的DNS服务器地址?

在Ubuntu 16.04 LTS系统中,管理和排查网络问题时,查看和验证DNS(域名系统)配置是一项至关重要的技能,DNS负责将我们易于记忆的域名(如www.google.com)解析为机器能够识别的IP地址,当出现无法访问网站、网络延迟高或应用连接失败等问题时,DNS往往是首要的排查对象,本文将系统性地介绍在Ubuntu 16.04中检查DNS配置和诊断DNS解析问题的多种方法,从基础的配置文件查看到强大的命令行工具使用,帮助您全面掌握DNS状态。

Ubuntu 16.04怎么查看当前使用的DNS服务器地址?

理解DNS解析的基本流程

在深入命令之前,理解Ubuntu 16.04中DNS解析的基本流程有助于更好地进行诊断,一个域名解析请求会经历以下步骤:

  1. 应用程序发起请求:您在浏览器中输入一个网址。
  2. 查询本地解析器:系统会首先查看本地的DNS配置,该配置通常定义了应该向哪些DNS服务器发送请求。
  3. 缓存查询:系统(如systemd-resolved)或应用程序会检查本地缓存中是否已有该域名的解析记录,如果有,则直接返回,提高效率。
  4. 向上游服务器查询:如果缓存中没有,系统会向配置的DNS服务器(通常是路由器、ISP提供的DNS或公共DNS如8.8.8.8)发送查询请求。
  5. 递归查询:上游DNS服务器负责进行递归查询,最终找到该域名对应的IP地址并返回给您的系统。

了解这个流程后,我们就可以从各个环节入手进行检查。

检查核心配置文件:/etc/resolv.conf

这是最直接、最基础的DNS配置文件,它定义了系统使用的DNS服务器,您可以使用任何文本编辑器或cat命令查看其内容:

cat /etc/resolv.conf

一个典型的输出可能如下所示:

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 127.0.0.53
options edns0
search example.com

关键字解析

  • nameserver:指定DNS服务器的IP地址,您可以设置多个,系统会按顺序尝试,在Ubuntu 16.04中,您可能会看到0.0.53,这表示系统正在使用systemd-resolved服务提供的本地DNS存根服务器。
  • search:定义了域名搜索列表,当您尝试访问一个不包含完整域名的主机(如server1)时,系统会自动尝试server1.example.com
  • options:设置解析器的选项,如edns0(扩展DNS机制)等。

重要提示:在Ubuntu 16.04及更高版本中,/etc/resolv.conf通常是一个由systemd-resolved服务管理的符号链接,直接手动编辑此文件,重启后更改可能会被覆盖,正确的做法是通过systemd-resolved或NetworkManager进行配置。

使用systemd-resolved检查DNS状态

既然systemd-resolved是现代Ubuntu系统中的核心组件,我们就应该使用它提供的工具来获取最准确的信息。systemd-resolve命令是首选。

systemd-resolve --status

这个命令会提供非常详细的DNS配置信息,包括全局配置和每个网络接口的特定配置,输出内容通常分为几个部分:

  • Global:显示全局DNS设置,如DNSSEC模式、DNS存根服务器的监听地址(通常是0.0.53:53)。
  • Link 2 (eth0):针对特定网络接口(如eth0)的DNS配置,这里会列出该接口从DHCP获取或手动配置的DNS服务器,这是您实际的上游DNS服务器。
  • DNS Servers:明确列出了当前正在使用的上游DNS服务器IP地址。
  • DNS Domain:显示通过DHCP获取的域名。

通过这个命令,您可以清晰地看到系统真正在使用的DNS服务器,而不是仅仅看/etc/resolv.conf中的存根地址。

Ubuntu 16.04怎么查看当前使用的DNS服务器地址?

使用命令行工具进行DNS查询和诊断

除了查看配置,更重要的是主动发起DNS查询来测试解析是否正常,以下是三个最常用的工具。

dig(Domain Information Groper)

dig是功能最强大、信息最丰富的DNS查询工具,强烈推荐使用。

基本用法:查询一个域名的A记录(IPv4地址)。

dig www.google.com

输出解读

  • QUESTION SECTION:您提出的问题。
  • ANSWER SECTION:收到的答案,即域名对应的IP地址。
  • QUERY TIME:查询花费的时间,可用于判断DNS服务器响应速度。
  • SERVER:本次查询使用的DNS服务器。

指定DNS服务器查询:使用符号可以指定向哪个DNS服务器发起查询,这对于对比不同DNS服务器的性能和结果非常有用。

dig @8.8.8.8 www.baidu.com

查询不同类型的记录

# 查询邮件交换记录
dig google.com MX
# 查询文本记录
dig google.com TXT
# 查询所有可用记录
dig google.com ANY

nslookup(Name Server Lookup)

nslookup是一个经典的工具,交互式和非交互式均可使用,虽然功能不如dig强大,但因其简单直观,仍被广泛使用。

基本用法

nslookup www.github.com

交互式模式:直接输入nslookup进入交互界面,然后可以连续查询多个域名。

Ubuntu 16.04怎么查看当前使用的DNS服务器地址?

host

host是一个比dignslookup都更简洁的工具,适合快速、简单的查询。

# 正向查询(域名到IP)
host www.ubuntu.com
# 反向查询(IP到域名)
host 91.189.88.181
工具 复杂度 信息量 推荐用途
dig 非常详细 深度诊断、性能测试、脚本自动化
nslookup 适中 快速交互式查询、跨平台通用
host 简洁 最基础的快速查询

高级排查技巧

当基础方法无法解决问题时,可以尝试以下技巧:

  • 清空DNS缓存systemd-resolved会缓存查询结果,有时缓存了错误的或过期的记录会导致问题,可以清空它:
    sudo systemd-resolve --flush-caches
  • 检查网络连接:确保您能够连接到DNS服务器的53端口,可以使用nc(netcat)或telnet工具。
    nc -zv 8.8.8.8 53

相关问答FAQs

我手动修改了/etc/resolv.conf文件,添加了新的DNS服务器,但为什么重启后我的修改就消失了?

解答:这是因为在Ubuntu 16.04中,/etc/resolv.conf文件通常是一个由systemd-resolved服务管理的符号链接,该服务会在系统启动或网络状态变更时,根据其自身配置(通常来自NetworkManager或Netplan)自动重新生成/etc/resolv.conf文件,从而覆盖您的手动修改,要让DNS配置永久生效,您应该:

  1. 通过NetworkManager的图形界面或nmcli命令行工具为特定网络连接配置DNS。
  2. 如果是静态IP配置,可以编辑/etc/network/interfaces文件,在其中添加dns-nameservers指令。
  3. 对于使用systemd-resolved的系统,更现代的方法是通过/etc/systemd/resolved.conf文件配置全局DNS,然后重启systemd-resolved服务。

dignslookup这两个工具有什么主要区别,我应该优先使用哪一个?

解答:主要区别在于设计理念和输出信息的详细程度。nslookup是一个较老的、相对简单的工具,设计初衷是提供易于人类阅读的交互式查询体验,它的输出格式固定,信息量有限,而dig是一个更现代、更强大的工具,其设计目标是成为一个灵活、可脚本化的诊断工具。dig的输出非常详细,结构化,包含了查询的每一个环节信息(如查询时间、响应服务器、TTL值等),并且支持查询任意类型的DNS记录,功能远超nslookup,对于日常快速检查,两者都可以,但对于专业的网络管理员、开发者或进行深度故障排查时,强烈推荐优先使用dig,因为它能提供更全面、更准确的诊断信息。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/258731.html

Like (0)
小编小编
Previous 2025年10月20日 18:37
Next 2025年10月20日 18:44

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注