Linux dig 命令实用示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用强大的 dig 命令执行 DNS(域名系统)查询并排查网络问题。dig 命令是一个多功能的网络管理工具,允许你获取域名到 IP 地址的映射以及其他 DNS 记录。你将从了解 dig 命令的用途和基本语法开始,然后探索如何执行基本的 DNS 查询,并深入研究 dig 的高级选项以获取更详细的 DNS 信息。

本实验涵盖以下关键步骤:

  1. 理解 dig 命令的用途和语法:你将学习 dig 命令的用途及其基本语法,包括可以修改命令行为的可用选项。

  2. 使用 dig 执行基本的 DNS 查询:你将练习使用 dig 命令执行简单的 DNS 查询,例如查找与域名关联的 IP 地址。

  3. 探索 dig 的高级选项以获取详细的 DNS 信息:你将了解如何利用 dig 的高级选项获取更详细的 DNS 信息,例如跟随引荐链或执行非递归查询。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/PackagesandSoftwaresGroup -.-> linux/software("Linux Software") subgraph Lab Skills linux/software -.-> lab-422636{{"Linux dig 命令实用示例"}} end

理解 dig 命令的用途和语法

在这一步中,你将学习 dig 命令的用途和基本语法。dig 是一个强大的工具,用于执行 DNS(域名系统)查询并排查网络问题。

dig 命令是一个网络管理工具,用于查询域名系统(DNS)以获取域名到 IP 地址的映射以及其他 DNS 记录。它是一个多功能工具,可用于诊断与 DNS 相关的问题,以及执行高级 DNS 查询。

让我们从理解 dig 命令的基本语法开始:

dig [options] [domain]

dig 命令的基本结构包括以下部分:

  • dig:命令名称。
  • [options]:可选标志或参数,用于修改 dig 命令的行为。
  • [domain]:你要查询的域名或 IP 地址。

dig 命令的一些常见选项包括:

  • @server:指定用于查询的 DNS 服务器。
  • +trace:执行递归查询,跟随引荐链直到最终目的地。
  • +norecurse:执行非递归查询,仅查询指定的服务器。
  • +short:显示输出的简化版本。

让我们尝试一个基本的 dig 命令来查找域名 example.com 的 IP 地址:

dig example.com

示例输出:

; <<>> DiG 9.16.1-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57911
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;example.com.                    IN      A

;; ANSWER SECTION:
example.com.             185     IN      A       93.184.216.34

;; Query time: 14 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Apr 14 10:02:47 UTC 2023
;; MSG SIZE  rcvd: 59

此输出显示了与 example.com 域名关联的 IP 地址(93.184.216.34)。

在下一步中,你将学习如何使用 dig 命令执行更高级的 DNS 查询。

使用 dig 执行基本的 DNS 查询

在这一步中,你将学习如何使用 dig 命令执行基本的 DNS 查询。

让我们从查找域名 google.com 的 IP 地址开始:

dig google.com

示例输出:

; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14703
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com.                     IN      A

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

;; Query time: 14 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Apr 14 10:10:12 UTC 2023
;; MSG SIZE  rcvd: 55

输出显示 google.com 的 IP 地址是 142.250.179.78

你还可以执行反向 DNS 查询,以查找与 IP 地址关联的域名。让我们查找 IP 地址 8.8.8.8 的域名:

dig -x 8.8.8.8

示例输出:

; <<>> DiG 9.16.1-Ubuntu <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4852
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa.           IN      PTR

;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.    14400   IN      PTR     dns.google.

;; Query time: 14 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Apr 14 10:10:33 UTC 2023
;; MSG SIZE  rcvd: 73

输出显示与 IP 地址 8.8.8.8 关联的域名是 dns.google.

在下一步中,你将探索更多 dig 的高级选项,以获取详细的 DNS 信息。

探索 dig 的高级选项以获取详细的 DNS 信息

在这一步中,你将学习如何使用 dig 的高级选项来获取更详细的 DNS 信息。

让我们从使用 +trace 选项执行 DNS 查询开始,该选项将显示用于解析域名的完整 DNS 服务器链:

dig +trace google.com

示例输出:

; <<>> DiG 9.16.1-Ubuntu <<>> +trace google.com
;; global options: +cmd
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
...
google.com.             300     IN      A       142.250.179.78

输出显示了从根 DNS 服务器开始,逐步解析 google.com 域名的过程,直到最终获取 IP 地址。

你还可以使用 +norecurse 选项执行非递归 DNS 查询,该选项将仅查询指定的 DNS 服务器,而不会跟随任何引荐:

dig +norecurse @8.8.8.8 google.com

示例输出:

; <<>> DiG 9.16.1-Ubuntu <<>> +norecurse @8.8.8.8 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48840
;; flags: qr rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com.                     IN      A

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

;; Query time: 33 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Apr 14 10:19:14 UTC 2023
;; MSG SIZE  rcvd: 55

此命令直接向 Google DNS 服务器(8.8.8.8)查询 google.com 域名,而不会跟随任何引荐。

你还可以使用 +short 选项来获取更简洁的输出:

dig +short google.com

示例输出:

142.250.179.78

这将仅显示最终的 IP 地址,而不包含其他附加信息。

在下一步中,你将把所学的关于 dig 命令的知识付诸实践。

总结

在本实验中,你学习了 dig 命令的用途和基本语法。dig 是一个强大的工具,用于执行 DNS(域名系统)查询并排查网络问题。你使用 dig 执行了基本的 DNS 查询,以获取域名到 IP 地址的映射,并探索了 dig 的高级选项来获取详细的 DNS 信息,例如使用 @server 选项指定用于查询的 DNS 服务器,使用 +trace 选项执行递归查询,以及使用 +short 选项显示简化的输出。

Linux 命令速查表