CodeGym /课程 /Docker SELF /DNS检查:命令 `nslookup`,`dig`

DNS检查:命令 `nslookup`,`dig`

Docker SELF
第 4 级 , 课程 2
可用

1. DNS 简介

想象一下这样的场景:你想访问你最喜欢的网站,比如 google.com。但是你的浏览器不知道“google”这个词,它需要的是 IP 地址(比如 142.250.74.206)。将域名转换为 IP 地址的过程是通过 DNS(Domain Name System)进行的。如果这个过程出问题了,你的浏览器会显示一条消息:“无法找到服务器”。作为未来的 Linux 网络高手,你必须知道如何诊断和解决与 DNS 相关的问题。

DNS 就像互联网的电话本。我们不用记住复杂的 IP 地址,而是可以使用方便的名字,这些名字会通过 DNS 系统转换。以下是一些关键概念:

  1. DNS 记录:

    • A 记录 (Address Record): 将域名与 IPv4 地址关联。
    • AAAA 记录: 将域名与 IPv6 地址关联。
    • CNAME 记录 (Canonical Name): 指向一个域的别名。
    • MX 记录 (Mail Exchange): 指向处理邮件的服务器。
  2. DNS 服务器:

    • 普通用户通常使用他们网络供应商的 DNS 服务器。
    • 替代选项:Google 的公共 DNS 服务器 (8.8.8.8)、Cloudflare (1.1.1.1)。
  3. 域名解析:

    • 当你在浏览器中输入域名时,它会向 DNS 服务器发送一个请求以获取 IP 地址。

掌握了这些知识,你就准备好通过 nslookupdig 命令来实际学习 DNS 的魔法了。


2. 命令 nslookup

nslookup 是一个工具,它可以让我们检查 DNS 的工作情况。它在大多数 Linux 发行版和其他操作系统中都可以使用。

主要语法:

nslookup [选项] [域名 或 IP 地址]

简单示例:

我们来检查 google.com 的 IP 地址:

nslookup google.com

输出结果:

Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.74.206

关于输出的说明:

  • Server: 处理请求的 DNS 服务器。
  • Non-authoritative answer: 这表示信息并不是从根 DNS 服务器获得的,而是通过其他服务器的缓存提供的。

检查特定的 DNS 服务器

如果你想使用特定的 DNS 服务器,可以在调用命令时指定它:

nslookup google.com 8.8.8.8

这里我们明确选择了谷歌的 DNS 服务器 (8.8.8.8)。

练习: 找到一个学习网站的 IP

尝试执行以下命令:

nslookup linux.org

查看结果 —— 这些是和该网站服务器关联的 IP 地址。


3. 命令 dig

dig (Domain Information Groper) 是一个更高级的工具,用于处理 DNS。它提供有关 DNS 查询和响应的详细信息。

基本语法:

dig [域名] [选项]

查询示例:

dig google.com

输出内容 (主要部分):

;; Question section:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		300	IN	A	142.250.74.206

;; Query time: 35 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 19 10:00:00 UTC 2023
;; MSG SIZE  rcvd: 68

输出部分说明:

  • ANSWER SECTION: 与域名相关联的 IP 地址。
  • Query time: 查询处理时间。
  • SERVER: 处理查询的 DNS 服务器。

4. 常见 DNS 记录及其检查方法

A 记录 (IPv4)

dig linux.org A

结果会显示域名的 IPv4 地址。

AAAA 记录 (IPv6)

dig linux.org AAAA

输出中会包含 IPv6 地址。如果你在用现代网络,这很有用。

MX 记录 (邮件服务器)

dig linux.org MX

用于检查哪个服务器处理域名的邮件通信。


5. 深入练习:dig vs nslookup

现在你可以比较这两条命令的结果:

  1. 运行以下命令:

        nslookup linux.org
    
  2. 然后运行:

        dig linux.org
    

注意,dig 提供了更多细节。例如,你可以看到查询的执行时间以及响应查询的服务器信息。


6. 检查 Google 的 DNS 服务器

任务:

  1. 使用 nslookup 检查 Google 的公共 DNS 服务器是否正常工作:

    nslookup github.com 8.8.8.8
    
  2. 现在用 dig 做同样的事情:

    dig @8.8.8.8 github.com
    
  3. 检查网站是否有 IPv6 地址:

    dig github.com AAAA
    

7. 常见错误和特点

使用 DNS 时,几乎总会遇到以下问题:

  1. DNS 服务器的配置错误: 如果你的 DNS 服务器不能工作或者配置错误,你可能无法收到响应。通过使用 nslookupdig 并手动指定 IP 地址来检查服务器的可用性。
  2. DNS 缓存: 有时候,DNS 的更改可能因为缓存而需要时间。例如,如果 DNS 记录最近更改了,你可能会看到旧的信息。

  3. DNS 服务器不可用: 如果你看到类似 connection timed out; no servers could be reached 的错误,这可能意味着服务器不可用或者被屏蔽了。

  4. 替代命令: nslookup 在最小化安装的 Linux 中可能并不总是可用,而 dig 更常见于标准工具集中。

实际应用知识: 这些有什么用?

  • DNS 问题诊断. 你能快速搞清楚为什么你的浏览器“看不到”某个网站。
  • 服务器配置. 当你在云中设置服务器时,你需要检查 DNS 记录是否正确配置。
  • 网络安全. 掌握 DNS 记录的操作有助于分析钓鱼网站。
  • 面试中. 知道 dignslookup 命令是 Linux/DevOps 专家的常见面试问题。

现在你已经有了深入理解和诊断 DNS 的一切工具。打开终端,试用这些命令吧,别让任何“DNS 故障”击败你。

1
任务
Docker SELF, 第 4 级, 课程 2
已锁定
使用 nslookup 检查网站可用性
使用 nslookup 检查网站可用性
1
任务
Docker SELF, 第 4 级, 课程 2
已锁定
确定域的邮件服务器
确定域的邮件服务器
1
任务
Docker SELF, 第 4 级, 课程 2
已锁定
检查网站的IPv6地址
检查网站的IPv6地址
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION