如何检查 Linux 中是否配置了 DNS 服务器

LinuxBeginner
立即练习

介绍

在这个实验中,你将学习如何检查你的 Linux 系统是否配置了 DNS 服务器。我们将查看主要配置文件 /etc/resolv.conf 来确定已配置的 DNS 服务器。

接下来,你将使用 nslookup 命令测试 DNS 解析,并验证你的系统能否成功地将域名转换为 IP 地址。最后,我们将检查 systemd-resolved 配置文件 /etc/systemd/resolved.conf,以了解本地 DNS 解析器服务是如何配置的。

使用 cat /etc/resolv.conf 检查 DNS

在这一步中,我们将首先了解你的 Linux 系统是如何在互联网上查找网站和服务的。这个过程称为 DNS 解析,它由一个服务来处理,该服务将人类可读的域名(如 google.com)转换为计算机可读的 IP 地址(如 172.217.160.142)。

在许多 Linux 系统上,DNS 解析的主要配置文件是 /etc/resolv.conf。该文件告诉系统要使用哪些 DNS 服务器。

让我们使用 cat 命令查看这个文件的内容。cat 命令是一个简单但强大的工具,用于显示文件的内容。

如果终端尚未打开,请打开它。你可以在桌面左侧找到 Xfce 终端 图标。

现在,输入以下命令并按回车键:

cat /etc/resolv.conf

你应该会看到类似以下的输出:

## This is /run/systemd/resolve/stub-resolv.conf.
## Handled by systemd-resolved(8).
## DNS servers configured in /etc/systemd/resolved.conf.
nameserver 127.0.0.53
options edns0 trust-ad

让我们来分析一下输出内容:

  • 以 # 开头的行是注释,系统会忽略这些行。
  • nameserver 127.0.0.53:这一行是这里最重要的部分。它指定了系统将使用的 DNS 服务器的 IP 地址。在这种情况下,127.0.0.53 是一个特殊的 IP 地址,它指向一个本地 DNS 解析器服务,通常是 systemd-resolved,我们稍后会详细介绍。这个本地解析器会将你的 DNS 请求转发到外部 DNS 服务器。
  • options edns0 trust-ad:这些是与 DNS 查询相关的选项。edns0 是 DNS 的扩展机制,trust-ad 与 DNSSEC(DNS 安全扩展)有关。目前你不需要担心这些选项。

了解 /etc/resolv.conf 是解决与 DNS 相关的网络连接问题的第一步。如果这个文件缺失或包含错误信息,你的系统可能无法解析域名。

点击 继续 进入下一步。

使用 nslookup 测试 DNS 解析

在上一步中,我们查看了 /etc/resolv.conf 文件,该文件告知系统在哪里可以找到 DNS 服务器。现在,让我们使用 nslookup 命令来实际测试系统是否能够解析域名。

nslookup 是一个命令行工具,用于查询域名系统 (DNS),以获取域名与 IP 地址的映射关系,或查询任何其他特定的 DNS 记录。它是进行网络故障排查的基础工具。

让我们使用 nslookup 来查找 example.com 的 IP 地址。在终端中输入以下命令并按下回车键:

nslookup example.com

你应该会看到类似以下的输出:

Server:  127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
Name: example.com
Address: 93.184.216.34

让我们来分析一下这个输出:

  • Server: 127.0.0.53:这显示了 nslookup 用于查询的 DNS 服务器的 IP 地址。正如我们在上一步中看到的,这是 /etc/resolv.conf 中指定的本地解析器。
  • Address: 127.0.0.53#53:这是 DNS 服务器的 IP 地址和端口号。DNS 通常使用端口 53。
  • Non-authoritative answer::这表明该答案来自一个缓存 DNS 服务器,而不是 example.com 的权威服务器。
  • Name: example.com:这是你查询的域名。
  • Address: 93.184.216.34:这是 DNS 服务器为 example.com 返回的 IP 地址。当你尝试访问 example.com 时,你的计算机将连接到这个地址。

