Linux命令行模式下查询DNS包括NS记录利器dig命令详解

Dig简介:
Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具 。由于一直缺失
Dig man page文档,本文就权当一个dig使用向导吧 。
Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内,但是在linux系
统下,它通常是某个包的一部分,在Gentoo下是bind-tools,在Redhat/Fedora下是 bind-utils,或者在
Debian下是 dnsutils 。
如果你要查找Bind的配置相关的信息,你参考我的文章:Bind for the mall LAN
(http://www.madboa.com/geek/soho-bind/) 。
看懂默认输出:
最简单最常见的查询是查询一台主机,但是默认情况下,Dig的输出信息很详细 。你可能不需要所有的输出,
但是它确实值得知道 。
=====================================================================
下面是一个带有注释的查询:
$ dig www.isc.org
上面是我调用dig 的命令行 。
; <<>> DiG 9.2.3 <<>> www.isc.org
;; global options: printcmd
Dig的部分输出告诉我们一些有关于它的版本信息(version 9.2.3)和全局的设置选项,如果+nocmd在命令行下
是第一个参数的话,那么这部分输出可以通过加+nocmd的方式查询出来 。
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43071
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
在这里,Dig告诉我们一些从DNS返回的技术信息,这段信息可以用选项 +[no]comments来控制显示,但是小心
,禁止掉comments也可能关闭一些其它的选项 。
;; QUESTION SECTION:
;www.isc.org. IN A
在这个查询段中,Dig显示出我们查询的输出,默认的查询是查询A记录,你可以显示或者禁止掉这些用+[no]
question选项
;; ANSWER SECTION:
www.isc.org. 600 IN A 204.152.184.88
最后,我们得到我们查询的结果 。www.isc.org 的地址是204.152.184.8,我不知道为什么你们更喜欢过滤掉
这些输出,但是你可以用+[no]answer保留这些选项 。
;; AUTHORITY SECTION:
isc.org. 2351 IN NS ns-int.isc.org.
isc.org. 2351 IN NS ns1.gnac.com.
isc.org. 2351 IN NS ns-ext.isc.org.
这段权威说明告诉我们哪个DNS服务器给我们提供权威的答案 。在这个例子中,isc.org有3个Name Server,你
可以用+[no]authority选项保留这段输出 。
;; ADDITIONAL SECTION:
ns1.gnac.com. 171551 IN A 209.182.216.75
ns-int.isc.org. 2351 IN A 204.152.184.65
ns-int.isc.org. 2351 IN AAAA 2001:4f8:0:2::15
这些额外选项很有代表性地包含了列出的权威DNS的IP地址,这段输出可以用+[no]additional选项保留 。
;; Query time: 2046 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Aug 27 08:22:26 2004
;; MSG SIZE rcvd: 173
最后一段默认输出包含了查询的统计数据,可以用+[no]stats保留 。
===========================================================================
我们可以查询什么?
Dig可以让你有效地查询DNS,最常用的查询是A记录,TXT(文本注释),MX记录,NS记录,或者任意综合查询 。
查找yahoo.com的A记录:(此处一定是域而不是主机,如我公司为xinpindao.com)
dig yahoo.com A +noall +answer
查找yahoo.com MX记录的列表:
dig yahoo.com MX +noall +answer
查找yahoo.com的权威DNS:
dig yahoo.com NS +noall +answer
查询上面所有的记录:
dig yahoo.com ANY +noall +answer
在现在这种IPv4和IPV6混用的情况下,你也可以使用AAAA的选项查询主机的IPv6 AAAA记录:
dig www.isc.org AAAA +short
如果你要查询的域允许转发,你也可以查询到相关的信息,比如DNS记录在internet上的生存周期,但是,现
在只有很少的DNS允许无限制转发 。
我们怎样查询?获得精简答案?
当我们需要一个快速回答时,+short选项是你最好的朋友:
dig www.isc.org +short
204.152.184.88
获得一个不是十分精简的答案?
精简答案和只有一个答案是不一样的,
获得没有附加信息的详细答案的方法是使用+noall选项,这样就只保留你想要的输出 。
下面是只有一个答案的精简查询,最后包含所有的配置信息,包括TTL数据,格式化的BIND配置信息 。
$ dig fsf.org mx +short
20 mx20.gnu.org.
30 mx30.gnu.org.
10 mx10.gnu.org.
$ dig +nocmd fsf.org mx +noall +answer
fsf.org. 3583 IN MX 30 mx30.gnu.org.
fsf.org. 3583 IN MX 10 mx10.gnu.org.
fsf.org. 3583 IN MX 20 mx20.gnu.org.
获得一个详细答案?


推荐阅读