首页 > 代码库 > DNS正、反解析查询指令host、dig、nslookup

DNS正、反解析查询指令host、dig、nslookup

一、host指令
格式:host [-a] FQDN [server]
host -l domain [server]
选项:
-a :代表列出该主机所有的相关信息,包括 IP、TTL 与除错讯息等等
-l :若后面接的那个 domain 设定允许 allow-transfer 时,则列出该domain所管理的所有主机名对应数据!

server:这个参数可有可无,当想要利用非 /etc/resolv.conf 内的 DNS 主机来查询主机名与 IP 的对应时,就可以利用这个参数了!

# 1. 使用默认值来查出百度的IP
[root@lcl ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 14.215.177.38
www.a.shifen.com has address 14.215.177.37

# 2. 查出 百度的所有重要参数
[root@lcl ~]# host -a www.baidu.com
Trying "www.baidu.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51104
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com. IN ANY

;; ANSWER SECTION:
www.baidu.com. 1022 IN CNAME www.a.shifen.com.

Received 58 bytes from 114.114.114.114#53 in 25 ms <--果然是从114.114.114.114服务器得到的资料

# 3. 强制以 139.175.10.20 这部 DNS 服务器来查询

[root@www ~]# host linux.vbird.org 139.175.10.20
Using domain server:
Name: 139.175.10.20
Address: 139.175.10.20#53
Aliases:
linux.vbird.org has address 140.116.44.180
linux.vbird.org mail is handled by 10 linux.vbird.org.

# 4. 找出 sxjy.com领域的所有主机对应

[root@lcl ~]# host -l sxjy.com
; Transfer failed.
; Transfer failed.
Host sxjy.com.sxjy.com not found: 9(NOTAUTH)
; Transfer failed.

怎么会无法响应呢?这样的响应是因为管理 vbird.org 领域的 DNS 并不许我们的领域查询,毕竟我们不是 vbird.org 的系统管理员,当然没有权限可以读取整个vbird.org 的领域设定啰!这个『 host -l 』是用在自己的 DNS 服务器上,本章稍后谈到服务器设定后,使用这个选项就能够读取相关的数据了。

二、nslookup
格式:nslookup [FQDN] [server]

选项与参数:
1. 可以直接在 nslookup 加上待查询的主机名或者是 IP ,[server] 可有可无;
2. 如果在 nslookup 后面没有加上任何主机名或 IP ,那将进入 nslookup的查询功能,在 nslookup 的查询功能当中,可以输入其他参数来进行特殊查询,
例如:
set type=any :列出所有的信息『正解方面配置文件』
set type=mx :列出与 mx 相关的信息!

例:
(1) 直接搜寻百度的IP信息
[root@lcl ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53

Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 14.215.177.37 #百度的一个IP
Name: www.a.shifen.com
Address: 14.215.177.38 #百度的另一个IP

(2) 直接输入nslookup,进入查询界面
[root@www ~]# nslookup <==进入 nslookup 查询画面
> 120.114.100.20
<==执行反解的查询
> www.ksu.edu.tw
<==执行正解的查询
# 上面这两个仅列出正反解的信息,没有啥了不起的地方啦!
> set type=any
<==变更查询,不是仅有 A,全部信息都列出来
> www.ksu.edu.tw
Server:
168.95.1.1
Address:
168.95.1.1#53
Non-authoritative answer:
Name:
www.ksu.edu.tw
Address: 120.114.100.101 <==这是答案
Authoritative answers can be found from: <==这是相关授权 DNS 说明
ksu.edu.tw
nameserver = dns2.ksu.edu.tw.
ksu.edu.tw
nameserver = dns1.ksu.edu.tw.
dns1.ksu.edu.tw internet address = 120.114.50.1
dns2.ksu.edu.tw internet address = 120.114.150.1
> exit <==离开吧!皮卡丘

三、dig
格式:dig [options] FQDN [@server]

选项与参数:
@server : 如果不以 /etc/resolv.conf 的设定来作为 DNS 查询,可在此填
入其他的 IP
options: 相关的参数很多,主要有 +trace, -t type 以及 -x 三者最常用
+trace : 就是从 . 开始追踪,在 19.1.2 里面谈过了!回头瞧瞧去!
-t type: 查询的数据主要有 mx, ns, soa 等类型,
-x:查询反解信息,非常重要的项目!

例:
(1) 来看看dns查询过程
[root@lcl ~]# dig +trace www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> +trace www.baidu.com
;; global options: +cmd
. 253628 IN NS m.root-servers.net.
. 253628 IN NS d.root-servers.net.
. 253628 IN NS h.root-servers.net.
. 253628 IN NS e.root-servers.net.
. 253628 IN NS b.root-servers.net.
. 253628 IN NS k.root-servers.net.
. 253628 IN NS l.root-servers.net.
. 253628 IN NS f.root-servers.net.
. 253628 IN NS i.root-servers.net.
. 253628 IN NS g.root-servers.net.
. 253628 IN NS a.root-servers.net.
. 253628 IN NS c.root-servers.net.
. 253628 IN NS j.root-servers.net.
;; Received 228 bytes from 114.114.114.114#53(114.114.114.114) in 327 ms
# 上面的部分在追踪 . 的服务器,可从 a ~ m.root-servers.net.

com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 491 bytes from 198.97.190.53#53(198.97.190.53) in 706 ms
# 上面的部分在追踪 com. 的服务器,

baidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
;; Received 201 bytes from 192.33.14.30#53(192.33.14.30) in 316 ms

www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
;; Received 228 bytes from 119.75.219.82#53(119.75.219.82) in 36 ms
让大家瞧瞧整个 DNS 的搜寻过程!在 dig 加上 +trace 的选项后,就能够达到这个目的。至于其他的都是服务器 (NS) 的设定值与追踪过程喔!有没有很清楚啊?

(2) 使用默认值查询

[root@lcl ~]# dig www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45046
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.baidu.com. IN A <==提出的问题的部分,询问百度的IP

;; ANSWER SECTION: <==主要的回答阶段,回答百度的IP
www.baidu.com. 1064 IN CNAME www.a.shifen.com.
www.a.shifen.com. 39 IN A 14.215.177.37
www.a.shifen.com. 39 IN A 14.215.177.38

;; Query time: 19 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Sun Mar 6 21:16:03 2016
;; MSG SIZE rcvd: 90

QUESTION(问题):显示所要查询的内容,因为我们是查询 linux.vbird.org的 IP,所以这里显示 A (Address);
ANSWER(回答):依据刚刚的 QUESTION 去查询所得到的结果,答案就是回答IP 啊!

(2) 查询 linux.vbird.org 的 SOA 相关信息吧!
[root@www ~]# dig -t soa linux.vbird.org
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -t soa linux.vbird.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57511
;; flags: qr rd ra
; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;linux.vbird.org. IN SOA

;; AUTHORITY SECTION:
vbird.org. 600 IN SOA dns.vbird.org. root.dns.vbird.org. 2007091402 28800 7200 720000 86400

;; Query time: 17 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)
;; WHEN: Thu Aug 4 14:15:57 2011

由于 dig 的输出信息实在是太丰富了,又分成多个部分去进行回报,因此很适合作为 DNS 追踪回报的一个指令呢! 你可以透过这个指令来了解一下你所设定的 DNS 数据库是否正确,并进行除错喔! ^_^!此外,你也可以透过『 -t type 』 的功能去查询其他服务器的设定值,可以方便你进行设定 DNS 服务器时的参考喔!正解查询完毕,接下来玩一玩反解吧! # 3. 查询 120.114.100.20 的反解信息结果

(3) 查询112.80.248.73(百度)反解析
[root@localhost ~]# dig -x 112.80.248.73

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 112.80.248.73
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 20695
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;73.248.80.112.in-addr.arpa. IN PTR

;; AUTHORITY SECTION:
80.112.in-addr.arpa. 5 IN SOA ns1.jscnc.net. root.ns1.jscnc.net. 2010070723 10800 3600 604800 3600

;; Query time: 31 msec
;; SERVER: 192.168.122.2#53(192.168.122.2)
;; WHEN: Mon Mar 7 06:28:39 2016
;; MSG SIZE rcvd: 98
反解相当有趣!从上面的输出结果来看,反解的查询目标竟然从 112.80.248.73 变成了 80.112.in-addr.arpa. 这个模样~这是啥鬼东西?不要怕,这等我们讲到反解时再跟大家进一步解释。 你现在要知道的是,反解的查询领域名,跟正解不太一样即可,尤其是那个怪异的 in-addr.arpa. 结尾的数据,可以先记下来。

DNS正、反解析查询指令host、dig、nslookup