时间:2023-02-12 03:51:01 | 来源:建站知识
时间:2023-02-12 03:51:01 来源:建站知识
命令行工具 dig 是用于解析域名和故障排查的一个利器。从主要功能上来说,
-- Sandra Henry-stocker(作者)
命令行工具dig
是用于解析域名和故障排查的一个利器。
dig
和 nslookup
之间差异不大,但 dig
更像一个加强版的 nslookup
,可以查询到一些由域名服务器管理的信息,这在排查某些问题的时候非常有用。总的来说,dig
是一个既简单易用又功能强大的命令行工具。(LCTT 译注:dig
和 nslookup
行为的主要区别来自于 dig
使用是是操作系统本身的解析库,而 nslookup
使用的是该程序自带的解析库,这有时候会带来一些行为差异。此外,从表现形式上看,dig
返回是结果是以 BIND 配置信息的格式返回的,也带有更多的技术细节。)dig
最基本的功能就是查询域名信息,因此它的名称实际上是“ 域名信息查询工具(Domain Information Groper)”的缩写。dig
向用户返回的内容可以非常详尽,也可以非常简洁,展现内容的多少完全由用户在查询时使用的选项来决定。+short
选项:$ dig facebook.com +short31.13.66.35
在查询的时候发现有的域名会指向多个 IP 地址?这其实是网站提高其可用性的一种措施。$ dig networkworld.com +short151.101.2.165151.101.66.165151.101.130.165151.101.194.165
也正是由于这些网站通过负载均衡实现高可用,在下一次查询的时候,或许会发现这几个 IP 地址的排序有所不同。(LCTT 译注:浏览器等应用默认会使用返回的第一个 IP 地址,因此这样实现了一种简单的负载均衡。)$ dig networkworld.com +short151.101.130.165151.101.194.165151.101.2.165151.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.165networkworld.com. 300 IN A 151.101.130.165networkworld.com. 300 IN A 151.101.66.165networkworld.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.165networkworld.com. 299 IN A 151.101.66.165networkworld.com. 299 IN A 151.101.194.165networkworld.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 -vDiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu
或者这样的返回信息:$ dig -vDiG 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: +cmdnetworkworld.com. 300 IN A 151.101.194.165networkworld.com. 300 IN A 151.101.130.165networkworld.com. 300 IN A 151.101.66.165networkworld.com. 300 IN A 151.101.2.165
domains
),然后使用下面的 dig
命令遍历整个文件并给出所有查询结果。$ dig +noall +answer -f domainsnetworkworld.com. 300 IN A 151.101.66.165networkworld.com. 300 IN A 151.101.2.165networkworld.com. 300 IN A 151.101.130.165networkworld.com. 300 IN A 151.101.194.165world.std.com. 77972 IN A 192.74.137.5uushenandoah.org. 1982 IN A 162.241.24.209amazon.com. 18 IN A 176.32.103.205amazon.com. 18 IN A 176.32.98.166amazon.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.165networkworld.com. 151.101.130.165networkworld.com. 151.101.194.165networkworld.com. 151.101.2.165world.std.com. 192.74.137.5amazon.com. 176.32.98.166amazon.com. 205.251.242.103amazon.com. 176.32.103.205
关键词:信息,命令,挖掘,使用