首先看下window CMD中 nslookup /?返回的帮助结果,这个结果#解释中,第二条和第四条的server代表不同含义 要注意。
C:\Users\HLGF>nslookup /?
用法:
nslookup [-opt ...] # 使用默认服务器的交互模式
nslookup [-opt ...] - server # 使用 "server"的交互模式 server(代表就是被查的域名或者IP)举例 nslooup [参数] - baidu.com 就开启了nslookup baidu.com的交互式模式。
nslookup [-opt ...] host # 仅查找使用默认服务器的 "host" 不手动指定 DNS 服务器,直接使用本机系统默认 DNS 去查询 host(代表被查的域名和IP)
nslookup [-opt ...] host server # 仅查找使用 "server" 的 "host" 指定server(DNS服务器地址),查询host(代表被查的域名和IP)

nslookup有两种运行模式

非交互模式
nslookup [-opt ...] 被查询的目标域名/ip [指定的DNS] #[-opt ...]代表可以多个参数可以连写,两参数之间可以用空格隔开
举例# 开启调试 + 查询TXT记录 + 超时3秒,阿里DNS
nslookup -debug -type=TXT -timeout=3 baidu.com 223.5.5.5

[-opt] 列表和含义 这些是CMD 命令行选项,不是交互式 set 子命令(虽然很多功能一一对应,但写法不一样)

命令行选项 等价交互式 set 说明
-type=XXX set type=XXX 指定记录类型 (A/AAAA/MX/TXT/NS/SOA/CNAME/PTR),别名 -querytype= SPF主域名的 TXT规定哪些 IP 可以代这个域名发邮件,防冒充DKIMxxx._domainkey子域名 TXT邮件签名,防止邮件内容被篡改域名验证子域名 TXT给服务商证明:你拥有这个域名 查询TXT时会显示乱码 在 CMD中先chcp 65001 命令改变字符集为UTF-8
-querytype=XXX set q=XXX 和 -type 完全一样,只是别名
-timeout=N set timeout=N 超时时间,单位秒
-vc set vc Virtual Circuit,强制 TCP53 查询默认情况(不写 - vc)DNS 默认走 UDP 53。UDP 轻量、速度快,但有报文长度限制:512 字节。如果 DNS 返回的结果比较长(比如多条 TXT、DKIM、大量 NS 记录),UDP 包装不下,服务器会截断应答。截断之后,nslookup 收到不完整数据,查询失败。
-norecurse set norecurse 关闭递归查询 误区:-norecurse 不能把递归 DNS 变成权威 DNS。-norecurse只是报文里的一个标志位,只是告诉对方 “不要帮我继续迭代查询”,不代表拿到权威结果。例子nslookup -type=NS -norecurse qq.com目标服务器:本机递归 DNS (172.21.1.143) → 从缓存返回 → 非权威应答 例子2nslookup -type=NS -norecurse qq.com ns1.qq.com目标服务器:ns1.qq.com(qq 的权威 DNS)→ 服务器本身持有原始记录 → 权威应答
-recurse set recurse 开启递归(默认开启,一般不用写)递归就是你把查询发给 DNS 服务器,让这台 DNS 服务器帮你把整个域名解析全程搞定。如果它自己不知道答案,它会替你去问根服务器、顶级域服务器、权威服务器,拿到最终结果再返回给你。- norecurse,关闭递归)你告诉 DNS 服务器:你只需要返回你自己知道的信息,不要帮我继续往下查。如果这台服务器没有该域名的最终解析结果,它只会返回下一级 DNS 服务器地址,不再继续替你迭代查询。
-port=N set port=N 指定 DNS 端口,默认 53
-debug set debug 开启简易调试,查看查询交互
-d2 set d2 最高级调试,打印完整 DNS 报文
-domain=xxx set domain=xxx 设置默认搜索域 范例nslookup -domain=test.local server01 192.168.1.1 再一个范例nslookup -domain=baidu.com www

|
| -srchlist=d1;d2 | set srchlist=d1;d2 | 多个域名搜索域,分号分隔 范例nslookup -srchlist=test.local;lab.local server01 192.168.1.1 |
| -nosrch | set nosrch | 关闭域名后缀自动追加(不使用搜索域) |
| -class=IN | set class=IN | DNS 类别,默认 IN (互联网),几乎不用改 |

举例
nslookup -type=TXT -timeout=3 -vc baidu.com 223.5.5.5

参数拆解

  1. -type=TXT:查询 TXT 文本记录(用来查 SPF/DKIM 邮件防伪造记录)
  2. -timeout=3:DNS 查询超时时间 3 秒,3 秒没收到应答就判定超时
  3. -vc:Virtual Circuit,强制使用 TCP 53 端口查询(UDP 报文太长会截断,TXT/DKIM 长记录常用)
  4. baidu.com:host,要查询的目标域名
  5. 223.5.5.5:server,指定使用阿里公共 DNS 服务器,不用本机网卡默认 DNS

