nslookup
是一个用于查询域名系统(DNS)的命令行工具,可以帮助用户获取域名与 IP 地址的映射关系、查找 DNS 记录(如 A、MX、NS 等),以及诊断 DNS 相关问题。
1. 基本用法
nslookup
的基本功能是查询域名对应的 IP 地址。直接在命令行输入域名即可获取结果。
示例 1:查询域名的 IP 地址
nslookup 22fn.com
输出:
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: 22fn.com
Address: 142.250.190.78
Server
表示当前使用的 DNS 服务器。Address
是 DNS 服务器的 IP 地址和端口。- 查询结果显示
22fn.com
的 IPv4 地址。
2. 指定 DNS 服务器
默认情况下,nslookup
使用系统配置的 DNS 服务器。如果需要使用特定的 DNS 服务器,可以在命令后加上服务器地址。
示例 2:使用 Google 的公共 DNS 查询
nslookup 22fn.com 8.8.8.8
输出:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: 22fn.com
Address: 142.250.190.78
- 这里指定了
8.8.8.8
(Google 的公共 DNS)作为查询服务器。
3. 查询不同类型的 DNS 记录
nslookup
支持查询多种 DNS 记录类型,例如 A(地址记录)、MX(邮件交换记录)、NS(名称服务器记录)等。可以通过交互模式或命令行参数实现。
3.1 交互模式
输入 nslookup
后进入交互模式,然后使用 set type=<类型>
指定查询类型。
示例 3:查询 MX 记录
nslookup
> set type=MX
> 22fn.com
输出:
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
22fn.com mail exchanger = 10 smtp.22fn.com.
set type=MX
设置查询类型为 MX 记录。- 输出显示
22fn.com
的邮件服务器。
3.2 单行命令查询
也可以直接在命令行中指定类型,使用 -query=<类型>
或 -type=<类型>
参数。
示例 4:查询 NS 记录
nslookup -type=NS 22fn.com
输出:
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
22fn.com nameserver = ns1.22fn.com.
22fn.com nameserver = ns2.22fn.com.
22fn.com nameserver = ns3.22fn.com.
22fn.com nameserver = ns4.22fn.com.
- 查询显示
22fn.com
的名称服务器。
4. 反向 DNS 查询
nslookup
可以根据 IP 地址反查域名(PTR 记录)。
示例 5:反向查询 IP 的域名
nslookup 142.250.190.78
输出:
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
78.190.250.142.in-addr.arpa name = fra16s50-in-f14.1e100.net.
- 输入 IP 地址后,返回对应的主机名。
5. 高级选项
nslookup
提供了一些高级选项,用于调试或获取更多信息。
5.1 显示详细信息
使用 -debug
参数可以显示详细的查询过程。
示例 6:调试模式查询
nslookup -debug 22fn.com
输出(部分):
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = NOERROR
flags: QR RD RA; QUES: 1, ANS: 1, AUTH: 0, ADDIT: 0
QUESTIONS:
22fn.com, type = A, class = IN
ANSWERS:
-> 22fn.com
internet address = 142.250.190.78
ttl = 300 (5 mins)
------------
- 显示了 DNS 查询的头部信息、问题和答案部分,便于调试。
5.2 指定端口
默认情况下,DNS 查询使用 53 端口。如果目标服务器使用非标准端口,可以用 -port=<端口>
指定。
示例 7:指定端口查询
nslookup -port=5353 22fn.com 8.8.8.8
- 将查询发送到
8.8.8.8
的 5353 端口。
6. 批量查询
nslookup
本身不支持批量查询,但可以结合脚本实现。例如,在 Windows 下使用批处理文件,或在 Linux 下使用 shell 脚本。
示例 8:Linux 下的批量查询脚本
#!/bin/bash
domains=("22fn.com" "baidu.com" "x.com")
for domain in "${domains[@]}"; do
echo "查询 $domain ..."
nslookup $domain
echo "----------------"
done
运行结果(部分):
查询 22fn.com ...
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: 22fn.com
Address: 142.250.190.78
----------------
- 依次查询多个域名并输出结果。
7. 常见问题诊断
nslookup
常用于诊断 DNS 问题,例如域名解析失败或服务器配置错误。
示例 9:测试 DNS 服务器是否正常
nslookup -timeout=10 22fn.com 8.8.8.8
-timeout=10
设置超时时间为 10 秒。- 如果没有返回结果,可能表示 DNS 服务器不可用。
8. 注意事项
- 非权威回答(Non-authoritative answer):表示结果来自缓存,而非直接从权威服务器获取。
- 操作系统差异:Windows 和 Linux 的
nslookup
用法略有不同,某些选项可能仅在特定系统上可用。 - 替代工具:
dig
和host
是功能更强大的 DNS 查询工具,可作为nslookup
的补充。
nslookup
是一个简单而强大的 DNS 查询工具,适用于域名解析、记录查询和问题诊断。通过本文的示例,您可以掌握其基本用法和高级功能。如果需要更复杂的查询,可以结合脚本或尝试其他工具如 dig
。
希望这篇文章对您有所帮助!如果需要进一步的代码示例或特定场景的讲解,请告诉我。