使⽤dig命令解析域名
Linux下解析域名除了使⽤nslookup之外,开可以使⽤dig命令来解析域名,dig命令可以得到更多的域名信息。
dig的全称是 (domain information groper)。它是⼀个⽤来灵活探测DNS的⼯具。它会打印出DNS name server的回应。
⼀、dig命令⽤法
dig(域信息搜索器)命令是⼀个⽤于询问 DNS 域名服务器的灵活的⼯具。它执⾏ DNS 搜索,显⽰从受请求的域名服务器返回的答复。多数 DNS 管理员利⽤ dig 作为 DNS 问题的故障诊断,因为它灵活性好、易⽤、输出清晰。
虽然通常情况下 dig 使⽤命令⾏参数,但它也可以按批处理模式从⽂件读取搜索请求。不同于早期版本,dig 的 BIND9 实现允许从命令⾏发出多个查询。除⾮被告知请求特定域名服务器,dig 将尝试 /f 中列举的所有服务器。当未指定任何命令⾏参数或选项时,dig 将对“.”(根)执⾏ NS 查询。
⼆、dig命令选项
-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 中,通过提供正确的密码和 f 中的服务器声明实现。
三、查询选项
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 的搜索列表,好像被 /f 中的域伪指令指定,并且启⽤搜索列表处理,好像给定了 +search 选项。
+[no]search
使⽤ [不使⽤] 搜索列表或 f 中的域伪指令(如果有的话)定义的搜索列表。缺省情况不使⽤搜索列表。
+[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
提供简要答复。缺省值是以冗长格式显⽰答复信息。
当启⽤ +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 的点数。缺省值是使⽤在 /f 中的 ndots 语句定义的,或者是 1,如果没有 ndots 语句的话。带更少点数的名称被解释为相对名称,并通过搜索列表中的域或⽂件 /f 中的域伪指令进⾏搜索。
+bufsize=B
设置使⽤ EDNS0 的 UDP 消息缓冲区⼤⼩为 B 字节。缓冲区的最⼤值和最⼩值分别为 65535 和 0。超出这个范围的值⾃动舍⼊到最近的有效值。
+[no]multiline
以详细的多⾏格式显⽰类似 SOA 的记录,并附带可读注释。缺省值是每单个⾏上显⽰⼀条记录,以便于计算机解析 dig 的输出。
四、多条查询
dig 的 BIND9 ⽀持在命令⾏上指定多个查询(⽀持 -f 批处理⽂件选项的附加功能)。每条查询可以使⽤⾃⼰的标志位、选项和查询选项。
在这种情况下,在上⾯描述的命令⾏语法中,每条查询⾃变量代表⼀个个别查询。每⼀条由任意标准选项和标志、待查询名称、可选查询类型和类以及任何适⽤于该查询的查询选项。
也可以使⽤对所有查询均有效的查询选项全局集合。全局查询选项必须位于命令⾏上第⼀个名称、类、类型、选项、标志和查询选项的元组之前。任何全局查询选项(除了 + [no]cmd 选项)可以被下⾯的查询特别选项重设。例如:
[root@RHEL6 ~]#dig +qr any -x 127.0.0. ns +noqr
显⽰ dig 如何从命令⾏出发进⾏三个查询:⼀个针对 的任意查询、⼀个 127.0.0.1 的逆向查询,以及⼀个 的 NS 记录查询。应⽤了 +qr 的全局查询选项,以便 dig 显⽰进⾏每条查询的初始查询。最后那个查询有⼀个本地查询选项 +noqr,表⽰ dig 在搜索 的 NS 记录时不显⽰初始查询。
五、dig典型⽤法
dig 调⽤类似:
[root@RHEL6 ~]#dig @server name type
其中:
server  待查询名称服务器的名称或 IP 地址。可以是⽤点分隔的 IPv4 地址或⽤冒号分隔的 IPv6 地址。当由主机提供服务器参数时,dig 在查询域名服务器前先解析那个名称。如果没有服务器参数可以提供,dig 参考 /f,然后查询列举在那⾥的域名服务器。显⽰来⾃域名服务器的应答。
name  将要查询的资源记录的名称。
type    显⽰所需的查询类型- ANY、A、MX、SIG,以及任何有效查询类型等。如果不提供任何类型参数,dig 将对纪录 A 执⾏查询。
6、⽰例
(1)、显⽰13个根域服务器
internet上有13个根域服务器,使⽤不加参数的dig命令显⽰这些服务器信息
[root@RHEL6 ~]#dig
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63379
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUESTION SECTION:
;.                              IN      NS
;; ANSWER SECTION:
.                      126666  IN      NS      m.root-servers.
.                      126666  IN      NS      f.root-servers.
.
                      126666  IN      NS      b.root-servers.
.                      126666  IN      NS      j.root-servers.
.                      126666  IN      NS      c.root-servers.
.                      126666  IN      NS      k.root-servers.
.                      126666  IN      NS      e.root-servers.
.                      126666  IN      NS      g.root-servers.
.                      126666  IN      NS      i.root-servers.
.                      126666  IN      NS      h.root-servers.
.                      126666  IN      NS      l.root-servers.
.                      126666  IN      NS      d.root-servers.
;; ADDITIONAL SECTION:
<-servers.    557725  IN      A      198.41.0.4
<-servers.    490757  IN      A      192.228.79.201
<-servers.    494796  IN      A      192.33.4.12
<-servers.    604214  IN      A      128.8.10.90
<-servers.    491068  IN      A      192.203.230.10
<-servers.    492932  IN      A      192.5.5.241
<-servers.    400973  IN      A      192.112.36.4
<-servers.    492311  IN      A      128.63.2.53
<-servers.    349084  IN      A      192.36.148.17
<-servers.    492099  IN      A      192.58.128.30
<-servers.    403770  IN      A      193.0.14.129
<-servers.    308080  IN      A      199.7.83.42
<-servers.    217613  IN      A      202.12.27.33
;; Query time: 12 msec
;; SERVER: 202.96.69.38#53(202.96.69.38)
;; WHEN: Fri May 25 22:45:50 2012
;; MSG SIZE  rcvd: 436
(2)、常⽤查询
例如查询www.baidu这个域名的信息
[root@RHEL6 ~]#dig www.baidu
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> www.baidu
;; global options: +cmd
;
; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9532
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 3
;; QUESTION SECTION:
;www.baidu.                IN      A
;; ANSWER SECTION:
www.baidu.          805    IN      CNAME  www.a.shifen.
www.a.shifen.      251    IN      A      61.135.169.105
www.a.shifen.      251    IN      A      61.135.169.125
;; AUTHORITY SECTION:
a.shifen.          65426  IN      NS      ns5.a.shifen.
批处理文件注释a.shifen.          65426  IN      NS      ns4.a.shifen.
a.shifen.          65426  IN      NS      ns9.a.shifen.
a.shifen.          65426  IN      NS      ns7.a.shifen.
;; ADDITIONAL SECTION:
ns4.a.shifen.      450    IN      A      123.125.113.67
ns7.a.shifen.      216    IN      A      220.181.38.47
ns9.a.shifen.      263    IN      A      61.135.166.226
;; Query time: 11 msec
;; SERVER: 202.96.69.38#53(202.96.69.38)
;; WHEN: Fri May 25 22:48:36 2012
;; MSG SIZE  rcvd: 210
解析过程说明:
· DNS客户端发包到DNS服务端请求www.baidu的IP地址,由于有⼀条CNAME记录;
· DNS客户端会访问www.a.shifen的域名服务器(相当于是访问www.baidu的域名服务器);
· 在这⾥www.a.shifen的域名服务器是⼀个负责DNS查询流量均衡的调度器,负责把DNS请求调度到ns5.a.shifen、ns6.a.shifen等域名服务器上
· 最后这些标记了NS的域名服务器会把百度的IP返回给DNS客户端
· 然后我们就得到了www.baidu的IP地址
(3)使⽤  +[no]short 运⾏简短输出
[root@RHEL6 ~]#dig sohu @202.102.134.68 -p 53 -t MX +short
10 sohumx.h.a.sohu.
5 sohumx1.sohu.
(4)、使⽤  +[no]trace 跟踪域名解析过程
[root@RHEL6 ~]#dig sohu @202.102.134.68 -p 53 -t MX +trace
; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> sohu @202.102.134.68 -p 5                                                      3 -t MX +trace
;; global options: +cmd
.                      465774  IN      NS      m.root-servers.
.                      465774  IN      NS      h.root-servers.
.                      465774  IN      NS      a.root-servers.
.                      465774  IN      NS      b.root-servers.
.                      465774  IN      NS      e.root-servers.
.                      465774  IN      NS      l.root-servers.
.                      465774  IN      NS      j.root-servers.
.                      465774  IN      NS      g.root-servers.
.                      465774  IN      NS      c.root-servers.
.                      465774  IN      NS      d.root-servers.
.                      465774  IN      NS      i.root-servers.
.                      465774  IN      NS      k.root-servers.
.                      465774  IN      NS      f.root-servers.
.                      465802  IN      RRSIG  NS 8 0 518400 20120531000000 201                                                      20523230000 56158 . rnJgCZ4R9UnWLKKme23oJa9wh5q9dYNvHZvwsrFtAHe8OtE8qNdeVDvh jyc                                            ;; Received 397 bytes from 202.102.134.68#53(202.102.134.68) in 106 ms
com.                    172800  IN      NS      g.gtld-servers.
com.                    172800  IN      NS      j.gtld-servers.
com.                    172800  IN      NS      e.gtld-servers.
com.                    172800  IN      NS      i.gtld-servers.
com.                    172800  IN      NS      h.gtld-servers.
com.                    172800  IN      NS      l.gtld-servers.
com.                    172800  IN      NS      m.gtld-servers.
com.                    172800  IN      NS      b.gtld-servers.
com.                    172800  IN      NS      d.gtld-servers.
com.                    172800  IN      NS      f.gtld-servers.
com.                    172800  IN      NS      a.gtld-servers.
com.                    172800  IN      NS      k.gtld-servers.
com.                    172800  IN      NS      c.gtld-servers.
;
; Received 486 bytes from 192.228.79.201#-servers) in 270 ms
sohu.              172800  IN      NS      dns.sohu.
sohu.              172800  IN      NS      ns1.sohu.
sohu.              172800  IN      NS      ns2.sohu.
sohu.              172800  IN      NS      ns4.sohu.
;; Received 162 bytes from 192.33.14.30#ld-servers) in 438 ms
sohu.              600    IN      MX      10 sohumx.h.a.sohu.
sohu.              600    IN      MX      5 sohumx1.sohu.
sohu.              21600  IN      NS      dns.sohu.
sohu.              21600  IN      NS      ns1.sohu.
sohu.              21600  IN      NS      ns4.sohu.
;
; Received 229 bytes from 121.14.0.41#53(ns4.sohu) in 70 ms

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。