前言
这个命令出现在与运维同学沟通过程中,在此之前要是问我一个域名对应的服务器是IP地址是什么,我肯定优先想到的是 ping
这个命令,这个命令确实可以在回复的信息中看到IP地址,但是不全面,有时一个域名对应不止一个IP地址,这时就要用到 nslookup 命令了,这也是在沟通中学到的新知识点。
常规使用
学这个命令就是拿来用的,最常见的用法就是 nslookup 域名
来查询域名对应的IP,并且这个用法在Windows(cmd)、Mac、Linux下都是通用的,算是一个不错的跨平台命令,对比一下 ping
看看有什么区别:
1 | C:\Users\Administrator>ping a1.easemob.com |
1 | C:\Users\Administrator>nslookup a1.easemob.com |
以上都是在cmd下执行的,如果在PowerShell中有一个名叫 Resolve-DnsName
的替代命令,执行结果如下:
1 | PS C:\Users\Administrator> Resolve-DnsName a1.easemob.com |
对于上述 Resolve-DnsName
命令的输出的结果解释如下:
CNAME 记录:
1
a1.easemob.com CNAME 0 Answer a1-v2.easemob.com.x.easeslb.com
这一行表示
a1.easemob.com
是一个别名(CNAME)记录,指向了a1-v2.easemob.com.x.easeslb.com
。AAAA 记录(IPv6 地址):
1
2
3
4
5Name : a1-v2.easemob.com.x.easeslb.com
QueryType : AAAA
TTL : 0
Section : Answer
IP6Address : 2408:4000:200::17这一行表示
a1-v2.easemob.com.x.easeslb.com
对应的 IPv6 地址是2408:4000:200::17
。1
2
3
4
5Name : a1-v2.easemob.com.x.easeslb.com
QueryType : AAAA
TTL : 0
Section : Answer
IP6Address : 2408:4000:200::c5这一行表示
a1-v2.easemob.com.x.easeslb.com
对应的另一个 IPv6 地址是2408:4000:200::c5
。A 记录(IPv4 地址):
1
2
3
4
5Name : a1-v2.easemob.com.x.easeslb.com
QueryType : A
TTL : 0
Section : Answer
IP4Address : 47.93.162.59这一行表示
a1-v2.easemob.com.x.easeslb.com
对应的 IPv4 地址是47.93.162.59
。1
2
3
4
5Name : a1-v2.easemob.com.x.easeslb.com
QueryType : A
TTL : 0
Section : Answer
IP4Address : 39.97.9.213这一行表示
a1-v2.easemob.com.x.easeslb.com
对应的另一个 IPv4 地址是39.97.9.213
。
综上所述,查询结果显示了域名 a1.easemob.com
的别名记录(CNAME)以及对应的IPv6和IPv4地址。IPv6地址有两个,分别是 2408:4000:200::17
和 2408:4000:200::c5
,而IPv4地址有两个,分别是 47.93.162.59
和 39.97.9.213
。
再从linux环境下学点不一样的
1 | $ nslookup a1.easemob.com |
在linux环境下使用基础命令,还在cmd环境下的输出结果类似,但是比Resolve-DnsName
命令输出的结果要简陋许多,但是可以通过添加参数来扩展命令。
type选项
nslookup
命令中的 type
参数用于指定查询的记录类型,即你想要获取的特定 DNS 记录的类型。以下是一些常见的 type
参数及其解释:
A (Address Record):
nslookup example.com type=A
查询域名example.com
的 IPv4 地址AAAA (IPv6 Address Record):
nslookup example.com type=AAAA
查询域名example.com
的 IPv6 地址CNAME (Canonical Name Record):
nslookup example.com type=CNAME
查询域名example.com
的别名记录MX (Mail Exchange Record):
nslookup example.com type=MX
查询域名example.com
的邮件交换记录NS (Name Server Record):
nslookup example.com type=NS
查询域名example.com
的域名服务器记录PTR (Pointer Record):
nslookup 192.168.1.1 type=PTR
查询 IP 地址192.168.1.1
对应的域名SOA (Start of Authority Record):
nslookup example.com type=SOA
查询域名example.com
的权威区域起始记录TXT (Text Record):
nslookup example.com type=TXT
查询域名example.com
的文本记录SRV (Service Record):
nslookup _ldap._tcp.example.com type=SRV
查询服务记录,例如 LDAP 服务ANY (Any Record):
nslookup example.com type=ANY
查询域名example.com
的所有记录类型
这些是常见的 type
参数,可以根据需要选择合适的类型来获取特定类型的 DNS 记录信息。在命令中,type
参数通常是可选的,如果不指定,默认为 A
记录
retry选项
该参数用于设置在没有收到响应时的重试次数。如果发送的 DNS 查询请求没有得到响应,nslookup
将会尝试重新发送请求,次数由 -retry
指定
1 | nslookup -retry=3 example.com |
这个示例中,-retry=3
表示设置重试次数为3次。如果第一次查询没有得到响应,nslookup
将尝试再次发送查询请求,最多重试3次
timeout选项
该参数用于设置等待响应的超时时间,以秒为单位。如果在指定的超时时间内没有收到响应,nslookup
将认为查询失败
1 | nslookup -timeout=5 example.com |
这个示例中,-timeout=5
表示设置超时时间为5秒。如果在5秒内没有收到查询响应,nslookup
将认为查询失败
使用更强大的dig命令
1 | $ dig a1.easemob.com |
上述 dig
命令对域名 a1.easemob.com
进行查询的输出结构的含义解释如下:
头部信息 (
HEADER
部分):1
->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1464
opcode
: 查询操作的类型,这里是QUERY
表示标准查询。status
: 查询的状态,NOERROR
表示没有错误。id
: 查询的唯一标识符,这里是 1464。
标志部分 (
flags
部分):1
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
qr
: 查询响应标志位,这里是qr
表示响应。rd
: 递归查询标志位,这里是rd
表示递归查询。ra
: 递归可用标志位,这里是ra
表示递归可用。QUERY: 1
: 查询的问题部分包含1个查询。ANSWER: 3
: 响应部分包含3个回答。AUTHORITY: 0
: 授权部分不包含任何信息。ADDITIONAL: 1
: 附加部分包含1个附加记录。
OPT PSEUDOSECTION 部分:
1
; EDNS: version: 0, flags:; udp: 65494
EDNS
: 扩展域名系统 (Extended DNS) 的信息。version: 0
: EDNS 的版本。flags:;
: EDNS 标志,这里为空。udp: 65494
: 用于 DNS 查询和响应的最大 UDP 数据包大小。
请求部分 (
QUESTION SECTION
):1
2;; QUESTION SECTION:
;a1.easemob.com. IN A- 查询的问题部分,这里是查询域名
a1.easemob.com
的A
记录。
- 查询的问题部分,这里是查询域名
应答部分 (
ANSWER SECTION
):1
2
3
4;; ANSWER SECTION:
a1.easemob.com. 0 IN CNAME a1-v2.easemob.com.x.easeslb.com.
a1-v2.easemob.com.x.easeslb.com. 0 IN A 47.93.162.59
a1-v2.easemob.com.x.easeslb.com. 0 IN A 39.97.9.213- 响应部分包含了查询的回答,这里包含了3个记录。
CNAME
记录:a1.easemob.com
是一个别名,指向a1-v2.easemob.com.x.easeslb.com
。A
记录:a1-v2.easemob.com.x.easeslb.com
对应两个IPv4地址,分别是47.93.162.59
和39.97.9.213
。
查询时间 (
Query time
):1
;; Query time: 0 msec
- 响应的查询时间,这里是 0 毫秒。
DNS 服务器信息 (
SERVER
和WHEN
部分):1
2;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: 一 1月 29 21:53:40 CST 2024SERVER
: 显示响应的 DNS 服务器的IP地址和端口号。WHEN
: 显示响应的时间戳。
消息大小 (
MSG SIZE
):1
;; MSG SIZE rcvd: 117
- 响应消息的大小,这里是 117 字节。
综上所述,这个 dig
查询输出提供了关于域名 a1.easemob.com
的详细信息,包括查询问题、响应部分(包括 CNAME 和 A 记录)、查询时间、DNS 服务器信息以及响应消息的大小。
总结
- 使用
nslookup
命令可以用来查询域名对应的IPnslookup a1.easemob.com
- 使用
nslookup
命令也可以用来查询IP对应的域名nslookup 8.8.8.8 -ty=PTR 1.1.1.1
nslookup
是一个跨平台的命令,Windows(cmd)、Mac、Linux都可以使用- 在PowerShell中等价的命令是
Resolve-DnsName
,默认输出信息较为详细 dig
命令也可用于查询域名的详细信息dig a1.easemob.com
曾经沧海难为水,除却巫山不是云,可以被压缩的时间才是生活,不得不花费的时间只是为了活着~