使用nslookup命令查询域名系统的信息

前言

这个命令出现在与运维同学沟通过程中,在此之前要是问我一个域名对应的服务器是IP地址是什么,我肯定优先想到的是 ping 这个命令,这个命令确实可以在回复的信息中看到IP地址,但是不全面,有时一个域名对应不止一个IP地址,这时就要用到 nslookup 命令了,这也是在沟通中学到的新知识点。

常规使用

学这个命令就是拿来用的,最常见的用法就是 nslookup 域名 来查询域名对应的IP,并且这个用法在Windows(cmd)、Mac、Linux下都是通用的,算是一个不错的跨平台命令,对比一下 ping 看看有什么区别:

1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\Administrator>ping a1.easemob.com

正在 Ping a1-v2.easemob.com.x.easeslb.com [47.93.162.59] 具有 32 字节的数据:
来自 47.93.162.59 的回复: 字节=32 时间=7ms TTL=88
来自 47.93.162.59 的回复: 字节=32 时间=7ms TTL=88
来自 47.93.162.59 的回复: 字节=32 时间=6ms TTL=88
来自 47.93.162.59 的回复: 字节=32 时间=6ms TTL=88

47.93.162.59 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 6ms,最长 = 7ms,平均 = 6ms
1
2
3
4
5
6
7
8
9
10
C:\Users\Administrator>nslookup a1.easemob.com
服务器: UnKnown
Address: 10.20.30.40

名称: a1-v2.easemob.com.x.easeslb.com
Addresses: 2408:4000:200::c5
2408:4000:200::17
47.93.162.59
39.97.9.52
Aliases: a1.easemob.com

以上都是在cmd下执行的,如果在PowerShell中有一个名叫 Resolve-DnsName 的替代命令,执行结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
PS C:\Users\Administrator> Resolve-DnsName a1.easemob.com

Name Type TTL Section NameHost
---- ---- --- ------- --------
a1.easemob.com CNAME 0 Answer a1-v2.easemob.com.x.easeslb.com

Name : a1-v2.easemob.com.x.easeslb.com
QueryType : AAAA
TTL : 0
IP6Address : 2408:4000:200::17


Name : a1-v2.easemob.com.x.easeslb.com
QueryType : AAAA
TTL : 0
Section : Answer
IP6Address : 2408:4000:200::c5


QueryType : A
TTL : 0
Section : Answer
IP4Address : 47.93.162.59


Name : a1-v2.easemob.com.x.easeslb.com
QueryType : A
TTL : 0
Section : Answer
IP4Address : 39.97.9.213

对于上述 Resolve-DnsName 命令的输出的结果解释如下:

  1. 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

  2. AAAA 记录(IPv6 地址):

    1
    2
    3
    4
    5
    Name       : 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
    5
    Name       : 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

  3. A 记录(IPv4 地址):

    1
    2
    3
    4
    5
    Name       : 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
    5
    Name       : 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::172408:4000:200::c5,而IPv4地址有两个,分别是 47.93.162.5939.97.9.213

再从linux环境下学点不一样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ nslookup a1.easemob.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
a1.easemob.com canonical name = a1-v2.easemob.com.x.easeslb.com.
Name: a1-v2.easemob.com.x.easeslb.com
Address: 39.97.9.213
Name: a1-v2.easemob.com.x.easeslb.com
Address: 47.93.162.59
Name: a1-v2.easemob.com.x.easeslb.com
Address: 2408:4000:200::17
Name: a1-v2.easemob.com.x.easeslb.com
Address: 2408:4000:200::c5

在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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ dig a1.easemob.com

; <<>> DiG 9.16.1-Ubuntu <<>> a1.easemob.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1464
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;a1.easemob.com. IN A

;; 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

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: 一 1月 29 21:53:40 CST 2024
;; MSG SIZE rcvd: 117

上述 dig 命令对域名 a1.easemob.com 进行查询的输出结构的含义解释如下:

  1. 头部信息 (HEADER 部分):

    1
    ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1464
    • opcode: 查询操作的类型,这里是 QUERY 表示标准查询。
    • status: 查询的状态,NOERROR 表示没有错误。
    • id: 查询的唯一标识符,这里是 1464。
  2. 标志部分 (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个附加记录。
  3. OPT PSEUDOSECTION 部分:

    1
    ; EDNS: version: 0, flags:; udp: 65494
    • EDNS: 扩展域名系统 (Extended DNS) 的信息。
    • version: 0: EDNS 的版本。
    • flags:;: EDNS 标志,这里为空。
    • udp: 65494: 用于 DNS 查询和响应的最大 UDP 数据包大小。
  4. 请求部分 (QUESTION SECTION):

    1
    2
    ;; QUESTION SECTION:
    ;a1.easemob.com. IN A
    • 查询的问题部分,这里是查询域名 a1.easemob.comA 记录。
  5. 应答部分 (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.5939.97.9.213
  6. 查询时间 (Query time):

    1
    ;; Query time: 0 msec
    • 响应的查询时间,这里是 0 毫秒。
  7. DNS 服务器信息 (SERVERWHEN 部分):

    1
    2
    ;; SERVER: 127.0.0.53#53(127.0.0.53)
    ;; WHEN: 一 1月 29 21:53:40 CST 2024
    • SERVER: 显示响应的 DNS 服务器的IP地址和端口号。
    • WHEN: 显示响应的时间戳。
  8. 消息大小 (MSG SIZE):

    1
    ;; MSG SIZE  rcvd: 117
    • 响应消息的大小,这里是 117 字节。

综上所述,这个 dig 查询输出提供了关于域名 a1.easemob.com 的详细信息,包括查询问题、响应部分(包括 CNAME 和 A 记录)、查询时间、DNS 服务器信息以及响应消息的大小。

总结

  • 使用 nslookup 命令可以用来查询域名对应的IP nslookup 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

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

曾经沧海难为水,除却巫山不是云,可以被压缩的时间才是生活,不得不花费的时间只是为了活着~

Albert Shi wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客