分类: 系统运维
2016-07-19 15:51:17
一般来说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手。
Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内,但是在linux系
统下,它通常是某个包的一部分,在Gentoo下是bind-tools,在Redhat/Fedora下是bind-utils,或者在
Debian下是dnsutils。
最基本的使用方式就是
dig
即查询域名的A记录,查询的dns服务器将采用系统配置的服务器,即/etc/resovle.conf 中的。
如果要查询其他类型的记录,比如MX,CNAME,NS,PTR等,只需将类型加在命令后面即可
dig mx
dig ns
此外,如果你是一个系统管理员,部署好了一台dns服务器之后想对它进行解析测试,就必须要显式指定待测试的dns服务器地址了,例如
dig @202.106.0.20 a
默认情况下dig将采用udp协议进行查询,如果要采用tcp方式,可以加上 +tcp参数
dig a +tcp
另外一个重要的功能是+trace参数,使用这个参数之后将显示从根域逐级查询的过程
dig a +trace
比如,对本站域名 A记录的trace查询可以看到根域.,顶级域.cn,以及linuxers.cn的域名权威服务器的地址及其各自的返回结果,这样对于追踪dns解析中的问题有很大的帮助。
leconte@localhost:~$ dig a +trace ; <<>> DiG 9.5.1-P3 <<>> a +trace ;; global options: printcmd . 215857 IN NS E.ROOT-SERVERS.NET. . 215857 IN NS B.ROOT-SERVERS.NET. . 215857 IN NS J.ROOT-SERVERS.NET. . 215857 IN NS K.ROOT-SERVERS.NET. . 215857 IN NS L.ROOT-SERVERS.NET. . 215857 IN NS F.ROOT-SERVERS.NET. . 215857 IN NS G.ROOT-SERVERS.NET. . 215857 IN NS I.ROOT-SERVERS.NET. . 215857 IN NS M.ROOT-SERVERS.NET. . 215857 IN NS A.ROOT-SERVERS.NET. . 215857 IN NS C.ROOT-SERVERS.NET. . 215857 IN NS H.ROOT-SERVERS.NET. . 215857 IN NS D.ROOT-SERVERS.NET. ;; Received 228 bytes from 192.168.127.2#53(192.168.127.2) in 12 ms cn. 172800 IN NS a.dns.cn. cn. 172800 IN NS b.dns.cn. cn. 172800 IN NS c.dns.cn. cn. 172800 IN NS d.dns.cn. cn. 172800 IN NS e.dns.cn. cn. 172800 IN NS ns.cernet.net. ;; Received 298 bytes from 199.7.83.42#53(L.ROOT-SERVERS.NET) in 496 ms linuxers.cn. 21600 IN NS ns1.dnspood.net. linuxers.cn. 21600 IN NS ns2.dnspood.net. ;; Received 80 bytes from 202.112.0.44#53(ns.cernet.net) in 12 ms . 600 IN A 218.240.42.72 ;; Received 49 bytes from 222.186.26.115#53(ns2.dnspood.net) in 1132 ms