nslookup (全称 name server lookup) ,是一个在命令行界面下的网络工具,主要用来诊断域名系统基础结构的信息,以此获得DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。它有两种模式: 交互 & 非交互,进入交互模式在命令行界面直接输入nslookup按回车,非交互模式则是后面跟上查询的域名或者 IP 地址按回车。一般来说,非交互模式适用于简单的单次查询,若需要多次查询,则交互模式更加适合。
nslookup 的查询在不指定参数的情况下,默认查询的类型为A。
nslookup baidu.com #采用默认的DNS服务器查询
nslookup baidu.com 114.114.114.114 # 采用指定的DNS服务器查询
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
Name: baidu.com
Addresses: 39.156.66.10
110.242.68.66
最上面的 Server 和 Address 是该词查询的 DNS 服务器。可以自己指定,也可以默认.
非权威应答(Non-authoritative answer)意味着answer来自于其他服务器的缓存,而不是权威的Baidu DNS服务器。缓存会根据 ttl(Time to Live)的值定时的进行更新。
- 每个DNS服务器查询到的IP可能不相同
- 可能查询出来的记录会出现多个
- 对于被污染的域名,查询的结果是不准确的
下面先介绍DNS的记录类型。
域名注册完成后首先需要做域名解析,域名解析就是把域名指向网站所在服务器的IP,让人们通过注册的域名可以访问到网站。IP地址是网络上标识服务器的数字地址,为了方便记忆,使用域名来代替IP地址。域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器完成。DNS服务器会把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。域名解析时会添加解析记录,这些记录有:A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录、SRV记录、URL转发。
全球一共有13个DNS根服务器
A.root-servers.net 198.41.0.4 美国
B.root-servers.net 192.228.79.201 美国
C.root-servers.net 192.33.4.12 法国
D.root-servers.net 128.8.10.90 美国
E.root-servers.net 192.203.230.10 美国
F.root-servers.net 192.5.5.241 美国
G.root-servers.net 192.112.36.4 美国
H.root-servers.net 128.63.2.53 美国
I.root-servers.net 192.36.148.17 瑞典
J.root-servers.net 192.58.128.30 美国
K.root-servers.net 193.0.14.129 英国
L.root-servers.net 198.32.64.12 美国
M.root-servers.net 202.12.27.33 日本
一、DNS记录
1、A记录
用于名称解析的重要记录,将域名指向一个IPv4地址。用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器。
指向的目标主机地址类型只能使用IP地址;
A记录可以将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址。
AAAA记录: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA记录。
IPv4:
示例:ns1.exmaple.com. IN A 198.51.100.2
解释:【domain】 IN A 【IP地址】
IPv6:
示例:ns1.exmaple.com. IN AAAA 8fe0::8f61:ac8:30cd:a16e
解释:【domain】 IN AAAA 【IP地址】
【IN的意思是「Internet」,不是IN/OUT的「IN」。】
泛域名解析:即将该域名所有未指定的子域名都指向一个空间。在“主机名”中填入*,“类型”为A,“IP地址/主机名”中填入web服务器的IP地址。
负载均衡的实现:负载均衡(Server Load Balancing,SLB)是指在一系列资源上面动态地分布网络负载。负载均衡可以减少网络拥塞,提高整体网络性能,提高自愈性,并确保企业关键性应用的可用性。 当相同子域名有多个目标地址时,表示轮循,可以达到负载均衡的目的,但需要虚拟主机服务商支持。
PTR记录: PTR记录是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名,进行反向DNS解析。
nslookup -ty=ptr 8.8.8.8
nslookup -ty=ptr 8.8.8.8 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
8.8.8.8.in-addr.arpa name = dns.google
- If Type=A , then Name is a hostname and Value is the IP address for the hostname. Thus, a Type A record provides the standard hostname-to-IP address mapping. As an example, ( relay1.bar.foo.com , 145.37.93.126, A) is a Type A record.
- If a hostname/IP address pair is cached in a DNS server and another query arrives to the DNS server for the same hostname, the DNS server can provide the desired IP address, even if it is not authoritative for the hostname. Because hosts and mappings between hostnames and IP addresses are by no means permanent, DNS servers discard cached information after a period of time (often set to two days).
2、CNAME记录
别名记录。这种记录允许您将多个名字映射到另外一个域名。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就 www.mydomain.com和“mail.mydomain.com”。实际上他们都指向 “host.mydomain.com”。通常称别名指向。
示例:sub.example.com. IN CNAME hoge.example.com.
解释:【別名】 IN CNAME 【原名】
给某一个domain起多个名字。
类似于,jd.com,jd360.com,jingdong.com虽然是不同名字的域名,但是可以指向同一个原名jd.com。可以让企业的对外展示更加灵活。
jd360.com IN CNAME jd.com
jingdong.com IN CNAME jd.com
jd.com IN A 123.123.123.123 (这条是A记录例子)
CNAME的目标主机地址只能使用主机名,不能使用IP地址;
主机名前不能有任何其他前缀,如:http://等是不被允许的;
A记录优先于CNAME记录。即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效。
3、NS 记录
解析服务器记录。用来表明由哪台DNS服务器对该域名进行解析。这里的NS记录只对子域名生效。例如用户希望由12.34.56.78这台服务器解析news.mydomain.com,则需要设置news.mydomain.com的NS记录。
如,将 news.mydomain.com的NS记录指向到ns.mydomain.com,在设置NS记录的同时还需要设置ns.mydomain.com的 指向,否则NS记录将无法正常解析;
“优先级”中的数字越小表示级别越高;
“IP地址/主机名”中既可以填写IP地址,也可以填写主机名,但必须保证该主机地址有效。
NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。这里的NS记录只对子域名生效。
示例:example.com. IN NS ns1.example.com.
解释:【domain】 IN NS 【DNS服务器】
- If Type=NS , then Name is a domain (such as foo.com ) and Value is the hostname of an authoritative DNS server that knows how to obtain the IP addresses for hosts in the domain.This record is used to route DNS queries further along in the query chain. As an example, (foo.com ,dns.foo.com , NS) is a Type NS record.
4、MX记录
邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。
MX记录可以使用主机名或IP地址;
MX记录可以通过设置优先级实现主辅服务器设置,“优先级”中的数字越小表示级别越高。也可以使用相同优先级达到负载均衡的目的(当域名的MX记录有多个目标地址且优先级相同时,表示轮循,可以达到负载均衡的目的,但需要邮箱服务商支持。);
如果在“主机名”中填入子域名则此MX记录只对该子域名生效。
在DNS上设定,用于将邮箱地址@符号后的域名指向邮件服务器。
示例:example.com. IN MX 10 mail.example.com.
解释:【domain】 IN MX 【优先度】 【邮件服务器】
当发信侧服务器给受信侧发邮件时,首先会要求DNS服务器解析受信侧邮箱地址中@后面部分的域名对应的MX记录(DNS的写法可以理解成example.com 的A记录下面,有一行上面示例的MX记录,当然邮箱服务器也有对应的A记录)。
这样,邮件就直接发到对应的MX记录的A记录里的IP了。
给test@exmaple.com发邮件的话,
DNS会返回给发信侧198.51.100.3这个IP
exmaple.com. IN A 198.51.100.2
example.com. IN MX 10 mail.example.com.
mail.example.com. IN A 198.51.100.3
如果是普通用户通过【exmaple.com】浏览主页,那么DNS继续返回 198.51.100.2 。这个其实也需要DNS判断请求服务器是邮件服务器还是普通的访问。
5、TXT记录
可任意填写,一般指某个主机名或域名的说明,或者联系方式,或者标注提醒等等;可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录。SPF记录是TXT记录的一个运用。后面的备注需要按照指定的格式才能有效。
示例:ns1.exmaple.com. IN TXT "联系电话:XXXX"
解释:【domain】 IN TXT 【任意字符串】
示例:exmaple.com. IN TXT "v=spf1 ip4:198.51.100.1 ~all"
解释:【domain】 IN TXT 【送信侧邮件服务器确认规则】
6、其他记录
SOA记录: SOA叫做起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中那一台是主服务器
显性URL转发记录: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址。例如:将www.liuht.cn显性转发到www.itbilu.com后,访问www.liuht.cn时,地址栏显示的地址为:www.itbilu.com。
隐性UR转发记录: 将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址,隐性转发会隐藏真实的目标地址。例如:将www.liuht.cn显性转发到www.itbilu.com后,访问www.liuht.cn时,地址栏显示的地址仍然是:www.liuht.cn。
使用A记录和CNAME进行域名解析的区别:
A记录是把一个域名解析到一个IP地址,而CNAME记录是把域名解析到另外一个域名,而这个域名最终会指向一个A记录,在功能实现在上A记录与CNAME记录没有区别。但是CNAME记录在做IP地址变更时要比A记录方便。CNAME记录允许将多个名字映射到同一台计算机,当有多个域名需要指向同一服务器IP,此时可以将一个域名做A记录指向服务器IP,然后将其他的域名做别名(即:CNAME)到A记录的域名上。当服务器IP地址变更时,只需要更改A记录的那个域名到新IP上,其它做别名的域名会自动更改到新的IP地址上,而不必对每个域名做更改。
A记录与AAAA记录
二者都是指向一个IP地址,但对应的IP版本不同。A记录指向IPv4地址,AAAA记录指向IPv6地址。AAAA记录是A记录的升级版本。
TTL-生存时间(Time To Live),表示解析记录在DNS服务器中的缓存时间,TTL的时间长度单位是秒,一般为3600秒。比如:在访问www.itbilu.com时,如果在DNS服务器的缓存中没有该记录,就会向某个NS服务器发出请求,获得该记录后,该记录会在DNS服务器上保存TTL的时间长度,在TTL有效期内访问www.itbilu.com,DNS服务器会直接缓存中返回刚才的记录。
DNS:保存资源记录(RR)的分布式数据库。
资源记录(RR)是包含了下列字段的4元组:
(Name, Value, Type, TTL)
RR格式:(name, value, type, ttl)
Type=A:name为主机,value为IP地址。
Type=CNAME:name为规范名字的别名,value为规范名字。
Type=NS:name为域名,value为该域名的权威服务器的域名。
Type=MX:value为name对应的邮件服务器的名字。
二、nslookup命令
-querytype 和 -type 的效用一致,可以简写为 -q 和 -ty,其在不指定类型的情况下默认查询类型为 A
设置查询类型
非交互模式: nslookup -ty=类型 name
交互模式: set ty=类型
使用指定DNS服务器查询
nslookup -qt=类型 目标域名 指定的DNS服务器IP或域名(不指定服务器则采用默认DNS查询)
nslookup -qt=A tool.chinaz.com 8.8.8.8
Server: dns.google
Address: 8.8.8.8
Non-authoritative answer:
Name: tool.chinaz.com
Addresses: 36.248.216.150
221.5.43.23
36.248.216.133
nslookup -type=A 163.com 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
Name: 163.com
Addresses: 123.58.180.7
123.58.180.8
nslookup -type=MX 163.com 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
163.com MX preference = 10, mail exchanger = 163mx02.mxmail.netease.com
163.com MX preference = 10, mail exchanger = 163mx01.mxmail.netease.com
163.com MX preference = 10, mail exchanger = 163mx03.mxmail.netease.com
163.com MX preference = 50, mail exchanger = 163mx00.mxmail.netease.com
nslookup -type=PTR 114.114.114.114 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
114.114.114.114.in-addr.arpa name = public1.114dns.com
nslookup -type=PTR 8.8.8.8 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
8.8.8.8.in-addr.arpa name = dns.google
nslookup -type=NS 163.com 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
163.com nameserver = ns8.166.com
163.com nameserver = ns3.nease.net
163.com nameserver = ns6.nease.net
163.com nameserver = ns4.nease.net
163.com nameserver = ns2.166.com
163.com nameserver = ns5.nease.net
163.com nameserver = ns1.nease.net
nslookup -type=TXT 163.com 114.114.114.114
Server: public1.114dns.com
Address: 114.114.114.114
Non-authoritative answer:
163.com text =
"57c23e6c1ed24f219803362dadf8dea3"
163.com text =
"qdx50vkxg6qpn3n1k6n1tg2syg5wp96y"
163.com text =
"google-site-verification=hRXfNWRtd9HKlh-ZBOuUgGrxBJh526R8Uygp0jEZ9wY"
163.com text =
"0hz8zn8jpkr3vffgll8hnd6j873bzvsg"
163.com text =
"facebook-domain-verification=kqgnezlldheaauy9huiesb3j2emhh3 "
163.com text =
"v=spf1 include:spf.mail.163.com -all"
交互模式下的 set 命令可以更改影响查找的状态信息,不仅用于记录类型的变更,使用set all可以查看常用选项的当前值以及当前默认的服务器和主机信息,注意,DNS 服务器不能通过 set 指定。
参考链接:
[1]https://www.jianshu.com/p/b483300378af
[2]https://zhuanlan.zhihu.com/p/91769762
[3]https://zhuanlan.zhihu.com/p/361451835
[4]https://www.cnblogs.com/bluestorm/p/10345334.html
[5]https://blog.csdn.net/m0_51947109/article/details/129336882