前言
在介绍域名解析命令前,需要首先理解域名的解析过程,理解解析过程后,能更深刻的理解nslookup、dig命令。
域名解析
为什么要有域名?
假如没有域名,那么访问一个网址,比如百度,需要输入ip,我们知道输ip麻烦而且不好记。所以,才发明了域名。这就像你们家的门牌号和你的名字一样,有人找你,他要是说某某门牌号也许很多人不知道,但是一提你的名字很多人就知道了,以上是形象的说法。其实,我们还可以从tcp/ip模型去思考,tcp/ip只认识ip它不认识域名,所以在访问网络时,最终是将域名解析为ip的。浏览器发送请求之前,首先会通过DNS解析获取ip,然后再发送请求。
域名解析就是从域名地址转为ip地址的过程。
第1步,客户端发送到local name server,如果local name server存有域名和对应的ip,则返回,否则发送请求到root name server
第2步,local name server发送请求到root name server,root name server返回顶级域名服务器地址(gTLD name server),
第4步,local name server 请求gTLD name server,gTLD name server返回对应的name server
第6步,local name server请求name server,name server返回ttl和ip,local name server缓存ip,然后返回给客户端。
注意,name server可能有多级。
常见 DNS 记录的类型
类型 | 目的 |
A | 地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。 |
AAAA | 用来指定主机名(或域名)对应的 IPv6 地址记录。 |
CNAME | 如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。 |
MX | MX记录 MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。 (邮件服务器域名映射) |
NS | 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。 |
SOA | SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。 |
TXT | 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。 |
nslookup
查询域名对应的ip
windows&&linux
查看域名对应的ip,无论在windows还是在linux下都是用 nslookup
,这里还是拿 www.baidu.com 做测试。
下面我们来分析一下 nslookup www.baidu.com
结果
Server: 192.168.0.5 //1
Address: 192.168.0.5#53 //2
Non-authoritative answer://3
www.baidu.com canonical name = www.a.shifen.com.//4
Name: www.a.shifen.com//5
Address: 61.135.169.125//6
Name: www.a.shifen.com//7
Address: 61.135.169.121//8
第1行,Server,指的是默认dns服务器,也就是local DNS,就是局域网的DNS服务器
第2行,Address,指的是localDNS对应的ip
第3行,非权威解答:要查询的域名不受默认dns服务器管理,就是非权威解答。反之要查询的域名受默认域名dns服务器管理,就是权威解答。
第4行,指定别名,将 www.baidu.com
是 www.a.shifen.com的别名
第5-8行,同一个域名先后解析了两次,最终解析结果是 61.135.169.121
DIG命令
接下来,我们使用dig
(只能用在linux下,可以下载windows版本)查看详细的域名解析过程。
dig 命令默认的输出信息比较丰富,大概可以分为 5 个部分。
第一部分显示 dig 命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
第四部分的 "ANSWER SECTION" 是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
我们看第四部分就是结果。
dig(选项)(参数)
@<服务器地址>:指定进行域名解析的域名服务器;
-b <ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
-f <文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
-P:指定域名服务器所使用端口号;
-t <类型>:指定要查询的DNS数据类型;
-x <IP地址>:执行逆向域名查询;
-4:使用IPv4;
-6:使用IPv6;
-h:显示指令帮助信息。
示例
- dig www.baidu.com 默认查询CNAME 和A 记录。
- dig www.baidu.com CNAME 查询CNAME记录。
- dig @8.8.8.8 www.baidu.com 指定dns服务器查询 ,可以看到返回的第五部分的server 是不同的。
如果不指定 DNS 服务器,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器:
- dig -x 8.8.8.8 +short 反查dns ip 地址对应的域名,查看是谁家的。
- dig +short www.baidu.com 只显示cname 和A 记录。
- dig 选项 +nocomments +noquestion +noauthority +noadditional +nostats 说明
+nocomments 不显示 描述信息
+nostats 不显示 最后的统计信息
+noquestion 不显示问题部分
dig m.linuxidc.com +nocomments +noquestion +noauthority +noadditional +nostats
可以简化为 dig m.linuxidc.com +noall +answer
- dig www.baidu.com +trace 跟踪查询过程
-
dig www.baidu.com A +short 只查询A 记录。
-
dig www.baidu.com MX +short 只查询MX 记录。
-
dig www.baidu.com NS +short 查询域名的权威dns服务器
-
dig www.baidu.com AAAA +short 查询ipv6 记录。
参考https://www.cnblogs.com/daxian2012/archive/2013/01/10/2854126.html