使用 dig 命令挖掘域名解析信息
创始人
2024-03-02 04:35:33
0

命令行工具 dig 是用于解析域名和故障排查的一个利器。

从主要功能上来说,dignslookup 之间差异不大,但 dig 更像一个加强版的 nslookup,可以查询到一些由域名服务器管理的信息,这在排查某些问题的时候非常有用。总的来说,dig 是一个既简单易用又功能强大的命令行工具。(LCTT 译注:dignslookup 行为的主要区别来自于 dig 使用是是操作系统本身的解析库,而 nslookup 使用的是该程序自带的解析库,这有时候会带来一些行为差异。此外,从表现形式上看,dig 返回是结果是以 BIND 配置信息的格式返回的,也带有更多的技术细节。)

dig 最基本的功能就是查询域名信息,因此它的名称实际上是“ 域名信息查询工具 Domain Information Groper ”的缩写。dig 向用户返回的内容可以非常详尽,也可以非常简洁,展现内容的多少完全由用户在查询时使用的选项来决定。

我只需要查询 IP 地址

如果只需要查询某个域名指向的 IP 地址,可以使用 +short 选项:

$ dig facebook.com +short
31.13.66.35

在查询的时候发现有的域名会指向多个 IP 地址?这其实是网站提高其可用性的一种措施。

$ dig networkworld.com +short
151.101.2.165
151.101.66.165
151.101.130.165
151.101.194.165

也正是由于这些网站通过负载均衡实现高可用,在下一次查询的时候,或许会发现这几个 IP 地址的排序有所不同。(LCTT 译注:浏览器等应用默认会使用返回的第一个 IP 地址,因此这样实现了一种简单的负载均衡。)

$ dig networkworld.com +short
151.101.130.165
151.101.194.165
151.101.2.165
151.101.66.165

标准返回

dig 的标准返回内容则包括这个工具本身的一些信息,以及请求域名服务器时返回的响应内容:

$ dig networkworld.com

; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>*gt; networkworld.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39932
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
networkworld.com.       300     IN      A       151.101.194.165
networkworld.com.       300     IN      A       151.101.130.165
networkworld.com.       300     IN      A       151.101.66.165
networkworld.com.       300     IN      A       151.101.2.165

;; Query time: 108 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Feb 13 13:49:53 EST 2020
;; MSG SIZE  rcvd: 109

由于域名服务器有缓存机制,返回的内容可能是之前缓存好的信息。在这种情况下,dig 最后显示的 查询时间 Query time 会是 0 毫秒(0 msec):

;; Query time: 0 msec        <==
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Feb 13 15:30:09 EST 2020
;; MSG SIZE  rcvd: 109

向谁查询?

在默认情况下,dig 会根据 /etc/resolv.conf 这个文件的内容决定向哪个域名服务器获取查询结果。你也可以使用 @ 来指定 dig 请求的域名服务器。

在下面的例子中,就指定了 dig 向 Google 的域名服务器 8.8.8.8 查询域名信息。

$ dig @8.8.8.8 networkworld.com

; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> @8.8.8.8 networkworld.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21163
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
networkworld.com.       299     IN      A       151.101.130.165
networkworld.com.       299     IN      A       151.101.66.165
networkworld.com.       299     IN      A       151.101.194.165
networkworld.com.       299     IN      A       151.101.2.165

;; Query time: 48 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Feb 13 14:26:14 EST 2020
;; MSG SIZE  rcvd: 109

想要知道正在使用的 dig 工具的版本,可以使用 -v 选项。你会看到类似这样:

$ dig -v
DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu

或者这样的返回信息:

$ dig -v
DiG 9.11.4-P2-RedHat-9.11.4-22.P2.el8

如果你觉得 dig 返回的内容过于详细,可以使用 +noall(不显示所有内容)和 +answer(仅显示域名服务器的响应内容)选项,域名服务器的详细信息就会被忽略,只保留域名解析结果。

$ dig networkworld.com +noall +answer

; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> networkworld.com +noall +answer
;; global options: +cmd
networkworld.com.       300     IN      A       151.101.194.165
networkworld.com.       300     IN      A       151.101.130.165
networkworld.com.       300     IN      A       151.101.66.165
networkworld.com.       300     IN      A       151.101.2.165

批量查询域名

如果你要查询多个域名,可以把这些域名写入到一个文件内(domains),然后使用下面的 dig 命令遍历整个文件并给出所有查询结果。

$ dig +noall +answer -f domains
networkworld.com.       300     IN      A       151.101.66.165
networkworld.com.       300     IN      A       151.101.2.165
networkworld.com.       300     IN      A       151.101.130.165
networkworld.com.       300     IN      A       151.101.194.165
world.std.com.          77972   IN      A       192.74.137.5
uushenandoah.org.       1982    IN      A       162.241.24.209
amazon.com.             18      IN      A       176.32.103.205
amazon.com.             18      IN      A       176.32.98.166
amazon.com.             18      IN      A       205.251.242.103

你也可以在上面的命令中使用 +short 选项,但如果其中有些域名指向多个 IP 地址,就无法看出哪些 IP 地址对应哪个域名了。在这种情况下,更好地做法应该是让 awk 对返回内容进行处理,只留下第一列和最后一列:

$ dig +noall +answer -f domains | awk '{print $1,$NF}'
networkworld.com. 151.101.66.165
networkworld.com. 151.101.130.165
networkworld.com. 151.101.194.165
networkworld.com. 151.101.2.165
world.std.com. 192.74.137.5
amazon.com. 176.32.98.166
amazon.com. 205.251.242.103
amazon.com. 176.32.103.205

via: https://www.networkworld.com/article/3527430/digging-up-ip-addresses-with-the-dig-command.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

dig

相关内容

英媒:中国AI全面赶超,人...
英国《经济学人》3月25日文章,原题:中国在人工智能人才竞争中遥遥...
2026-03-31 13:35:42
InterDigital已...
(全球TMT2025年10月31日讯)InterDigital 1...
2025-10-31 12:15:39
阿里云与阿联酋的Lulu ...
根据阿里云的声明,阿里云与阿联酋的金融服务提供商LuLu Fina...
2025-05-13 06:17:32
部署日志 - 错误: 未指...
根据提供的错误信息,看起来是在Digital Ocean上部署Fa...
2025-01-07 20:01:03
部署的DigitalOce...
在使用DigitalOcean部署应用程序时,如果遇到无法读取环境...
2025-01-07 10:30:39
部署到digitaloce...
查看错误信息在部署的过程中,第一步是查看错误信息。使用以下命令检测...
2025-01-07 08:31:52

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...