简介
在这个实验中,你将学习如何检查你的 Linux 系统是否配置了 DNS 服务器。我们将查看主要配置文件 /etc/resolv.conf
来确定已配置的 DNS 服务器。
接下来,你将使用 nslookup
命令测试 DNS 解析,并验证你的系统能否成功地将域名转换为 IP 地址。最后,我们将检查 systemd-resolved
配置文件 /etc/systemd/resolved.conf
,以了解本地 DNS 解析器服务是如何配置的。
在这个实验中,你将学习如何检查你的 Linux 系统是否配置了 DNS 服务器。我们将查看主要配置文件 /etc/resolv.conf
来确定已配置的 DNS 服务器。
接下来,你将使用 nslookup
命令测试 DNS 解析,并验证你的系统能否成功地将域名转换为 IP 地址。最后,我们将检查 systemd-resolved
配置文件 /etc/systemd/resolved.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 相关的网络连接问题的第一步。如果这个文件缺失或包含错误信息,你的系统可能无法解析域名。
点击 继续 进入下一步。
在上一步中,我们查看了 /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 地址非常有用。
点击 继续 进入下一步。
在前面的步骤中,我们了解到 /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 的配置和测试有了基本的了解。