1.ping
2.nslookup
3.dig
Linux下解析域名除了使用nslookup之外,也可以使用dig命令来解析域名,dig命令可以得到更多的域名信息。
dig的全称是 (domain information groper)。它是一个用来灵活探测DNS的工具。它会打印出DNS name server的回应。
一、dig命令用法
dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具。它执行 DNS 搜索,显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为 DNS 问题的故障诊断,因为它灵活性好、易用、输出清晰。
虽然通常情况下 dig 使用命令行参数,但它也可以按批处理模式从文件读取搜索请求。不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询。除非被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的所有服务器。当未指定任何命令行参数或选项时,dig 将对“.”(根)执行 NS 查询。
二、dig命令选项
三、查询选项
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 选项)可以被下面的查询特别选项重设。例如:
[root@RHEL6 ~]#dig +qr www.lampbo.org any -x 127.0.0.1 isc.org ns +noqr
显示 dig 如何从命令行出发进行三个查询:一个针对 www.lampbo.org的任意查询、一个 127.0.0.1 的逆向查询,以及一个 lampbo.org 的 NS 记录查询。应用了 +qr 的全局查询选项,以便 dig 显示进行每条查询的初始查询。最后那个查询有一个本地查询选项 +noqr,表示 dig 在搜索 lampbo.org 的 NS 记录时不显示初始查询。
五、示例
(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.net. . 126666 IN NS f.root-servers.net. . 126666 IN NS b.root-servers.net. . 126666 IN NS j.root-servers.net. . 126666 IN NS c.root-servers.net. . 126666 IN NS k.root-servers.net. . 126666 IN NS e.root-servers.net. . 126666 IN NS g.root-servers.net. . 126666 IN NS i.root-servers.net. . 126666 IN NS h.root-servers.net. . 126666 IN NS l.root-servers.net. . 126666 IN NS d.root-servers.net. . 126666 IN NS a.root-servers.net. ;; ADDITIonAL SECTION: a.root-servers.net. 557725 IN A 198.41.0.4 b.root-servers.net. 490757 IN A 192.228.79.201 c.root-servers.net. 494796 IN A 192.33.4.12 d.root-servers.net. 604214 IN A 128.8.10.90 e.root-servers.net. 491068 IN A 192.203.230.10 f.root-servers.net. 492932 IN A 192.5.5.241 g.root-servers.net. 400973 IN A 192.112.36.4 h.root-servers.net. 492311 IN A 128.63.2.53 i.root-servers.net. 349084 IN A 192.36.148.17 j.root-servers.net. 492099 IN A 192.58.128.30 k.root-servers.net. 403770 IN A 193.0.14.129 l.root-servers.net. 308080 IN A 199.7.83.42 m.root-servers.net. 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.com这个域名的信息
[root@RHEL6 ~]#dig www.baidu.com ; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> www.baidu.com ;; 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.com. IN A ;; ANSWER SECTION: www.baidu.com. 805 IN CNAME www.a.shifen.com. www.a.shifen.com. 251 IN A 61.135.169.105 www.a.shifen.com. 251 IN A 61.135.169.125 ;; AUTHORITY SECTION: a.shifen.com. 65426 IN NS ns5.a.shifen.com. a.shifen.com. 65426 IN NS ns4.a.shifen.com. a.shifen.com. 65426 IN NS ns9.a.shifen.com. a.shifen.com. 65426 IN NS ns7.a.shifen.com. ;; ADDITIonAL SECTION: ns4.a.shifen.com. 450 IN A 123.125.113.67 ns7.a.shifen.com. 216 IN A 220.181.38.47 ns9.a.shifen.com. 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.com的IP地址,由于有一条CNAME记录;
· DNS客户端会访问www.a.shifen.com的域名服务器(相当于是访问www.baidu.com的域名服务器);
· 在这里www.a.shifen.com的域名服务器是一个负责DNS查询流量均衡的调度器,负责把DNS请求调度到ns5.a.shifen.com、ns6.a.shifen.com等域名服务器上
· 最后这些标记了NS的域名服务器会把百度的IP返回给DNS客户端
· 然后我们就得到了www.baidu.com的IP地址