Nslookup
是一个监测网络中DNS服务器是否能正确实现域名解析的命令行工具。
如果你的Linux系统没有nslookup
命令,那么八成是你没有安装bind-utils
包。
安装
yum install bind-utils
【nslookup
的两种模式】
nslookup
是一个能够查询互联网域名服务器信息的程序。他有两种工作模式,即“交互模式”和“非交互模式”。
在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。
而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
【如何进入交互模式?】
进入交互模式,总共有两种方法。
第一种方法,直接输入nslookup
命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。
第二种方法,是支持选定不同域名服务器的。需要设置第一个参数为“-
”,然后第二个参数是设置要连接的域名服务器主机名或IP地址。
【如何进入非交互模式?】
如果你直接在nslookup
命令后加上所要查询的IP或主机名,那么就进入了非交互模式。当然,这个时候你也可以在第二个参数位置设置所要连接的域名服务器。
【选项和参数】
nslookup
不仅支持设置参数,也是支持设置选项(options)的。比如可以使用-query
来设置查询类型为主机信息,同时设置初始超时时限为10秒:
nslookup -query=hinfo -timeout=10
【交互模式很强大】
1 直接查询域名
如果你直接输入域名(以www.baidu.com举例),会有类似如下的输出:
$ nslookup > www.baidu.com Server: 61.139.2.69 //上连的DNS服务器 Address: 61.139.2.69#53 //上连的DNS服务器的IP地址与端口号 Non-authoritative answer: //非权威答案,即从上连DNS服务器的本地缓存中读取出的值,而非实际去查询到的值 www.baidu.com canonical name = www.a.shifen.com. //说明www.baidu.com有个别名叫www.a.shifen.com Name: www.a.shifen.com //域名www.a.shifen.com Address: 119.75.217.56 //对应的IP地址之一 Name: www.a.shifen.com Address: 119.75.218.77//对应的IP地址之二 2 server [domain] 首先nslookup会连接到当前的默认上连DNS服务器去查询domain的IP地址,并将之作为当前默认上连DNS服务器。 另外,还有一个命令叫做lserver [domain],它与server的区别在于,它是取本地的第一台DNS服务器来查询domain的IP地址,并将之作为当前默认上连DNS服务器。(lserver中的首字母l就是local的意思)
$ nslookup > www.baidu.com //以默认的上连DNS服务器来查询 Server: 61.139.2.69 Address: 61.139.2.69#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 119.75.218.77 //对应的描述信息为“北京市 百度网讯科技” Name: www.a.shifen.com Address: 119.75.217.56 > server 8.8.8.8 //更改了上连的DNS服务器地址 Default server: 8.8.8.8 Address: 8.8.8.8#53 > www.baidu.com ////以更改后的上连DNS服务器来查询 Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 220.181.111.147 //对应的描述信息为“北京市(南三环洋桥电信机房) 电信” 可见,两个不同的上连DNS服务器返回的IP地址是不同的。
3 exit
退出nslookup
的交互模式。
4 set all
列出nslookup
工具的常用选项的当前设置值。
> set all Default server: 8.8.8.8 //当前的上连DNS服务器 Address: 8.8.8.8#53 //当前的上连DNS服务器的IP地址和端口 Set options: novc nodebug nod2 search recurse timeout = 0 retry = 3 port = 53 querytype = A class = IN srchlist = 5 set class=[value] 可以更改查询类,而不同的类设定了不同的协议族。
IN
:Internet类(默认)
CH
:Chaos类
HS
:Hesiod类
一般我们最长使用IN。而Hesiod之前仅在M.I.T(Massachusetts Institute of Technology,即麻省理工学院)范围内使用,现在甚至已经无人使用。而Chaos也几乎灭绝,曾经BIND套装用Chaos来协助检查版本号信息。
6 set [no]debug
可以用来设置是否进入调试模式。如果set debug,则会进入到调试模式,查询过程中会显示完整的响应包以及其中的交互包。
$ nslookup > set debug //进入调试模式 > www.baidu.com Server: 61.139.2.69 Address: 61.139.2.69#53 ------------ QUESTIONS: //发出的查询请求 www.baidu.com, type = A, class = IN ANSWERS: //返回的信息 -> www.baidu.com canonical name = www.a.shifen.com. ttl = 1192 -> www.a.shifen.com internet address = 119.75.217.56 ttl = 262 -> www.a.shifen.com internet address = 119.75.218.77 ttl = 262 AUTHORITY RECORDS: ADDITIONAL RECORDS: ------------ Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 119.75.217.56 Name: www.a.shifen.com Address: 119.75.218.77
7 set [no]d2
开启了高级调试模式,会输出很多nslookup内部工作的信息,包括了许多函数调用信息。
8 set domain=[name]
用于设置默认的域。这样的话,对于所有不包含“.”的查询请求,都会自动在尾部追查此域。
$ nslookup > set all //首先显示上连DNS服务器信息以及所有的当前选项信息 Default server: 61.139.2.69 Address: 61.139.2.69#53 Default server: 8.8.8.8 Address: 8.8.8.8#53 Default server: 202.102.224.68 Address: 202.102.224.68#53 Set options: novc nodebug nod2 search recurse timeout = 0 retry = 3 port = 53 querytype = A class = IN srchlist = //可以看到srchlist(即search list为空) > set domain=baidu.com //设置默认域为baidu.com > image //直接查询image Server: 61.139.2.69 Address: 61.139.2.69#53 Non-authoritative answer: image.baidu.com canonical name = image.n.shifen.com. //可以看到已默认追加了.baidu.com域,变成了image.baidu.com Name: image.n.shifen.com Address: 220.181.111.131 > set domain= //清除domain设置 > image Server: 61.139.2.69 Address: 61.139.2.69#53 Non-authoritative answer: Name: image Address: 61.139.8.100 //于是,可以发现,域名解析又被劫持了...
9 set [no]search
如果设置了set search,那么当查询的字串中只包含一个句点,且结尾非句点时,nslookup会将domain设置的域追加到查询字串的尾部来尝试查询。
10 set port=[value]
众所周知,DNS默认的服务端口是53。当某些特殊情况,此端口改变时,可以通过本命令来设置。
11 set type=[value]
也可以写成set querytype=[value],用于更改信息查询类型。
默认情况下,nslookup是查询域名所对应的A记录,而如果你想查询其对应的MX记录等信息时,就需要专门设置type值了。
目前常用的type值如下:
A:查看主机的IPv4地址
AAAA
:查看主机的IPv6地址
ANY
:查看关于主机域的所有信息
CNAME
:查找与别名对应的正式名字
HINFO
:查找主机的CPU与操作系统类型
MINFO
:查找邮箱信息
MX
:查找邮件交换信息
NS
:查找主机域的域名服务器
PTR
:查找与给定IP地址匹配的主机名
RP
:查找域负责人记录
SOA
:查找域内的SOA地址
UINFO
:查找用户信息
例如,针对MX类型的查询结果如下:
> set type=MX > baidu.com //查询MX信息 Server: 61.139.2.69 Address: 61.139.2.69#53 Non-authoritative answer: baidu.com mail exchanger = 20 jpmx.baidu.com. baidu.com mail exchanger = 20 mx50.baidu.com. baidu.com mail exchanger = 10 mx.mailcdn.baidu.com. baidu.com mail exchanger = 20 mx1.baidu.com. Authoritative answers can be found from: > set type=A > baidu.com //查询A记录 Server: 61.139.2.69 Address: 61.139.2.69#53 Non-authoritative answer: Name: baidu.com Address: 123.125.114.144 Name: baidu.com Address: 220.181.111.85 Name: baidu.com Address: 220.181.111.86 12 retry=[number] / timeout=[number]
可以用来设置查询重试的次数,以及每次查询的超时时限。
原文:http://roclinux.cn/?p=2441