本文介绍了 DNSLint 工具及其语法。
适用于: Windows Server 2012 R2
原始 KB 数: 321045
摘要
DNSLint 是一个 Microsoft Windows 实用工具,帮助您诊断常见的域名系统 (DNS) 名称解析问题。
有关如何下载 Microsoft 支持文件的更多信息,请参阅以下文章:
119591 如何通过在线服务获取微软支持文件
Microsoft 已扫描此文件以查找病毒。 微软在文件发布当天使用了当时最先进的病毒检测软件。 文件存储在经过安全增强的服务器上,以防止任何未经授权的更改。
DNSLint 功能
DNSLint 有三个功能,可以验证 DNS 记录并生成 HTML 报告。 这三个功能是:
-
dnslint /d
:诊断“无效委派”和其他相关 DNS 问题的潜在原因。 -
dnslint /ql
:在多个DNS服务器上验证用户定义的一组DNS记录。 -
dnslint /ad
:验证专门用于Active Directory复制的DNS记录。
DNSLint是一种命令行工具。 语法为:
dnslint /d domain_name | /ad [LDAP_IP_address] | /ql input_file [/c [smtp,pop,imap]] [/no_open] [/r report_name] [/t] [/test_tcp] [/s DNS_IP_address] [/v] [/y]
运行 DNSLint 时,请指定 /d
、/ad
或 /ql
。 其他开关是可选的。
您使用/d
开关来请求域名测试。 排查无效委派问题时,此开关非常有用。
- 请指定一个要测试的域名。
- 您不能同时使用
/d
开关和/ad
开关。
您使用 /ad
开关来请求 Active Directory 测试。
/ad
开关解析用于 AD 林复制的 DNS 记录。默认情况下,使用本地系统的 LDAP 服务。
可以指定远程 LDAP 服务器 IP 地址(可选)。
仅接受有效的 IP 地址。 不接受姓名。
通常,它是 Active Directory 域控制器。使用
/ad
参数与/s
选项,其中/s
指定了负责管理 Active Directory 林根内 _msdcs 区域的 DNS 服务器的 IP 地址。您不能将
/ad
开关与/d
或/c
一起使用。
您使用/ql
开关从列表中请求DNS查询测试。
该
/ql
开关发送文本输入文件中指定的 DNS 查询指定输入文件的路径和名称。
/ql
开关支持A、PTR、CNAME、SRV和MX记录查询。您可以通过运行以下命令来创建一个示例输入文件:
dnslint /ql autocreate
不能将
/ql
开关与/d
、/ad
或/c
一起使用。
注释
- 你不能同时使用
/d
、/ad
和/ql
。 - 你不能将
/c
与/ad
或/ql
一起使用。 - 当您使用
/ad
时,您还必须指定/s
。
可选开关
使用 /c
请求对电子邮件服务器进行连接测试。
-
/c
开关测试在电子邮件服务器上找到的简单邮件传输协议 (SMTP)、POP 和 IMAP 端口。 - 默认情况下,将测试所有三个端口 (即 SMTP、POP 和 IMAP 端口)。 您可以指定一个或多个组合。 为此,请使用逗号分隔的列表:
/c pop,imap,smtp
。
为了防止报告自动打开,请使用/no_open
。
/no_open
开关在脚本中很有用。
使用 /r
开关指定创建的报告文件的名称。
- 报告名称将自动添加 .htm 文件扩展名。
- 该报告是以HTML格式创建的。 默认名称为 Dnslint.htm
- 默认位置为当前目录。
使用 /s
切换来绕过 InterNIC whois
查询。
- 您可以指定 DNS 服务器的 IP 地址,而不是向 InterNIC 查询。
-
/s
开关开始通过使用提供的 IP 地址检查 DNS 记录。 - 仅接受有效的 IP 地址。 不接受姓名。
- 可以使用此选项来检查不受InterNIC支持的域名。
- 使用
/ad
时,必须使用/s
来指定一个负责AD林根域中_msdcs子域的权威DNS服务器。 - 使用
/ad
时,您可以运行/s
localhost,以确定本地系统是否能够解析AD测试中找到的记录。
使用/t
请求输出到文本文件。
- 文本文件与 .htm 报告同名,但其文件扩展名为 .txt。
- 在与 .htm 报告文件相同的目录中创建的文本文件。
使用/test_tcp
请求测试TCP端口53。
- 默认情况下,仅测试UDP端口53。
-
/test_tcp
选项检查 TCP 端口 53 是否响应查询。 -
/test_tcp
选项不能与/ql
一起使用。
使用 /v
请求详细输出到屏幕。
使用/y
覆盖现有的报告文件而不提示。
/y
开关在脚本中很有用。
必需参数
要运行 DNSLint,您必须使用以下三个参数之一:
- 使用
/d
进行域名测试 - 请使用
/ad
进行 Active Directory 复制测试。 - 使用
/ql
来进行查询列表中指定的测试。
使用/d
(域名测试)开关来测试特定的DNS域名。 使用此开关来帮助诊断“空委派”问题以及其他相关的DNS问题。 您可以测试的域名可以是:
- 已注册用于互联网的名称。
- 专用命名空间中使用的名称。
当您在私有网络上测试域名或在互联网注册的超过两级的域名时,必须使用/s
选项。
使用 /ad
(Active Directory 测试)开关来测试负责 Active Directory 林复制的 DNS 记录。 在 /ad
切换后,指定用于此测试的 LDAP 服务器的 IP 地址。 通常,它是 Active Directory 域控制器。 如果DNSLint在域控制器上运行,则无需指定IP地址,因为此开关的默认值为127.0.0.1。
使用/ql
(查询列表测试)开关来测试在文本输入文件中指定的DNS记录。 请在开关后立即指定文本输入文件的完整路径和名称。 运行dnslint /ql autocreate
以生成一个名为 In-dnslint.txt 的示例文本输入文件。 该文件包含有关所需格式的说明。 您可以将此文件用作模板来创建其他输入文件。
更多可选开关
/v
(详细)开关开启“详细模式”。 打开此开关后,DNSLint 会输出它正在执行的数据收集步骤到屏幕上。 您可以将此输出发送到文件。 例如 dnslint /v /d msn.com
.
默认情况下,DNSLint 生成的报告名称是 Dnslint.htm。 使用 /r
(报告)开关,您可以指定 DNSLint 生成的报告文件的名称和位置。 您可以将报告文件命名为与被测试的域名或DNS服务器相同的名称。 报告名称后会自动附加“.htm”文件扩展名,因为报告是以HTML格式生成的。
默认情况下,DNSLint 会尝试在报告文件生成后,使用与报告文件的 .htm 文件关联的程序自动打开报告文件。 通常,微软 Internet Explorer 与 .htm 扩展名相关联。 无法使用 DNSLint 将报表格式更改为 HTML 以外的其他内容。
要定义写入报告文件的位置,请指定报告文件的完整路径和名称。 DNSLint支持本地驱动器和通用命名约定 (UNC) 路径。 例如,该命令 dnslint /d msn.com /r c:\reports\reskit
在 C:\Reports 文件夹中创建名为“Reskit.htm”的报表。 该命令 dnslint /d mydom.local /r \\\server1\reports\mydom
在报表共享中名为 server1 的远程系统上创建报表。 报告名称是 Mydom.htm。
如果您指定/t
(text)开关,DNSLint 将生成一个文本报告和一个 HTML 报告。 文本报告使用与.htm报告相同的名称,只是其文件名扩展名是.txt。 文件被创建在与 .htm 文件相同的文件夹中。 例如,命令dnslint /d msn.com /r c:\reports\reskit /t
会在C:\Reports文件夹中创建两个报告。 一个报告名为 Reskit.htm,另一个报告名为 Reskit.txt。
默认情况下,当 DNSLint 检测到目标文件夹中已经存在一个与它将要生成的报告文件同名的文件时,DNSLint 会提示您是否要覆盖该文件。 使用/y
选项时,DNSLint可以在不要求许可的情况下覆盖现有的报告文件。 当您使用此选项时,.htm 文件和可选的 .txt 文件都会被覆盖。
该命令dnslint /y /d msn.com /r c:\reports\reskit /t
在C:\Reports文件夹中创建两个报告。 一个报告名为 Reskit.htm,另一个报告名为 Reskit.txt。 现有报告文件在不提示的情况下被覆盖。
/no_open
开关阻止 DNSLint 在生成报告后自动打开报告。 使用 DNSLint 在脚本中,这个选项很有用,尤其是在您不想要时:
- 立即查看报告。
- 查看由运行 DNSLint 的系统生成的报告。
例如,命令dnslint /y /d msn.com /no_open
生成一个名为Dnslint.htm的报告,它会覆盖同名的现有报告,并且不会提示用户。 DNSLint在完成后不会自动打开报告。
使用/test_tcp
(测试 TCP 端口 53)选项在使用/d
时请求测试 TCP 端口 53。 Internet 上的许多 DNS 服务器目前不接受 TCP 端口 53 上的 DNS 查询,以避免该端口上可能出现的攻击。 默认情况下,在运行 DNSLint 时,仅测试 UDP 端口 53。 指定/test_tcp
选项将使DNSLint通过TCP发送单个DNS查询,并报告是否收到响应。
您可以将/test_tcp
选项与/d
和/ad
一起使用。 但是,您不能将/test_tcp
选项与/ql
或/ad
/s
的localhost组合一起使用。 使用/ql
功能,可以直接从输入文件测试TCP端口53。
/ad /s localhost
功能测试本地配置的 DNS 服务器是否能够解析用于 Active Directory 林复制的 DNS 记录。 可以通过使用/ad
/s
ip_addr来测试TCP端口53的连接,其中ip_addr是Active Directory域根目录中 _msdcs 区域的权威DNS服务器的IP地址。
例如:dnslint /d microsoft.com /v /test_tcp
/c
(连通性测试)开关请求 DNSLint 在检查指定域名的 DNS 服务器时,对它找到的所有电子邮件服务器上知名的电子邮件端口进行测试。 支持简单邮件传输协议 (SMTP)、邮局协议 (POP 第3版) 和互联网邮件访问协议 (IMAP 第4版)。 默认情况下,在指定/c
开关时,DNSLint 会尝试连接它找到的每个电子邮件服务器上的所有三个端口。
- 用于SMTP的TCP端口25
- TCP端口110用于POP
- IMAP 的 TCP 端口 143
DNSLint 报告每个端口的状态:“正在监听”、“未监听”或“无响应”。如果 DNSLint 发现某个端口正在监听,它还会返回该端口的响应。 例如,如果一个 SMTP 端口正在监听,它通常会返回一个与 SMTP 协议规范一致的响应,如以下示例所示:
220 mailsrv.contoso.com
Microsoft ESMTP邮件服务,版本:5.0.2195.3705 准备好,时间:2002年5月13日星期一 17:08:36 -0700
当某个端口被报告为“未监听”时,这意味着正在查询的电子邮件服务器已经用设置了重置标志的TCP数据包做出了响应。 这也表明在该端口没有服务或程序正在监听。
当目标电子邮件服务器未响应连接尝试时,会报告"No Response"。 如果目标服务器正在运行且操作正常,这表明端口正在被过滤:
- 目标服务器。
- 在运行 DNSLint 的客户端和目标服务器之间的某个地方。
命令dnslint /y /v /c /d msn.com
生成一个名为Dnslint.htm的报告,该报告会覆盖现有的同名报告,而不提示用户。 因为指定了 /c
选项,标准的 DNSLint 报告底部会附加一个额外的部分。
网络连接测试
电子邮件服务器: smtp-gw-4.msn.com
IP 地址:207.46.181.13
SMTP响应
220 cpimssmtpa18.msn.com
Microsoft ESMTP 邮件服务,版本:
2002年5月14日 周二 09:26:06 5.0.2195.4905 准备好 -0700
POP响应:无响应(可能已被过滤)
IMAP 响应:无响应(可能已筛选)
注释
一个或多个POP服务器没有响应。
一个或多个IMAP服务器没有响应。
当目标电子邮件服务器在其电子邮件端口之一上未响应连接尝试时,DNSLint 会重试连接三次。 这是 TCP 客户端的标准行为。 在 DNSLint 指示“无响应”之前,它会等待三次单独的 TCP 连接尝试超时。这个过程可能会减慢报告的完成速度。 若要优化 DNSLint 操作,可以指定要检查的电子邮件端口,而不是始终检查这三个端口。
默认情况下,当指定/c
选项时,将检查所有三个 TCP 端口(25、110、143)。 但是你可以在/c
选项之后指定要检查的端口。 请在/c
选项后紧跟指定一个逗号分隔的列表。 仅指定有效端口:smtp
、pop
、imap
。 这三个端口的任意组合都有效。 例如,命令dnslint /d contoso.com /c smtp
指定只检查SMTP端口(TCP端口25)。
此命令 dnslint /d contoso.com /c pop
,smtp 指定只检查 SMTP 端口(TCP 端口 25)和 POP 端口(TCP 端口 110)。
此命令 dnslint /d contoso.com /c imap
,pop 指定只检查 IMAP 端口(TCP 端口 143)和 POP 端口(TCP 端口 110)。
可以将 /s
开关(server)与 /d
和 /ad
函数一起使用。
/s
开关有多个用途,但它只接收一种类型的数据,即DNS服务器的有效IP地址(有一个例外)。
指定 /d
时,/s
选项将绕过 DNSLint 默认进行的 InterNIC Whois
查找。 因此,DNSLint 可以在私有网络上运行测试,还可以对比互联网上更深层的域名进行测试,而不仅限于二级域名。 DNSLint 还可以测试 InterNIC 不支持的域名。 在撰写本文时,InterNIC 支持对以下域名进行 Whois
查询:.biz
、.com
、.coop
、.edu
、.info
、.int
、.museum
、.net
和 .org
。
使用 /ad
时,/s
开关用于指定某个 DNS 服务器的 IP 地址,该服务器是负责管理用于 Active Directory 林复制的 DNS 记录的子域的权威服务器。 通常,它是 Active Directory 林根下的 _msdcs 子域。 例如,如果 Active Directory 林的根目录被称为myad.contoso.com
,那么承载此域的 DNS 服务器也可能是_msdcs.myad.contoso.com
区域的权威服务器。 在该区域中,会注册用于 Active Directory 复制的 DNS 记录。 或者,_msdcs.myad.contoso.com
区域可能会被委派给不同的 DNS 服务器。 无论 DNS 基础设施如何设计,/s
选项用于指定一个对 _msdcs.myad.contoso.com
区域具有权威性的 DNS 服务器。
该 /s
选项必须指定有效的 IP 地址。 此规则的唯一例外是以下组合:dnslint /ad /s localhost
"localhost" 不是一个有效的 IP 地址。 当您将此参数与/ad /s
组合指定时,DNSLint 会测试本地系统(即运行 DNSLint 的系统)解析用于 Active Directory 林复制的 DNS 记录的能力。 递归DNS查询被发送到本地系统配置的DNS服务器,以确认本地系统能够解析用于Active Directory林复制的DNS记录。 在特定域控制器上对 Active Directory 复制问题进行故障排除时,这可能会很有用。
通常,在这个过程中不会查询本地系统配置的所有 DNS 服务器。 已观察到默认的DNS客户端解析器行为。 如果本地系统的 DNS 服务器列表中最上面的 DNS 服务器没有响应,将使用列表中的下一个服务器。