解读解释:
服务器: 223.5.5.5
Address: 223.5.5.5

非权威应答:
baidu.com text = "v=spf1 include:spf.baidu.com -all"

上面的范例用交互模式等价于
nslookup

server 223.5.5.5
set type=TXT
set timeout=3
set vc
baidu.com
exit

nslookup交互式模式

这些不能放在 nslookup [-opt ...] 里面当命令行参数!只能在>里面用:

  • set retry=N 重试次数(没有 -retry 命令行参数!)
  • set root 设置根服务器
  • set nodebug / set nod2 关闭调试
  • set all 查看当前全部配置

直接在 CMD / PowerShell 输入 nslookup,后面不加任何域名、IP,回车 进入交互式模式

交互式核心命令分为两大类

  1. set 子命令:用来修改本次会话的查询配置(等价于非交互的 -opt)

  2. 操作命令:切换 DNS 服务器、查看配置、退出等

  3. 直接输入域名 / IP:发起 DNS 查询
    注意:交互里面不能写 -type、-timeout,要用 set xxx

  4. set 系列(配置参数,最重要)

交互命令 含义 等价非交互选项
set type=A 设置查询记录类型 A(IPv4) -type=A
set type=MX MX 邮件记录 -type=MX
set type=TXT TXT 文本记录 (SPF/DKIM) -type=TXT
set type=NS 域名权威 NS 服务器 -type=NS
set type=AAAA IPv6 记录 -type=AAAA
set type=CNAME 别名记录 -type=CNAME
set timeout=3 超时 3 秒 -timeout=3
set vc 开启 TCP 查询(vc=virtual circuit) -vc
set novc 关闭 TCP,切回 UDP(默认) —
set recurse 开启递归查询(默认) -recurse
set norecurse 关闭递归查询 -norecurse
set port=53 修改 DNS 端口 -port
set debug 简易调试,查看查询过程 -debug
set d2 完整 DNS 报文调试(输出巨多) -d2
set nodebug 关闭 debug —
set nod2 关闭 d2 —
set retry=3 查询重试 3 次 ❗非交互没有这个参数!只有交互才有
set all 查看当前会话全部配置(非常实用) —
set nosrch 关闭域名后缀自动补全 -nosrch

server <DNSIP/域名> #切换当前会话使用的 DNS 服务器,后续所有查询都用这台 DNS 举例 > server 223.5.5.5 用223.5.5.5DNS服务器

lserver #本地服务器,用本机默认 DNS 去解析你写的 server 域名,再切换。
区别:server 会用当前已经选定的 DNS解析新服务器域名;lserver 永远用本机初始 DNS 解析。内网排错偶尔用。

  1. exit

退出 nslookup 交互模式,回到 CMD/PowerShell。

  1. help 或者 ?

在>提示符查看帮助。

举例
nslookup

server 223.5.5.5
set type=MX
baidu.com
结果
服务器: 223.5.5.5
Address: 223.5.5.5

非权威应答:
baidu.com MX preference = 20, mail exchanger = mx.baidu.com
baidu.com MX preference = 10, mail exchanger = mx.baidu.com

  1. server 223.5.5.5:本次会话全部查询交给阿里 DNS
  2. set type=MX:后续所有查询默认查 MX 邮件记录,不用每次重复写
  3. baidu.com:发起查询
  4. preference=数字:优先级,数字越小邮件服务器优先使用

只要不退出,继续输入别的域名,仍然查 MX 记录,直到你set type=A改回去。

举例2set all 查看当前全部配置

set all
解释:会打印当前所有参数:超时、重试次数、是否递归、是否开启 vc、查询类型、搜索域等。

排查的时候,先set all,确认当前 nslookup 的参数是不是你预期的

Resolve-DnsName 完整学习(PowerShell 原生 Cmdlet)
Resolve-DnsName 是 PowerShell 自带的 DNS 查询命令,输出是对象,不是纯文本;参数是命名参数,参数顺序不受限制,脚本友好。

Resolve-DnsName [-Name] [-Type ] [-Server <string[]>]
[[-Timeout] ] [-TcpOnly] [-DnsOnly] [-Port ] ...

  • [-Name]:要查询的域名 / IP,位置参数,可以省略 - Name 直接写域名
  • 所有参数都是命名参数,顺序随便放,这是和 nslookup 最大区别!
    nslookup:选项必须放最前面,host/server 是位置参数
    Resolve-DnsName:参数随便前后摆,靠-参数名识别
    Resolve-DnsName 支持多个 DNS 服务器,-Server 223.5.5.5,8.8.8.8,依次尝试。nslookup 一次只能指定一台 DNS。