如果 nslookup 返回了一个 IP 地址,这意味着你的系统成功解析了该域名。如果失败,你可能会看到一条错误消息,表明 DNS 解析存在问题。

你也可以尝试解析其他域名,例如 google.com 或 labex.io。

nslookup google.com

输出将显示与 google.com 关联的 IP 地址。请注意,单个域名可以有多个 IP 地址。

这个命令对于验证你的 DNS 配置是否正常工作以及查找特定域名的 IP 地址非常有用。

点击 继续 进入下一步。

使用 cat /etc/systemd/resolved.conf 检查 resolved 配置

在前面的步骤中,我们了解到 /etc/resolv.conf 通常指向一个本地地址 (127.0.0.53),该地址由 systemd-resolved 处理。这个服务是 systemd 系统和服务管理器的一部分,它为本地应用程序提供网络名称解析功能。

systemd-resolved 的配置通常位于 /etc/systemd/resolved.conf 文件中。让我们检查这个文件,看看本地解析器是如何配置的。

再次使用 cat 命令查看 /etc/systemd/resolved.conf 的内容。在终端中输入以下命令并按下回车键:

cat /etc/systemd/resolved.conf

你应该会看到类似以下的输出:

##  This file is part of systemd.
#
##  systemd is free software; you can redistribute it and/or modify it
##  under the terms of the GNU Lesser General Public License as published by
##  the Free Software Foundation; either version 2.1 of the License, or
##  (at your option) any later version.
#
## Entries in this file show the compile time defaults. Local configuration
## should be placed in a file located in /etc/systemd/resolved.conf.d/.
## See resolved.conf(5) for details.

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=yes
#LLMNR=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes

让我们来看看这个文件的关键部分:

  • 文件开头的注释解释了其用途和许可信息。
  • [Resolve]:这标志着名称解析主配置部分的开始。
  • DNS=:这行被注释掉了,通常在这里你会列出 systemd-resolved 应使用的上游 DNS 服务器的 IP 地址。由于它被注释掉了,systemd-resolved 可能从其他来源(如你的网络配置,例如 DHCP)获取其 DNS 服务器信息。
  • FallbackDNS=:这行被注释掉了,它允许你指定备用 DNS 服务器,当 DNS= 中列出的主 DNS 服务器无法访问时将使用这些备用服务器。
  • 其他被注释掉的选项控制着 systemd-resolved 行为的各个方面,例如 DNSSEC 验证、基于 TLS 的 DNS、缓存以及对多播 DNS (mDNS) 和链路本地多播名称解析 (LLMNR) 的支持。

在这个环境中,实际使用的 DNS 服务器可能由底层网络基础设施(Docker 容器环境)提供。systemd-resolved 充当本地缓存和转发器。

理解 /etc/systemd/resolved.conf 对于在使用 systemd-resolved 的系统上进行高级 DNS 配置和故障排除非常重要。

你现在已经成功检查了这个 Linux 系统上与 DNS 解析相关的主要配置文件。

点击 继续 完成本次实验。

总结

在本次实验中,我们学习了如何检查 Linux 系统上的 DNS 服务器配置。首先,我们使用 cat 命令查看了 /etc/resolv.conf 文件,它是指定系统所使用的 DNS 服务器的主要配置文件。我们了解到,以 # 开头的行是注释,而 nameserver 行则表示 DNS 服务器的 IP 地址,通常是像 127.0.0.53 这样的本地解析器,由 systemd-resolved 处理。

接着,我们使用 nslookup 命令测试了 DNS 解析,以验证配置的 DNS 服务器是否能成功将域名转换为 IP 地址。最后,我们使用 cat 命令查看 /etc/systemd/resolved.conf 文件,检查了 systemd-resolved 服务的配置,该文件进一步详细说明了本地 DNS 解析器的配置方式以及如何将请求转发到外部 DNS 服务器。这些步骤让你对 Linux 上 DNS 的配置和测试有了基本的了解。