Dig命令使用大全稍加整理(附dig.exe精简版下载)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Dig命令使⽤⼤全稍加整理(附dig.exe精简版下载)Dig简介:
Dig精简版下载
dig.exe(DNS故障诊断⼯具) v9.14 x64 x32 精简版
类型:⽹络⼯具
⼤⼩:29MB
语⾔:简体中⽂
时间:2019-04-03
查看详情
下⾯是⼀个带有注释的查询:
$ dig
上⾯是我调⽤dig 的命令⾏。
; <<>> DiG 9.2.3 <<>>
;; 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:
;. IN A
在这个查询段中,Dig显⽰出我们查询的输出,默认的查询是查询A记录,你可以显⽰或者禁⽌掉这些⽤+[no] question选项
;; ANSWER SECTION:
. 600 IN A 204.152.184.88
最后,我们得到我们查询的结果。
的地址是204.152.184.8,我不知道为什么你们更喜欢过滤掉
这些输出,但是你可以⽤+[no]answer保留这些选项。
;; AUTHORITY SECTION:
. 2351 IN NS .
. 2351 IN NS .
. 2351 IN NS .
这段权威说明告诉我们哪个DNS服务器给我们提供权威的答案。
在这个例⼦中,有3个Name Server,你
可以⽤+[no]authority选项保留这段输出。
;; ADDITIONAL SECTION:
. 171551 IN A 209.182.216.75
. 2351 IN A 204.152.184.65
. 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记录,或者任意综合查询。
查找的A记录:(此处⼀定是域⽽不是主机,如我公司为)
dig A +noall +answer
查找 MX记录的列表:
dig MX +noall +answer
查找的权威DNS:
dig NS +noall +answer
查询上⾯所有的记录:
dig ANY +noall +answer
在现在这种IPv4和IPV6混⽤的情况下,你也可以使⽤AAAA的选项查询主机的IPv6 AAAA记录:
dig AAAA +short
如果你要查询的域允许转发,你也可以查询到相关的信息,⽐如DNS记录在internet上的⽣存周期,但是,现
在只有很少的DNS允许⽆限制转发。
我们怎样查询?获得精简答案?
当我们需要⼀个快速回答时,+short选项是你最好的朋友:
dig +short
204.152.184.88
获得⼀个不是⼗分精简的答案?
精简答案和只有⼀个答案是不⼀样的,
获得没有附加信息的详细答案的⽅法是使⽤+noall选项,这样就只保留你想要的输出。
下⾯是只有⼀个答案的精简查询,最后包含所有的配置信息,包括TTL数据,格式化的BIND配置信息。
$ dig mx +short
20 .
30 .
10 .
$ dig +nocmd mx +noall +answer
. 3583 IN MX 30 .
. 3583 IN MX 10 .
. 3583 IN MX 20 .
获得⼀个详细答案?
通过它的man page,你可以通过+multiline选项获得冗长的多⾏模式⼈性化注释的DSN的SOA记录,⼀般来说,⽤+multiline选项获得的信息可以显⽰很多,就像BIND配置⽂件⼀样。
$ dig +nocmd any +multiline +noall +answer
. 14267 IN A 129.95.59.31
. 14267 IN MX 5 .
. 14267 IN MX 15 .
. 14267 IN SOA . . (
200408230 ; serial
14400 ; refresh (4 hours)
900 ; retry (15 minutes)
3600000 ; expire (5 weeks 6 days 16 hours)
14400 ; minimum (4 hours)
)
. 14267 IN NS .
. 14267 IN NS .
. 14267 IN NS .
查找PTR记录?
可以⽤ -x的选项查找IP地址的主机名。
$ dig -x 204.152.184.167 +short
.
在这个循环中,脚本很灵活地在给出的⼦⽹中映射出名字。
#!/bin/bash
NET=18.7.22
for n in $(seq 1 254); do
ADDR=${NET}.${n}
echo -e "${ADDR}\t$(dig -x ${ADDR} +short)"
done
查询⼀个不同的命名服务器?
查询命令如下:
**************
使⽤/etc/resolv.conf⾥⾯的记录查询
主机将从/etc/resolv.conf⽂件⾥⾯⾃动查询DNS记录
$ host www
has address 65.102.49.170
但是,默认情况下,dig会产⽣出⼀些意想不到的输出。
如果你想查询本地主机名⽽不是全域名时候,使⽤
+search 选项
dig www +search
处理⼤部分的查询?
如果你想查询⼤量的主机名,你可以把它们存放在⼀个⽂本⽂件中(⼀条记录⼀⾏),使⽤带-f参数的dig来依
次查询。
# 查询⼤量的主机名
dig -f /path/to/host-list.txt
# 相同的,更明确的输出
dig -f /path/to/host-list.txt +noall +answer
但是我要告诉你的是,dig 9.2.3以及以后的版本都不⽀持使⽤-f的选项反向查询了。
验证DNS映射
不正确的DNS配置会给你带来很多苦恼,你可以通过如下两种⽅式验证你的DNS配置:
1.每个主机名应该被解析到⼀个IP地址,⽽且那个IP地址也应该反指向那个主机名。
2.如果你⼦⽹上⼀个地址被反指向⼀个主机名,那么那个主机名也必须指向这个IP。
对于这两条规则来说,还有⼀些例外情况,⽐如CNAME应该⾸先解析到另外⼀个主机名,⽽且只能指向⼀个IP
,有时多个主机名指向了相同的IP地址,但是那个IP只能有⼀个PTR记录。
综上,这些有助于你检查你的DNS映射是否像你想象的那样⼯作。
你也可以编写⼀个测试脚本写⼊你已知的主机名,如下所⽰,内容很简单;它执⾏时当捕捉到⼀个CNAME时它就会中断,如果多个主机名指向同⼀个IP地址它会报错。
我们假设这个⽂件包含你的主机名叫做named-hosts 。
#!/bin/bash
#
# test DNS forward- and reverse-mapping
#
# edit this variable to reflect local class C subnet(s)
NETS="192.168.1 192.168.2"
# Test name to address to name validity
echo
echo -e "\tname -> address -> name"
echo '----------------------------------'
while read H; do
ADDR=$(dig $H +short)
if test -n "$ADDR"; then
HOST=$(dig -x $ADDR +short)
if test "$H" = "$HOST"; then
echo -e "ok\t$H -> $ADDR -> $HOST"
elif test -n "$HOST"; then
echo -e "fail\t$H -> $ADDR -> $HOST"
else
echo -e "fail\t$H -> $ADDR -> [unassigned]"
fi
else
echo -e "fail\t$H -> [unassigned]"
fi
done < named-hosts
# Test address to name to address validity
echo
echo -e "\taddress -> name -> address"
echo '-------------------------------------'
for NET in $NETS; do
for n in $(seq 1 254); do
A=${NET}.${n}
HOST=$(dig -x $A +short)
if test -n "$HOST"; then
ADDR=$(dig $HOST +short)
if test "$A" = "$ADDR"; then
echo -e "ok\t$A -> $HOST -> $ADDR"
elif test -n "$ADDR"; then
echo -e "fail\t$A -> $HOST -> $ADDR"
else
echo -e "fail\t$A -> $HOST -> [unassigned]"
fi
fi
done
done
有趣的dig
创建属于你⾃⼰的named.root⽂件
任何连接到internet 的DNS服务器肯定会有InterNIC的named.root⽂件的拷贝,⽂件列出所有internet的根DNS,如果你不怕⿇烦的话,你可以经常从InterNIC的ftp服务器上把它下载下来,或者,你可以使⽤dig命令
创建属于你⾃⼰的时髦的named.root
# compare with ftp:///domain/named.root
dig +nocmd . NS +noall +answer +additional
你的TTL值在这边可能会很⼩,但是它是你找到最新的named.root⽂件!
跟踪dig的查询路径
你可能是个traceroute的狂热爱好者,经常喜欢查看如何从点A连接点B。
那你可以使⽤dig +trace选项做类似
的事。
dig gentoo.de +trace
你可以在dig输出的头部分看到根DNS,然后找到负责解析所有*.de的DNS,最后找到gentoo.de的域名IP。
获取SOA记录
作为⼀个DNS管理员,我有时会(对DNS配置)做⼀些改变,并且想知道我的DNS解析是否推送的还是旧数据,
这个+nssearch选项可以给你的公众服务器提供清楚的统计信息。
# the unvarnished truth
dig +nssearch
# the same, displaying only serial number and hostname
dig +nssearch | cut -d' ' -f4,11
解释TTL数值
我喜爱google有很多原因,其中⼀个原因就是它在我的WEB⽇志中提供了精确的链接,它会使我很容易地指出哪种类型的查询引导⼈们来访问这个站点的页⾯。
出乎意料的是,我已经看到很多请求要求查询TTL数值,我从来没想到TTL会成为最受欢迎的东东,但是你每天都在学习新东西,所以,应⼤家的要求,这⾥稍微介绍⼀下TTL。
如果你从本地DNS查询互联⽹地址,服务器指出从哪⾥获得权威的答案并获得地址,⼀旦服务器获知答案,它将这个答案保存在本地缓存中以免你在稍后的时间内再次查询同样的地址,这样它就会很快地从缓存中获取你要的答案,⽐你再次从internet查询要快很多。
当域管理员配置DNS记录时,他们可以决定这个记录可以在缓存中保存多长时间,这就是TTL数值(通常⽤多少秒来表⽰)。
通常地,远端服务器⼀般对记录的缓存只保存TTL数值长的时间。
时间过期后,服务器会刷新它的本地缓存并重新查询⼀个权威答案。
当你⽤dig来查询DNS服务器某条记录时,服务器会告诉dig这条记录可以在缓存中保持的时间长短。
举个例⼦,像上⾯写的那样,域的MX记录的TTL值是300s,域的管理员要求远端服务器缓存它的MX记录不能⾼于5分钟,所以当你第⼀次查询那个记录(的MX记录)时,dig会告诉你⼀个300
的TTL。
$ dig +nocmd MX +noall +answer
. 300 IN MX 20 .
. 300 IN MX 10 .
如果你⼀段时间后再去查,你会发现TTL值减少为280(中间隔了20s)。
$ dig +nocmd MX +noall +answer
. 280 IN MX 10 .
. 280 IN MX 20 .
如果你的时间计算得⾜够好,你会获取这条记录的最后⽣存时间。
$ dig +nocmd MX +noall +answer
. 1 IN MX 10 .
. 1 IN MX 20 .
在那之后,你查询的DNS服务器会“忘记”这个问题的答案,在你下次查询这条记录时,整个循环⼜将开始(
本例⼦中是300s)。
在 unix 和 linux 下,建议⼤家使⽤ dig 命令来代替 nslookup。
dig 命令的功能⽐ nslookup 强⼤很多,不像 nslookkup 还得set 来 set 去的,怪⿇烦的。
下⾯是 dig 的⼀些⽐较常⽤的命令:
# dig 最基本的⽤法
**********************
# ⽤ dig 查看 zone 数据传输
**************************
# ⽤ dig 查看 zone 数据的增量传输
**************************=N
# ⽤ dig 查看反向解析
dig -x 124.42.102.203 @server
# 查找⼀个域的授权 dns 服务器
dig +nssearch
# 从根服务器开始追踪⼀个域名的解析过程
dig +trace
# 查看你使⽤的是哪个 F root dns server
dig+********************.NETHOSTNAME.BINDCHAOSTXT
# 查看 bind 的版本号
dig @bind_dns_server CHAOS TXT version.bind
********************************
你可以到 去下载⼀个 bind for windows 的版本安装,安装后就可以在 windows 上使⽤ dig 命令了。
^O^
ftp:///isc/bind/contrib/ntbind-9.3.0/BIND9.3.0.zip
*********************************
⽤途
DNS 查询实⽤程序。
语法
dig [@server] [-b address] [-c class] [-f filename] [-k filename] [ -n ][-p port#] [-t type] [-x addr] [-y name:key] [name] [type] [class] [queryopt...]
dig [-h]
dig [global-queryopt...] [query...]
描述
dig(域信息搜索器)命令是⼀个⽤于询问 DNS 域名服务器的灵活的⼯具。
它执⾏ DNS 搜索,显⽰从受请求的域名服务器返回的答复。
多数 DNS 管理员利⽤ dig 作为 DNS 问题的故障诊断,因为它灵活性好、易⽤、输出清晰。
虽然通常情况下 dig 使⽤命令⾏参数,但它也可以按批处理模式从⽂件读取搜索请求。
不同于早期版本,dig 的 BIND9 实现允许从命令⾏发出多个查询。
除⾮被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的所有服务器。
当未指定任何命令⾏参数或选项时,dig 将对“.”(根)执⾏ NS 查询。
标志
-b address 设置所要询问地址的源 IP 地址。
这必须是主机⽹络接⼝上的某⼀合法的地址。
-c class 缺省查询类(IN for internet)由选项 -c 重设。
class 可以是任何合法类,⽐如查询 Hesiod 记录的 HS 类或查询CHAOSNET 记录的 CH 类。
-f filename 使 dig 在批处理模式下运⾏,通过从⽂件 filename 读取⼀系列搜索请求加以处理。
⽂件包含许多查询;每⾏⼀个。
⽂件中的每⼀项都应该以和使⽤命令⾏接⼝对 dig 的查询相同的⽅法来组织。
-h 当使⽤选项 -h 时,显⽰⼀个简短的命令⾏参数和选项摘要。
-k filename 要签署由 dig 发送的 DNS 查询以及对它们使⽤事务签名(TSIG)的响应,⽤选项 -k 指定 TSIG 密钥⽂件。
-n 缺省情况下,使⽤ IP6.ARPA 域和 RFC2874 定义的⼆进制标号搜索 IPv6 地址。
为了使⽤更早的、使⽤ IP6.INT 域和nibble 标签的 RFC1886 ⽅法,指定选项 -n(nibble)。
-p port# 如果需要查询⼀个⾮标准的端⼝号,则使⽤选项 -p。
port# 是 dig 将发送其查询的端⼝号,⽽不是标准的 DNS 端⼝号53。
该选项可⽤于测试已在⾮标准端⼝号上配置成侦听查询的域名服务器。
-t type 设置查询类型为 type。
可以是 BIND9 ⽀持的任意有效查询类型。
缺省查询类型是 A,除⾮提供 -x 选项来指⽰⼀个逆向查询。
通过指定 AXFR 的 type 可以请求⼀个区域传输。
当需要增量区域传输(IXFR)时,type 设置为 ixfr=N。
增量区域传输将包含⾃从区域的 SOA 记录中的序列号改为 N 之后对区域所做的更改。
-x addr 逆向查询(将地址映射到名称)可以通过 -x 选项加以简化。
addr 是⼀个以⼩数点为界的 IPv4 地址或冒号为界的 IPv6地址。
当使⽤这个选项时,⽆需提供 name、class 和 type 参数。
dig ⾃动运⾏类似 11.12.13.10.in-addr.arpa 的域名查询,并分别设置查询类型和类为 PTR 和 IN。
-y name:key 您可以通过命令⾏上的 -y 选项指定 TSIG 密钥;name 是 TSIG 密码的名称,key 是实际的密码。
密码是 64 位加密字符串,通常由 dnssec-keygen(8)⽣成。
当在多⽤户系统上使⽤选项 -y 时应该谨慎,因为密码在 ps(1)的输出或shell 的历史⽂件中可能是可见的。
当同时使⽤ dig 和 TSCG 认证时,被查询的名称服务器需要知道密码和解码规则。
在BIND 中,通过提供正确的密码和 named.conf 中的服务器声明实现。
参数
global-queryopt... 全局查询选项(请参阅多个查询)。
查询查询选项(请参阅查询选项)。
查询选项
dig 提供查询选项号,它影响搜索⽅式和结果显⽰。
⼀些在查询请求报头设置或复位标志位,⼀部分决定显⽰哪些回复信息,其它的确定超时和重试战略。
每个查询选项被带前缀(+)的关键字标识。
⼀些关键字设置或复位⼀个选项。
通常前缀是求反关键字含义的字符串 no。
其他关键字分配各选项的值,⽐如超时时间间隔。
它们的格式形如 +keyword=value。
查询选项是:+[no]tcp
查询域名服务器时使⽤ [不使⽤] TCP。
缺省⾏为是使⽤ UDP,除⾮是 AXFR 或 IXFR 请求,才使⽤ TCP 连接。
+[no]vc
查询名称服务器时使⽤ [不使⽤] TCP。
+[no]tcp 的备⽤语法提供了向下兼容。
vc 代表虚电路。
+[no]ignore
忽略 UDP 响应的中断,⽽不是⽤ TCP 重试。
缺省情况运⾏ TCP 重试。
+domain=somename
设定包含单个域 somename 的搜索列表,好像被 /etc/resolv.conf 中的域伪指令指定,并且启⽤搜索列表处理,好像给定了+search 选项。
+[no]search
使⽤ [不使⽤] 搜索列表或 resolv.conf 中的域伪指令(如果有的话)定义的搜索列表。
缺省情况不使⽤搜索列表。
+[no]defname
不建议看作 +[no]search 的同义词。
+[no]aaonly
该选项不做任何事。
它⽤来提供对设置成未实现解析器标志的 dig 的旧版本的兼容性。
+[no]adflag
在查询中设置 [不设置] AD(真实数据)位。
⽬前 AD 位只在响应中有标准含义,⽽查询中没有,但是出于完整性考虑在查询
中这种性能可以设置。
+[no]cdflag
在查询中设置 [不设置] CD(检查禁⽤)位。
它请求服务器不运⾏响应信息的 DNSSEC 合法性。
+[no]recursive
切换查询中的 RD(要求递归)位设置。
在缺省情况下设置该位,也就是说 dig 正常情形下发送递归查询。
当使⽤查询选项+nssearch 或 +trace 时,递归⾃动禁⽤。
+[no]nssearch
这个选项被设置时,dig 试图寻找包含待搜名称的⽹段的权威域名服务器,并显⽰⽹段中每台域名服务器的 SOA 记录。
+[no]trace
切换为待查询名称从根名称服务器开始的代理路径跟踪。
缺省情况不使⽤跟踪。
⼀旦启⽤跟踪,dig 使⽤迭代查询解析待查询名称。
它将按照从根服务器的参照,显⽰来⾃每台使⽤解析查询的服务器的应答。
+[no]cmd
设定在输出中显⽰指出 dig 版本及其所⽤的查询选项的初始注释。
缺省情况下显⽰注释。
+[no]short
提供简要答复。
缺省值是以冗长格式显⽰答复信息。
+[no]identify
当启⽤ +short 选项时,显⽰ [或不显⽰] 提供应答的 IP 地址和端⼝号。
如果请求简短格式应答,缺省情况不显⽰提供应答的服务器的源地址和端⼝号。
+[no]comments
切换输出中的注释⾏显⽰。
缺省值是显⽰注释。
+[no]stats
该查询选项设定显⽰统计信息:查询进⾏时,应答的⼤⼩等等。
缺省显⽰查询统计信息。
+[no]qr
显⽰ [不显⽰] 发送的查询请求。
缺省不显⽰。
+[no]question
当返回应答时,显⽰ [不显⽰] 查询请求的问题部分。
缺省作为注释显⽰问题部分。
+[no]answer
显⽰ [不显⽰] 应答的回答部分。
缺省显⽰。
+[no]authority
显⽰ [不显⽰] 应答的权限部分。
缺省显⽰。
+[no]additional
显⽰ [不显⽰] 应答的附加部分。
缺省显⽰。
+[no]all
设置或清除所有显⽰标志。
+time=T
为查询设置超时时间为 T 秒。
缺省是5秒。
如果将 T 设置为⼩于1的数,则以1秒作为查询超时时间。
+tries=A
设置向服务器发送 UDP 查询请求的重试次数为 A,代替缺省的 3 次。
如果把 A ⼩于或等于 0,则采⽤ 1 为重试次数。
+ndots=D
出于完全考虑,设置必须出现在名称 D 的点数。
缺省值是使⽤在 /etc/resolv.conf 中的 ndots 语句定义的,或者是 1,如果没有 ndots 语句的话。
带更少点数的名称被解释为相对名称,并通过搜索列表中的域或⽂件 /etc/resolv.conf 中的域伪指令进⾏搜索。
+bufsize=B
设置使⽤ EDNS0 的 UDP 消息缓冲区⼤⼩为 B 字节。
缓冲区的最⼤值和最⼩值分别为 65535 和 0。
超出这个范围的值⾃动舍⼊到最近的有效值。
+[no]multiline
以详细的多⾏格式显⽰类似 SOA 的记录,并附带可读注释。
缺省值是每单个⾏上显⽰⼀条记录,以便于计算机解析 dig 的输出。
多条查询
dig 的 BIND9 ⽀持在命令⾏上指定多个查询(⽀持 -f 批处理⽂件选项的附加功能)。
每条查询可以使⽤⾃⼰的标志位、选项和查询选项。
在这种情况下,在上⾯描述的命令⾏语法中,每条查询⾃变量代表⼀个个别查询。
每⼀条由任意标准选项和标志、待查询名称、可选查询类型和类以及任何适⽤于该查询的查询选项。
也可以使⽤对所有查询均有效的查询选项全局集合。
全局查询选项必须位于命令⾏上第⼀个名称、类、类型、选项、标志和查询选项的元组之前。
任何全局查询选项(除了 +[no]cmd 选项)可以被下⾯的查询特别选项重设。
例如:
dig +qr any -x 127.0.0.1 ns +noqr显⽰ dig 如何从命令⾏出发进⾏三个查询:⼀个针对 的任意查询、⼀个 127.0.0.1 的逆向查询,以及⼀个 的 NS 记录查询。
应⽤了 +qr 的全局查询选项,以便 dig 显⽰进⾏每条查询的初始查询。
最后那个查询有⼀个本地查询选项 +noqr,表⽰ dig 在搜索 的 NS 记录时不显⽰初始查询。
⽰例
⼀个典型的 dig 调⽤类似:
dig @server name type其中:
server
待查询名称服务器的名称或 IP 地址。
可以是⽤点分隔的 IPv4 地址或⽤冒号分隔的 IPv6 地址。
当由主机提供服务器参数时,dig 在查询域名服务器前先解析那个名称。
如果没有服务器参数可以提供,dig 参考 /etc/resolv.conf,然后查询列举在那⾥的域名服务器。
显⽰来⾃域名服务器的应答。
name
将要查询的资源记录的名称。
type
显⽰所需的查询类型- ANY、A、MX、SIG,以及任何有效查询类型等。
如果不提供任何类型参数,dig 将对纪录 A 执⾏查询。