dig命令
- nslookup:query Internet name servers interactively;
dig:Domain Information Groper - 【我想用google-DNS来查baidu.com的A记录】dig @8.8.8.8 www.baidu.com A
可以看出 dig的基本的命令格式是:
dig @dnsserver name querytype
如果你设置的dnsserver是一个域名,那么dig会首先通过默认的上连DNS服务器去查询对应的IP地址,
然后再以设置的dnsserver为上连DNS服务器。
如果你没有设置@dnsserver,那么dig就会依次使用/etc/resolv.conf里的地址作为上连DNS服务器。
querytype可以设置A/AAAA/PTR/MX/ANY等值,默认是查询A记录。 - 常用选项
- -c选项,可以设置协议类型(class),包括IN(默认)、CH和HS。
- -f选项,dig支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。
- -4和-6两个选项,用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6。
- -t选项,用来设置查询类型,默认情况下是A,也可以设置MX等类型
- -q选项,其实它本身是一个多余的选项,但是它在复杂的dig命令中又是那么的有用。
- -q选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性
- -x选项,是逆向查询选项。可以查询IP地址到域名的映射关系。
- 【dig特有的查询选项(query option)】
和刚才的选项不同,dig还有一批所谓的“查询选项”,这批选项的使用与否,
会影响到dig的查询方式或输出的结果信息,因此对于这批选项,
dig要求显式的在其前面统一的加上一个“+”(加号),这样dig识别起来会更方便,
同时命令的可读性也会更强。
- 【TCP代替UDP】
众所周知,DNS查询过程中的交互是采用UDP的。如果你希望采用TCP方式 - 【跟踪dig全过程】
dig非常著名的一个查询选项就是+trace,当使用这个查询选项后,
dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来。
Q:请教大神 Linux(Unix)的设计思想 : 程序应该小而专一,程序应该尽量的小,
且只专注于一件事上,不要开发那些看起来有用但是90%的情况都用不到的特性,
所以dig也是一个程序吧;如果以最小化安装很多命令都不知道这条命令属于哪个
程序只能用google搜索么???
A:不用的,举例redhat , centos , fedora 下用yum provides 命令名,
就可以查找该命令属于哪个软件包了。非常方便。
Q:dig +trace 这句执行的结果中,看到
roclinux.cn. 21600 IN NS ns11.edong.com.
roclinux.cn. 21600 IN NS ns12.edong.com.
roclinux.cn. 3600 IN NS ns12.edong.com.
roclinux.cn. 3600 IN NS ns11.edong.com.
这里DNS的缓存时间,一个是21600,一个是3600,到底以那个为准呢
上述摘自:《dig挖出DNS的秘密》-linux命令五分钟系列之三十四
关于百度DNS的解析过程
[root@zichen star]# nslookup www.baidu.com
Server: 211.140.13.188
Address: 211.140.13.188#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 220.181.112.76
Name: www.a.shifen.com
Address: 220.181.111.111
百度有个cname=www.a.shifen.com.的别名,这所怎么一个过程呢?用dig工具跟踪一下。
[root@zichen star]# dig +trace www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.2.rc1.fc16 <<>> +trace www.baidu.com
;; global options: +cmd
. 167778 IN NS b.root-servers.net.
. 167778 IN NS d.root-servers.net.
. 167778 IN NS f.root-servers.net.
. 167778 IN NS m.root-servers.net.
. 167778 IN NS e.root-servers.net.
. 167778 IN NS h.root-servers.net.
. 167778 IN NS l.root-servers.net.
. 167778 IN NS g.root-servers.net.
. 167778 IN NS i.root-servers.net.
. 167778 IN NS k.root-servers.net.
. 167778 IN NS c.root-servers.net.
. 167778 IN NS a.root-servers.net.
. 167778 IN NS j.root-servers.net.
;; Received 228 bytes from 211.140.13.188#53(211.140.13.188) in 1841 ms--------(1)
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 503 bytes from 198.41.0.4#53(198.41.0.4) in 1884 ms-------------------------(2)
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.
;; Received 167 bytes from 192.31.80.30#53(192.31.80.30) in 305 ms-------------------(3)
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
a.shifen.com. 86444 IN NS ns4.a.shifen.com.
a.shifen.com. 86444 IN NS ns7.a.shifen.com.
a.shifen.com. 86444 IN NS ns9.a.shifen.com.
a.shifen.com. 86444 IN NS ns5.a.shifen.com.
;; Received 194 bytes from 202.108.22.220#53(202.108.22.220) in 68 ms-------------(4)
DIG工具会在本地计算机做迭代,然后记录查询的过程。
第一步是我这台PC的ISPDNS获取到13个根服务器的13个IP和主机名【b-j】.root-servers.net。
第二步是向其中的一台根域服务器198.41.0.4发送www.baidu.com的请求,他返回来com.顶级域的服务器的IP(未显示)和名称。
第三步是向com.域的一台服务器192.31.80.30请求www.baidu.com,他返回来baidu.com域发服务器IP(未显示)和名称.
第四步,向百度的顶级域名服务器dns.baidu.com.请求www.baidu.com,他发现这个www有别名叫www.a.shifen.com。
按照一般逻辑,当dns请求到别名时,查询都会终止,而所重新发起查询别名的请求,所以此处应该返回的是www.a.shifen.com.但是为什么返回的是a.shifen.com这个NS呢?
此处我们可以用:
[root@zichen star]# dig +trace shifen.com
shifen.com. 172800 IN NS dns.baidu.com.
shifen.com. 172800 IN NS ns2.baidu.com.
shifen.com. 172800 IN NS ns3.baidu.com.
shifen.com. 172800 IN NS ns4.baidu.com.
;; Received 170 bytes from 192.26.92.30#53(192.26.92.30) in 325 ms
发现shifen.com的顶级域名服务器和baidu.com的域名服务器是同一台!
当 我拿到www.baidu.com的别名www.a.shifen.com的时候,本来要重新到com域查找shifen.com的NS,又因为,两个域 在同一台NS上,所以直接向本机发起了shifen.com域发现请求的www.a.shifen.com是属于a.shifen.com这个域的,于是 就把a.shifen.com的这个NS和IP返回,让我到a.shifen.com这个域的域名服务器上查询www.a.shifen.com。
于是
shifen.com. 7200 IN A 202.108.250.218
shifen.com. 86400 IN NS ns3.baidu.com.
shifen.com. 86400 IN NS ns1.baidu.com.
shifen.com. 86400 IN NS ns2.baidu.com.
shifen.com. 86400 IN NS ns4.baidu.com.
;; Received 186 bytes from 220.181.37.10#53(220.181.37.10) in 61 ms
拿到一条A记录,最终也就是www.baidu.com的IP地址了。
域名解析中A记录、CNAME、MX记录、NS记录的区别和联系
1.A记录
又称IP指向,用户可以在此设置子域名并指向到自己的目标主机地址上,
从而实现通过域名找到服务器。
说明:·指向的目标主机地址类型只能使用IP地址;
- CNAME
通常称别名指向。可以为一个主机设置别名。比如设置test.mydomain.com,
用来指向一个主机www.rddns.com那么以后就可以用test.mydomain.com来
代替访问www.rddns.com了。
说明:CNAME的目标主机地址只能使用主机名,不能使用IP地址;
·主机名前不能有任何其他前缀,如:http://等是不被允许的;·A记录优先于CNAME记录。即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效。
3.MX记录
邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。
说明:MX记录可以使用主机名或IP地址;·MX记录可以通过设置优先级实现主辅服务器设置,“优先级”中的数字越小表示级别越高。也可以使用相同优先级达到负载均衡的目的;·如果在“主机名”中填入子域名则此MX记录只对该子域名生效。
4.NS记录
解析服务器记录。用来表明由哪台服务器对该域名进行解析。这里的NS记录只对子域名生效。
例如用户希望由12.34.56.78这台服务器解析news.mydomain.com,则需要设置news.mydomain.com的NS记录。
说明:·“优先级”中的数字越小表示级别越高;·“IP地址/主机名”中既可以填写IP地址,也可以填写像ns.mydomain.com这样的主机地址,但必须保证该主机地址有效。
如,将news.mydomain.com的NS记录指向到ns.mydomain.com,在设置NS记录的同时还需要设置ns.mydomain.com的指向,
否则NS记录将无法正常解析;·NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。这里的NS记录只对子域名生效。
1、什么是负载均衡服务器?
负载均衡(Server Load Balancing,SLB)是指在一系列资源上面智能地分布网络负载。负载均衡可以减少网络拥塞,提高整体网络性能,提高自愈性,并确保企业关键性应用的可用性。当相同子域有多个目标地址,或域名的MX记录有多个目标地址且优先级相同时,表示轮循,可以达到负载均衡的目的,但需要虚拟主机和邮箱服务商支持。:
2、什么是TTL?
TTL值TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间。这个缓存时间太长和太短都不好,如果缓存时间太长,一旦域名被解析到的IP有变化,会导致被客户端缓存的域名无法解析到变化后的IP地址,以致该域名不能正常解析,这段时间内有可能会有一部分用户无法访问网站。如果缓存时间太短,会导致用户每次访问网站都要重新解析一次域名。
另外可以参考:
CNAME
一个域名有了A 记录解析就不能cname了?