nslookup(name server lookup)是Linux/Unix系统中用于查询DNS(域名系统)记录的命令行工具,主要用于诊断域名解析问题、查询DNS记录类型以及验证DNS服务器配置。
nslookup支持两种模式:非交互模式(直接执行查询后退出)和交互模式(可连续执行多个查询)。它可以查询A记录、AAAA记录、MX记录、NS记录、TXT记录等多种DNS记录类型,并支持指定特定的DNS服务器进行查询。掌握nslookup是网络管理员排查域名解析问题的基础技能。
注意: 在某些Linux发行版中,nslookup已被dig命令取代,但仍被广泛使用。现代系统通常需要安装bind-utils或dnsutils包。
1. 基本语法
| 命令 | 说明 |
|---|
nslookup example.com | |
nslookup example.com 8.8.8.8 | |
nslookup -type=mx example.com | |
nslookup 192.0.2.1 | |
nslookup | |
2. 常见查询
| 命令 | 说明 |
|---|
nslookup example.com | |
nslookup www.example.com | |
nslookup localhost | |
nslookup 127.0.0.1 | |
nslookup 8.8.8.8 | |
nslookup -timeout=5 example.com | |
nslookup -retry=3 example.com | |
3. DNS记录类型
| 记录类型 | 说明与示例 |
|---|
-type=a | |
-type=aaaa | |
-type=mx | |
-type=ns | |
-type=txt | |
-type=soa | |
-type=cname | |
-type=ptr | |
-type=any | |
4. 指定DNS服务器
| 命令 | 说明 |
|---|
nslookup example.com 8.8.8.8 | |
nslookup example.com 1.1.1.1 | 使用Cloudflare DNS(1.1.1.1)查询 |
nslookup example.com 9.9.9.9 | |
nslookup -type=mx example.com 8.8.8.8 | |
nslookup -type=txt example.com 1.1.1.1 | |
nslookup example.com 192.168.1.1 | |
5. 交互模式
交互模式适合执行多个连续查询:
| 命令 | 说明 |
|---|
nslookup | |
set type=mx | |
set type=txt | |
set type=any | |
set type=a | |
server 8.8.8.8 | |
set timeout=5 | |
set retry=3 | |
example.com | |
exit | |
交互模式示例:
$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
> settype=mx
> gmail.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.
...
> exit
6. 实用组合模式
| 命令 | 说明 |
|---|
for domain in example.com test.com; do nslookup $domain 8.8.8.8; done | |
nslookup -type=mx example.com | grep "mail exchanger" | |
nslookup -type=ns example.com | grep "nameserver" | |
nslookup 192.168.1.1 2>/dev/null | grep "name =" | |
dig +short example.com | |
host -t mx example.com | |
7. nslookup vs dig vs host 对比
选择建议:
8. 输出信息解读
| 输出内容 | 说明 |
|---|
Server: | |
Address: | |
Non-authoritative answer | |
Authoritative answer | |
canonical name = | |
mail exchanger = | |
name server = | |
text = | |
9. 常用选项速查
| 选项 | 说明 |
|---|
-type= | 指定查询的DNS记录类型(a、aaaa、mx、ns、txt、soa、cname、ptr、any) |
-timeout= | |
-retry= | |
-port= | |
-debug | |
-d2 | |
-norecurse | |
-vc | |
10. 故障排查
| 问题 | 解决方法 |
|---|
| NXDOMAIN | 域名不存在;检查域名拼写是否正确;确认域名是否已注册 |
| SERVFAIL | DNS服务器内部错误;尝试使用其他DNS服务器(如8.8.8.8) |
| Connection timed out | 网络连接问题;检查/etc/resolv.conf;验证DNS服务器可达性 |
| Non-authoritative answer | 正常现象,表示答案来自缓存;如需权威答案,查询权威NS服务器 |
| No answer | 该域名没有配置请求的记录类型;尝试查询其他记录类型 |
| nslookup: command not found | 安装dnsutils或bind-utils包:apt install dnsutils 或 yum install bind-utils |
| 反向查询无结果 | |
| 不同DNS服务器结果不一致 | DNS传播延迟;TTL值影响;检查权威NS服务器配置 |
11. 相关配置文件
| 文件路径 | 说明 |
|---|
/etc/resolv.conf | DNS解析器配置文件(定义默认DNS服务器和搜索域) |
/etc/nsswitch.conf | |
/etc/hosts | |
/etc/resolv.conf 示例:
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
温馨提示: nslookup是快速DNS诊断的利器,但现代Linux系统更推荐使用dig进行详细调试。建议掌握以下技巧:1)查询特定DNS服务器可以帮助判断问题是本地DNS还是全局DNS;2)使用-type=mx检查邮件服务器配置;3)使用-type=txt检查SPF记录等验证信息;4)反向查询(IP转域名)常用于日志分析;5)对比多个DNS服务器结果可排查DNS传播延迟问题。在脚本中建议使用dig +short获得更简洁的输出格式。