nslookup命令详解:nslookup是一种网络管理命令行工具

Nslookup命令

① nslookup 命令主要用来诊断域名系统 (DNS) 基础结构的信息。
② nslookup 命令通常用来查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题。
③ nslookup 命令的两种模式:
nslookup 命令是一个能够查询互联网域名服务器信息的程序。他有两种工作模式,即《交互模式》和《非交互模式》。

  • 在《交互模式》下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。
  • 在《非交互模式》下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

④通过 man nslookup 可以看到对于nslookup命令的官方解释是“query Internet name servers interactively”。

直接查询

1
nslookup domain [dns-server]

命令解析:
①如果不指定dns-server(DNS服务器)参数,则用当前系统默认的dns服务器解析域名。
alt text
②指定dns-server(DNS服务器)参数:指定DNS服务器查询域名的IP地址
alt text
命令执行结果解析:
alt text
①如果不指定DNS服务器,采用默认DNS进行查询。如上图所示,服务器为本机DNS服务器信息;114.114.114.114为本机当前使用的DNS服务器;
②非权威应答:表示非从域名的权威服务器获得结果,而是从本地DNS缓存中获取的结果;
③address为目标域名所对应的IP地址(域名所对应的IP地址可以有多个,用户访问的时候会按照一定规则由其中一台计算机应答)

RR (Resource Records) & DNS Record

①资源记录(RR)是包含了下列字段的4元组:(Name, Value, Type, TTL)

  • 主机记录(A记录):RFC 1035 定义,A记录是用于名称解析的重要记录,提供标准的主机名到IP的地址映射。
  • 别名记录(CNAME记录): RFC 1035 定义,向查询的主机提供主机名对应的规范主机名。
  • 域名服务器记录(NS记录) :用来指定该域名由哪个DNS服务器来进行解析。 您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现: http://ns1.domain.com、http://ns2.domain.com等。 简单的说,NS记录返回域中主机IP地址的权威DNS服务器的主机名。
  • 邮件交换记录(MX记录):返回别名为Name对应的邮件服务器的规范主机名。

alt text

②DNS记录类型:
可以通过set type=” “的方式设置,更是可以设置set type=any

1
2
3
4
5
6
7
8
9
10
11
TYPE:

1️⃣ A (Address) 记录:用于将域名映射到IPv4地址。当用户访问一个域名时,A记录会告诉DNS解析器该域名对应的IP地址。
2️⃣ CNAME (Canonical Name) 记录:用于将一个域名别名映射到另一个域名。这允许多个域名指向同一个IP地址。
3️⃣ TXT (Text) 记录:用于存储文本信息,可以用于电子邮件验证、域名所有权验证等
4️⃣ AAAA 记录:类似于A记录,但用于将域名映射到IPv6地址。
5️⃣ SRV (Service) 记录:用于指定服务的位置,包括服务的名称、协议(如TCP或UDP)、域名和端口号
6️⃣ PTR (Pointer) 记录:用于反向解析,将IP地址映射回域名。这在某些情况下用于验证服务器的所有权。
7️⃣ NS (Name Server) 记录:指定哪个DNS服务器是该域名的权威服务器。NS记录告诉DNS解析器去哪个服务器查询域名的记录。
8️⃣ MX (Mail) 记录:用于指定处理电子邮件的邮件服务器。MX记录告诉邮件系统将邮件发送到哪个服务器。

alt text

交互模式

进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。

1
2
3
4
5
6
7
8
9
10
11
12
angkongming@Vostro ~ $ nslookup
> www.baidu.com
Server: 127.0.1.1 //上连的dns服务器
Address: 127.0.1.1#53 //上连的dns服务器ip和端口

Non-authoritative answer: //非权威答案,即从上连DNS服务器的本地缓存中读取出的值,而非实际去查询到的值
www.baidu.com canonical name = www.a.shifen.com. //说明www.baidu.com有个别名叫www.a.shifen.com
Name: www.a.shifen.com
Address: 180.97.33.107 //对应的ip1
Name: www.a.shifen.com
Address: 180.97.33.108 //对应的ip2
>

alt text

非交互模式

如果你直接在nslookup命令后加上所要查询的IP或主机名,那么就进入了非交互模式。当然,这个时候你也可以在第二个参数位置设置所要连接的域名服务器。

1
2
3
4
5
6
7
8
9
10
11
12
wangkongming@Vostro ~ $ nslookup www.baidu.com
Server: 127.0.1.1
Address: 127.0.1.1#53

Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 180.97.33.107
Name: www.a.shifen.com
Address: 180.97.33.108

wangkongming@Vostro ~ $

命令执行后常见错误含义
①Timed Out:表示服务器在超出指定的重试次数后不响应请求。

②No Response from Server:表示名称服务器不在服务器上运行。

③No Records:表示服务器没有主机的指定查询类型的资源记录,即使主机名有效。

④Non-Existent Domain:表示主机或域名不存在。

⑤Connection Refused:表示在查询时,不能连接到名称或远程用户信息服务命令服务器。该错误是与 ls 和 finger 请求有关的典型错误。

⑥Network Is Unreachable:表示在查询时,不能连接到名称或远程用户信息服务命令服务器。该错误是与 ls 和 finger 请求有关的典型错误。

⑦Server Failure:表示名称服务器遇到内部矛盾并且不能返回有效的应答。

⑧Refused:表示名称服务器拒绝请求服务。

⑨Format Error:表示名称服务器拒绝数据包请求因为格式不正确。

拓展1-DNS协议及抓包

使用 nslookup 命令向域名服务器查询某域名的IP地址产生的网络请求如下:
text
text
text

拓展2-Linux下的名字解析

Linux/Unix本地dns配置文件,文件是:/etc/resolv.conf
打开该文件:vi /etc/resolv.conf :
alt text

DNS配置不对,解析不出域名对应的IP,因此会出现ping域名Ping不通的情况(实际运维遇到过)

参考文献或转载相关:

https://zhuanlan.zhihu.com/p/361451835

https://blog.csdn.net/weixin_45672615/article/details/115948218

https://m.php.cn/article/462078.html

https://baijiahao.baidu.com/s?id=1745289983753039428&wfr=spider&for=pc

https://blog.csdn.net/lovedingd/article/details/118806337

https://javaforall.cn/180429.html