Linux命令行模式下查询DNS包括NS记录利器dig命令详解( 三 )


创建属于你自己的时髦的named.root
# compare with ftp://ftp.internic.net/domain/named.root
dig +nocmd . NS +noall +answer +additional
你的TTL值在这边可能会很小,但是它是你找到最新的named.root文件!
跟踪dig的查询路径
你可能是个traceroute的狂热爱好者,经常喜欢查看如何从点A连接点B 。那你可以使用dig +trace选项做类似
的事 。
dig gentoo.de +trace
你可以在dig输出的头部分看到根DNS,然后找到负责解析所有*.de的DNS,最后找到gentoo.de的域名IP 。
获取SOA记录
作为一个DNS管理员,我有时会(对DNS配置)做一些改变,并且想知道我的DNS解析是否推送的还是旧数据,
这个+nssearch选项可以给你的公众服务器提供清楚的统计信息 。
# the unvarnished truth
dig cse.ogi.edu +nssearch
# the same, displaying only serial number and hostname
dig cse.ogi.edu +nssearch | cut -d' ' -f4,11
解释TTL数值
我喜爱google有很多原因,其中一个原因就是它在我的WEB日志中提供了精确的链接,它会使我很容易地指出
哪种类型的查询引导人们来访问这个站点的页面 。
出乎意料的是,我已经看到很多请求要求查询TTL数值,我从来没想到TTL会成为最受欢迎的东东,但是你每天
都在学习新东西,所以,应大家的要求,这里稍微介绍一下TTL 。
如果你从本地DNS查询互联网地址,服务器指出从哪里获得权威的答案并获得地址,一旦服务器获知答案,它
将这个答案保存在本地缓存中以免你在稍后的时间内再次查询同样的地址,这样它就会很快地从缓存中获取你
要的答案,比你再次从internet查询要快很多 。
当域管理员配置DNS记录时,他们可以决定这个记录可以在缓存中保存多长时间,这就是TTL数值(通常用多少
秒来表示) 。
通常地,远端服务器一般对记录的缓存只保存TTL数值长的时间 。时间过期后,服务器会刷新它的本地缓存并
重新查询一个权威答案 。
当你用dig来查询DNS服务器某条记录时,服务器会告诉dig这条记录可以在缓存中保持的时间长短 。
举个例子,像上面写的那样,gmail.com域的MX记录的TTL值是300s,gmail.com域的管理员要求远端服务器缓
存它的MX记录不能高于5分钟,所以当你第一次查询那个记录(gmail.com的MX记录)时,dig会告诉你一个300
的TTL 。
$ dig +nocmd gmail.com MX +noall +answer
gmail.com. 300 IN MX 20 gsmtp57.google.com.
gmail.com. 300 IN MX 10 gsmtp171.google.com.
如果你一段时间后再去查,你会发现TTL值减少为280(中间隔了20s) 。
$ dig +nocmd gmail.com MX +noall +answer
gmail.com. 280 IN MX 10 gsmtp171.google.com.
gmail.com. 280 IN MX 20 gsmtp57.google.com.
如果你的时间计算得足够好,你会获取这条记录的最后生存时间 。
$ dig +nocmd gmail.com MX +noall +answer
gmail.com. 1 IN MX 10 gsmtp171.google.com.
gmail.com. 1 IN MX 20 gsmtp57.google.com.
在那之后,你查询的DNS服务器会“忘记”这个问题的答案,在你下次查询这条记录时,整个循环又将开始(
本例子中是300s) 。
在 unix 和 linux 下,建议大家使用 dig 命令来代替 nslookup 。dig 命令的功能比 nslookup 强大很多,不像 nslookkup 还得 set 来 set 去的,怪麻烦的 。
下面是 dig 的一些比较常用的命令:
# dig 最基本的用法
dig @server qianlong.com
# 用 dig 查看 zone 数据传输
dig @server qianlong.com AXFR
# 用 dig 查看 zone 数据的增量传输
dig @server qianlong.com IXFR=N
# 用 dig 查看反向解析
dig -x 124.42.102.203 @server
# 查找一个域的授权 dns 服务器
dig qianlong.com +nssearch
# 从根服务器开始追踪一个域名的解析过程
dig qianlong.com +trace
# 查看你使用的是哪个 F root dns server
dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
# 查看 bind 的版本号
dig @bind_dns_server CHAOS TXT version.bind
********************************
你可以到 www.isc.org 去下载一个 bind for windows 的版本安装,安装后就可以在 windows 上使用 dig 命令了 。^O^
ftp://ftp.isc.org/isc/bind/contrib/ntbind-9.3.0/BIND9.3.0.zip
*********************************
用途
DNS 查询实用程序 。
语法
dig [@server] [-b address] [-c class] [-f filename] [-k filename] [ -n ][-p port#] [-t type] [-x addr] [-y name:key] [name] [type] [class] [queryopt...]
dig [-h]
dig [global-queryopt...] [query...]
描述
dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具 。它执行 DNS 搜索,显示从受请求的域名服务器返回的答复 。多数 DNS 管理员利用 dig 作为 DNS 问题的故障诊断,因为它灵活性好、易用、输出清晰 。虽然通常情况下 dig 使用命令行参数,但它也可以按批处理模式从文件读取搜索请求 。不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询 。除非被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的所有服务器 。当未指定任何命令行参数或选项时,dig 将对“.”(根)执行 NS 查询 。


推荐阅读