Resolve-DnsName 参数 作用 nslookup 对应
-Name 目标域名 / IP(位置参数) 默认命令后第一个参数就是给它的可以省略直接写被查询域名/IP 但是如果“-Name 域名/IP” 就可以随便放在命令后哪个位置 host
-Type DNS 记录类型:A/AAAA/MX/TXT/NS/SOA/CNAME/PTR -type=
-Server 指定 DNS 服务器,可以写多个,逗号分隔 末尾位置参数 server
-Timeout 超时时间(秒) -timeout
-TcpOnly 强制 TCP53 查询 -vc
-Port 指定 DNS 端口 -port
-DnsOnly 仅 DNS 解析,不使用 NetBIOS 等其他名称解析 -norecurse 不是完全等价
-NoRecursion 关闭递归查询 -norecurse
-Debug 开启调试输出 -debug

范例: 基础 A 记录查询,使用本机默认 DNS
Resolve-DnsName baidu.com -Type A #1. baidu.com:-Name,查询目标域名(位置参数,省略 - Name)-Type A:查询 A 记录(IPv4)
输出:
Name Type TTL Section IPAddress


baidu.com A 120 Answer 180.101.49.11
baidu.com A 120 Answer 180.101.49.12
解读
解读:

  • Name:记录名称
  • Type:记录类型 A
  • TTL:120 秒,DNS 缓存存活时间
  • Section=Answer:应答段,就是查询结果
  • IPAddress:域名对应的 IPv4 地址

优势:返回对象,直接管道提取 IP

如果只要去取IP
只取出IP地址
(Resolve-DnsName baidu.com -Type A).IPAddress

范例2 指定 DNS 服务器,查询 MX 邮件记录
Resolve-DnsName baidu.com -Type MX -Server 223.5.5.5

  1. baidu.com:查询域名
  2. -Type MX:查询 MX 邮件交换记录
  3. -Server 223.5.5.5:指定使用阿里 DNS 服务器

输出样例:
Name Type TTL Section NameExchange Preference


baidu.com MX 3600 Answer mx.baidu.com 10
baidu.com MX 3600 Answer mx.baidu.com 20

  • NameExchange:邮件服务器域名
  • Preference:优先级,数字越小优先投递

范例3 多参数组合:TXT 记录 + 超时 3 秒 + 强制 TCP + 指定 DNS
Resolve-DnsName baidu.com -Type TXT -Timeout 3 -TcpOnly -Server 223.5.5.5

  1. baidu.com:目标域名
  2. -Type TXT:查询 TXT 记录(SPF/DKIM)
  3. -Timeout 3:超时 3 秒
  4. -TcpOnly:强制 TCP 53 查询(等价 nslookup -vc)
  5. -Server 223.5.5.5 使用阿里 DNS
    输出样例
    Name Type TTL Section Strings

baidu.com TXT 3600 Answer {v=spf1 include:spf.baidu.com -all}
解读:
Strings 属性存放 TXT 的文本内容;多条 TXT 记录会放在数组里。

范例 4:关闭递归查询,直接查询权威 NS 服务器,AAAA IPv6 记录
Resolve-DnsName baidu.com -Type AAAA -NoRecursion -Server ns.baidu.com
参数拆解

  1. baidu.com:域名
  2. -Type AAAA:IPv6 记录
  3. -NoRecursion:关闭递归查询,等价 nslookup -norecurse
  4. -Server ns.baidu.com 指定 baidu 权威 DNS 服务器

此时拿到权威应答,和 nslookup -norecurse 效果一致。

示例 5:反向解析 PTR(IP 反查域名)
Resolve-DnsName 180.101.49.11 -Type PTR -Server 223.5.5.5 -Timeout 2

参数拆解

  1. 180.101.49.11:要反向查询的 IP
  2. -Type PTR:PTR 反向记录
  3. -Server 223.5.5.5:阿里 DNS
  4. -Timeout 2:超时 2 秒

很多公网 IP 没有 PTR 记录,会抛出 DNS 查询失败异常,脚本要用 try/catch 捕获。

示例 6:多个 DNS 服务器备选,查询 NS 记录
Resolve-DnsName baidu.com -Type NS -Server 223.5.5.5,8.8.8.8
参数拆解

  1. -Type NS 查询域名权威 NS 服务器
  2. -Server 223.5.5.5,8.8.8.8 给两个 DNS,第一个不通自动尝试第二个

nslookup 一次只能指定一台 DNS,这个是 Resolve-DnsName 的优势!

示例 7:管道筛选输出(最核心优势,nslookup 很难做到)
Resolve-DnsName baidu.com -Type A -Server 223.5.5.5 | Select-Object Name,IPAddress,TTL

Select-Object:挑选想要的属性,只输出 Name、IPAddress、TTL
输出:

Name IPAddress TTL


baidu.com 180.101.49.11 120
baidu.com 180.101.49.12 120

 posted on 2026-09-23 10:11  路边一菜贩  阅读(29)  评论(0)    收藏  举报