检查 %WINDOWS%\system32 下有没有 msvcr70.dll ,如果有则删除 c:\dig\msvcr70.dll 。
接下来编辑 c:\dig\resolv.conf 文件,需要将你所用的DNS服务器在此文件中指定,格式跟linux下的
/etc/resolv.conf 相同,例如:
nameserver 202.106.0.20
nameserver 202.106.196.115
注:
该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址 domain #定义本地域名 search #定义域名的搜索列表 sortlist #对返回的域名进行排序
/etc/resolv.conf的一个示例:
domain ringkee.com search www.ringkee.com ringkee.com nameserver 202.96.128.86 nameserver 202.96.128.166
最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的
编辑保存后将此文件拷贝至 %WINDOWS%\system32\drivers\etc 目录下
接下来你可以将 c:\dig 目录加到系统环境变量 path 中。
==============================================================================
安装完毕,可以试试了,使用命令如下:
dig --help
dig -h
dig sina.com.cn 运行结果如下:
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 291
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUESTION SECTION:
;sina.com.cn.
;; ANSWER SECTION:
sina.com.cn.
;; AUTHORITY SECTION:
sina.com.cn.
sina.com.cn.
sina.com.cn.
;; ADDITIONAL SECTION:
ns1.sina.com.cn.
ns2.sina.com.cn.
ns3.sina.com.cn.
;; Query time: 40 msec
;; SERVER: 61.144.56.101#53(61.144.56.101)
;; WHEN: Sat Sep 29 14:20:12 2007
;; MSG SIZE rcvd: 147
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dig HOWTO
本文对英文不是太好的朋友在使用Linux和DNS时有些帮助。
本HOWTO的官方出处是http://www.madboa.com/geek/dig/。
Dig简介:
看懂默认输出:
最简单最常见的查询是查询一台主机,但是默认情况下,Dig的输出信息很详细。你可能不需要所有的输出,
但是它确实值得知道。下面是一个带有注释的查询:
$ dig
上面是我调用dig
; <<>> DiG 9.2.3 <<>>
;; global options:
Dig的部分输出告诉我们一些有关于它的版本信息(version 9.2.3)和全局的设置选项,如果+nocmd在命令行下是第一个参数的话,那么这部分输出可以通过加+nocmd的方式注释掉。
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43071
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
在这里,Dig告诉我们一些从DNS返回的技术信息,这段信息可以用选项+[no]comments来控制显示,但是小心,禁止掉comments也可能关闭一些其它的选项。
;; QUESTION SECTION:
;www.isc.org.
在这个查询段中,Dig显示出我们查询的输出,默认的查询是查询A记录,你可以显示或者禁止掉这些用+[no]question选项
;; ANSWER SECTION:
www.isc.org.
最后,我们得到我们查询的结果也就是IP地址的绑定信息。www.isc.org
;; AUTHORITY SECTION:
isc.org.
isc.org.
isc.org.
这段权威说明告诉我们哪个DNS服务器给我们提供权威的答案。在这个例子中,isc.org有3个Name Server,你可以用+[no]authority选项保留这段输出。
;; ADDITIONAL SECTION:
ns1.gnac.com.
ns-int.isc.org.
ns-int.isc.org.
这些额外选项很有代表性地包含了列出的权威DNS的IP地址,这段输出可以用+[no]additional选项保留。
;; Query time: 2046 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Aug 27 08:22:26 2004
;; MSG SIZE
最后一段默认输出包含了查询的统计数据,可以用+[no]stats保留。
我们可以查询什么?
Dig可以让你有效地查询DNS,最常用的查询是A记录,TXT(文本注释),MX记录,NS记录,或者任意综合查询。
查找yahoo.com的A记录:
dig yahoo.com A +noall +answer
查找yahoo.com
dig yahoo.com MX +noall +answer
查找yahoo.com的权威DNS:
dig yahoo.com NS +noall +answer
查询上面所有的记录:
dig yahoo.com ANY +noall +answer
在现在这种IPv4和IPV6混用的情况下,你也可以使用AAAA的选项查询主机的IPv6 AAAA记录:
dig
如果你要查询的域允许转发,你也可以查询到相关的信息,比如DNS记录在internet上的生存周期,但是,现
在只有很少的DNS允许无限制转发。
我们怎样查询?
获得精简答案?
当我们需要一个快速回答时,+short选项是你最好的朋友:
dig
204.152.184.88
获得一个不是十分精简的答案?
精简答案和只有一个答案是不一样的,获得没有附加信息的详细答案的方法是使用+noall选项,这样就只保留你想要的输出。
下面是只有一个答案的精简查询,最后包含所有的配置信息,包括TTL数据,格式化的BIND配置信息。
$ dig fsf.org mx +short
20 mx20.gnu.org.
30 mx30.gnu.org.
10 mx10.gnu.org.
$ dig +nocmd fsf.org mx +noall +answer
fsf.org.
fsf.org.
fsf.org.
获得一个详细答案?
通过它的man page,你可以通过+multiline选项获得冗长的多行模式人性化注释的DSN的SOA记录,一般来说,
用+multiline选项获得的信息可以显示很多,就像BIND配置文件一样。
$ dig +nocmd ogi.edu any +multiline +noall +answer
ogi.edu.
ogi.edu.
ogi.edu.
ogi.edu.
ogi.edu.
ogi.edu.
ogi.edu.
查找PTR记录?
可以用
$ dig -x 204.152.184.167 +short
mx-1.isc.org.
查询一个不同的命名服务器?
查询命令如下:
dig @ns1.google.com
使用/etc/resolv.conf里面的记录查询
主机将从/etc/resolv.conf文件里面自动查询DNS记录
$ host www
www.madboa.com
但是,默认情况下,dig会产生出一些意想不到的输出。如果你想查询本地主机名而不是全域名时候,使用+search
dig www +search
处理大部分的查询
如果你想查询大量的主机名,你可以把它们存放在一个文本文件中(一条记录一行),使用带-f参数的dig来依次查询。
#
dig -f /path/to/host-list.txt
#
dig -f /path/to/host-list.txt +noall +answer
但是我要告诉你的是,dig 9.2.3以及以后的版本都不支持使用-f的选项反向查询了。
验证DNS映射
不正确的DNS配置会给你带来很多苦恼,你可以通过如下两种方式验证你的DNS配置:
1.每个主机名应该被解析到一个IP地址,而且那个IP地址也应该反指向那个主机名。
2.如果你子网上一个地址被反指向一个主机名,那么那个主机名也必须指向这个IP。
对于这两条规则来说,还有一些例外情况,比如CNAME应该首先解析到另外一个主机名,而且只能指向一个IP,有时多个主机名指向了相同的IP地址,但是那个IP只能有一个PTR记录。
综上,这些有助于你检查你的DNS映射是否像你想象的那样工作。
你也可以编写一个测试脚本写入你已知的主机名,如下所示,内容很简单;它执行时当捕捉到一个CNAME时它就会中断,如果多个主机名指向同一个IP地址它会报错。我们假设这个文件包含你的主机名叫做named-hosts。
#!/bin/bash
#
# test DNS forward- and reverse-mapping
#
# edit this variable to reflect local class C subnet(s)
NETS="192.168.1 192.168.2"
# Test name to address to name validity
echo
echo -e "\tname -> address -> name"
echo '----------------------------------'
while read H; do
done < named-hosts
# Test address to name to address validity
echo
echo -e "\taddress -> name -> address"
echo '-------------------------------------'
for NET in $NETS; do
done
有趣的dig
创建属于你自己的named.root文件
任何连接到internet
创建属于你自己的时髦的named.root
# compare with
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.
gmail.com.
如果你一段时间后再去查,你会发现TTL值减少为280(中间隔了20s)。
$ dig +nocmd gmail.com MX +noall +answer
gmail.com.
gmail.com.
如果你的时间计算得足够好,你会获取这条记录的最后生存时间。
$ dig +nocmd gmail.com MX +noall +answer
gmail.com.
gmail.com.
在那之后,你查询的DNS服务器会“忘记”这个问题的答案,在你下次查询这条记录时,整个循环又将开始(本例子中是300s)。
在
# dig
dig @server qianlong.com
#
dig @server qianlong.com AXFR
#
dig @server qianlong.com IXFR=N
#
dig -x 124.42.102.203 @server
#
dig
#
dig
#
dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
#
dig @bind_dns_server CHAOS TXT version.bind
用途
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(域 信息搜索器)命令是一个用于询问
标志
-b address
-c class
-f filename
-h
-k filename
-n
-p port#
-t type
-x addr
-y name:key
参数
global-queryopt...
查询 查询选项(请参阅查询选项)。
查询选项
dig
+[no]tcp
查询域名服务器时使用
+[no]vc
查询名称服务器时使用
+[no]ignore
忽略
+domain=somename
设定包含单个域
+[no]search
使用
+[no]defname
不建议看作
+[no]aaonly
该选项不做任何事。它用来提供对设置成未实现解析器标志的
+[no]adflag
在查询中设置
+[no]cdflag
在查询中设置
+[no]recursive
切换查询中的
+[no]nssearch
这个选项被设置时,dig
+[no]trace
切换为待查询名称从根名称服务器开始的代理路径跟踪。缺省情况不使用跟踪。一旦启用跟踪,dig
+[no]cmd
设定在输出中显示指出
+[no]short
提供简要答复。缺省值是以冗长格式显示答复信息。
+[no]identify
当启用
+[no]comments
切换输出中的注释行显示。缺省值是显示注释。
+[no]stats
该查询选项设定显示统计信息:查询进行时,应答的大小等等。缺省显示查询统计信息。
+[no]qr
显示
+[no]question
当返回应答时,显示
+[no]answer
显示
+[no]authority
显示
+[no]additional
显示
+[no]all
设置或清除所有显示标志。
+time=T
为查询设置超时时间为
+tries=A
设置向服务器发送
+ndots=D
出 于完全考虑,设置必须出现在名称
+bufsize=B
设置使用
+[no]multiline
以详细的多行格式显示类似
多条查询dig
在这种情况下,在上面描述的命令行语法中,每条查询自变量代表一个个别查询。每一条由任意标准选项和标志、待查询名称、可选查询类型和类以及任何适用于该查询的查询选项。
也可以使用对所有查询均有效的查询选项全局集合。全局查询选项必须位于命令行上第一个名称、类、类型、选项、标志和查询选项的元组之前。任何全局查询选项(除了
dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr显示
示例
一个典型的
dig @server name type其中:
server
待 查询名称服务器的名称或
name
将要查询的资源记录的名称。
type
显示所需的查询类型 -
C:\dig>nslookup -qt=ns 12530.com
Server: linedns.bta.net.cn
Address: 202.106.196.115
Non-authoritative answer:
12530.com
12530.com
12530.com
NSLOOKUP
C:\dig>nslookup 12530.com
Server: nmgdnsser8
Address: 202.99.224.8
Non-authoritative answer:
Name:
Address: 218.205.239.16
C:\dig>nslookup -qt=nx 12530.com
unknown query type: nx
Server: linedns.bta.net.cn
Address: 202.106.196.115
Non-authoritative answer:
Name:
Address: 218.205.239.16
C:\dig>nslookup -qt=nx 12530.com
unknown query type: nx
Server: linedns.bta.net.cn
Address: 202.106.196.115
Non-authoritative answer:
Name:
Address: 218.205.239.16
nslookup [-qt=类型] 目标域名 指定的DNS服务器IP或域名
C:\dig>nslookup -qt=nx 12530.com 202.99.224.8
unknown query type: nx
Server: nmgdnsser8
Address: 202.99.224.8
Non-authoritative answer:
Name:
Address: 218.205.239.16
检查域名的缓存时间
检查域名的缓存时间需要我们使用一个新的参数:-d
格式如下:
nslookup –d [其他的参数] 目标域名 [指定的服务器地址]
C:\dig>nslookup -d
------------
Got answer:
------------
Server: nmgdnsser8
Address: 202.99.224.8
------------
Got answer:
------------
Non-authoritative answer:
Name:
Addresses: 60.217.232.222, 123.125.162.67
Aliases:
参数是-norecurse 递归解析
C:\dig>nslookup -norecurse
Server: nmgdnsser8
Address: 202.99.224.8
Non-authoritative answer:
Name:
Addresses: 60.217.241.166, 60.217.232.222
Aliases:
nslookup -norecurse
C:\dig>nslookup
Default Server: linedns.bta.net.cn
Address: 202.106.196.115
> server 202.106.196.115
Default Server: linedns.bta.net.cn
Address: 202.106.196.115
> ll 12530.com
Server: 12530.com
Address: 218.205.239.16
DNS request timed out.
*** Request to 12530.com timed-out