nslookup命令

nslookup命令 #

nslookup命令(name server lookup)是一个用于查询DNS(域名系统)记录的网络管理工具。它可以用来查询域名对应的IP地址、邮件服务器、名称服务器等DNS记录。

语法 #

nslookup [选项] [域名 | IP地址] [DNS服务器]

交互模式 #

nslookup可以在交互模式下运行,允许用户执行多个查询:

nslookup
> set type=A
> example.com
> set type=MX
> example.com
> exit

常用选项 #

选项 描述
-type=记录类型 指定要查询的DNS记录类型
-query=记录类型 同上,指定要查询的DNS记录类型
-timeout=秒数 设置查询超时时间
-retry=次数 设置重试次数
-debug 打开调试模式
-nodebug 关闭调试模式
-recurse 请求递归查询(默认)
-norecurse 请求非递归查询

常见DNS记录类型 #

记录类型 描述
A IPv4地址记录
AAAA IPv6地址记录
CNAME 规范名称记录(别名)
MX 邮件交换记录
NS 名称服务器记录
PTR 指针记录(反向DNS查询)
SOA 权威记录的起始
TXT 文本记录
SRV 服务定位记录
ANY 所有记录类型

常见用法 #

1. 查询域名的IP地址 #

nslookup example.com

输出示例:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   example.com
Address: 93.184.216.34

2. 反向DNS查询(IP地址到域名) #

nslookup 93.184.216.34

输出示例:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
34.216.184.93.in-addr.arpa    name = example.com.

3. 指定DNS服务器进行查询 #

nslookup example.com 8.8.8.8

这会使用Google的公共DNS服务器(8.8.8.8)进行查询。

4. 查询特定类型的DNS记录 #

nslookup -type=MX example.com

输出示例:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
example.com     mail exchanger = 0 example.com.

Authoritative answers can be found from:
example.com     nameserver = a.iana-servers.net.
example.com     nameserver = b.iana-servers.net.

5. 查询名称服务器 #

nslookup -type=NS example.com

输出示例:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
example.com     nameserver = a.iana-servers.net.
example.com     nameserver = b.iana-servers.net.

6. 查询IPv6地址 #

nslookup -type=AAAA example.com

7. 查询所有记录类型 #

nslookup -type=ANY example.com

注意:许多DNS服务器现在限制或禁用了ANY查询,因此此命令可能不会返回所有记录。

8. 查询TXT记录 #

nslookup -type=TXT example.com

9. 查询SOA记录 #

nslookup -type=SOA example.com

10. 使用调试模式 #

nslookup -debug example.com

交互模式命令 #

在交互模式下,可以使用以下命令:

命令 描述
set all 显示当前所有选项
set type=记录类型 设置查询的记录类型
set querytype=记录类型 同上
set timeout=秒数 设置查询超时时间
set retry=次数 设置重试次数
set domain=域名 设置默认搜索域
set srchlist=域名列表 设置域搜索列表
server DNS服务器 更改默认DNS服务器
lserver DNS服务器 更改默认DNS服务器(使用初始服务器解析)
root 将默认服务器设置为根服务器
ls [选项] 域名 列出域中的信息
exit 退出交互模式

实用示例 #

1. 查询域名的所有IP地址 #

nslookup example.com

2. 检查域名的邮件服务器 #

nslookup -type=MX example.com

3. 验证DNS配置 #

nslookup -type=NS example.com

4. 检查SPF记录(用于电子邮件验证) #

nslookup -type=TXT example.com

5. 检查域名是否存在 #

nslookup non-existent-domain.com

如果域名不存在,会返回NXDOMAIN错误。

6. 使用不同的DNS服务器进行比较 #

nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1

7. 查询子域名 #

nslookup subdomain.example.com

8. 在交互模式下执行多个查询 #

nslookup
> server 8.8.8.8
> set type=A
> example.com
> set type=MX
> example.com
> exit

9. 列出域中的所有主机(如果允许区域传送) #

nslookup
> server ns1.example.com
> ls -d example.com
> exit

注意:大多数DNS服务器不允许区域传送,此命令可能会失败。

10. 检查反向DNS记录 #

nslookup -type=PTR 34.216.184.93.in-addr.arpa

或者直接使用IP地址:

nslookup 93.184.216.34

输出解释 #

nslookup的输出通常包含以下部分:

  1. 服务器信息:显示用于查询的DNS服务器及其IP地址
  2. 回答部分:包含查询的结果
  3. 权威答案部分:指示可以从哪些名称服务器获取权威答案

例如:

Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
Name:   example.com
Address: 93.184.216.34
  • Server: 192.168.1.1:使用的DNS服务器
  • Address: 192.168.1.1#53:DNS服务器的IP地址和端口
  • Non-authoritative answer::表示答案来自缓存,而不是直接来自权威服务器
  • Name: example.com:查询的域名
  • Address: 93.184.216.34:域名对应的IP地址

与其他DNS工具的比较 #

工具 特点
nslookup 简单易用,交互模式,跨平台
dig 更详细的输出,更多选项,更适合脚本使用
host 简洁的输出,基本功能
whois 提供域名注册信息,而不是DNS记录

注意事项 #

  1. nslookup在某些Linux发行版中可能被标记为已弃用,推荐使用dig命令。

  2. 不同版本的nslookup可能有不同的选项和行为。

  3. 某些DNS服务器可能会限制或过滤某些类型的查询,特别是ANY查询。

  4. 在交互模式下,命令不需要前导连字符(例如,使用set type=A而不是set -type=A)。

  5. nslookup默认使用系统配置的DNS服务器(通常在/etc/resolv.conf中指定)。

提示 #

  • 使用-type=A-type=AAAA可以分别查询IPv4和IPv6地址
  • 使用-type=ANY可以尝试查询所有类型的记录,但许多服务器现在限制此类查询
  • 在排查DNS问题时,尝试使用不同的DNS服务器进行查询
  • 交互模式对于执行多个查询很有用
  • 使用set all命令可以查看当前所有设置
  • 如果需要更详细的DNS信息,考虑使用dig命令
  • 对于简单的主机名解析,host命令可能更加简洁
  • 在脚本中使用nslookup时,应该处理可能的错误输出