DNSLint 实用工具的说明

本文介绍 DNSLint 实用工具及其语法。

适用于: Windows Server 2012 R2
原始 KB 编号: 321045

摘要

DNSLint 是一个 Microsoft Windows 实用工具,可帮助你诊断常见的域名系统 (DNS) 名称解析问题。

有关如何下载Microsoft 支持部门文件的详细信息,请参阅以下文章:

119591如何从联机服务获取Microsoft 支持部门文件

Microsoft 扫描了此文件中的病毒。 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]  

/d在运行 DNSLint 时指定 、 /ad/ql 。 其他开关是可选的。

使用 /d 开关请求域名测试。 排查跛脚委派问题时,此开关非常有用。

  • 指定要测试的域名。
  • 不能将 /d 开关与 开关一起使用 /ad

使用 /ad 开关请求 Active Directory 测试。

  • /ad 开关解析用于 AD 林复制的 DNS 记录。

  • 默认情况下,使用本地系统的 LDAP 服务。

  • 可以指定远程 LDAP 服务器 IP 地址 (可选) 。

  • 仅接受有效的 IP 地址。 不接受名称。
    通常,它是一个 Active Directory 域控制器。

  • /ad 开关与 选项一起使用 /s ,其中 /s 指定 DNS 服务器的 IP 地址,该服务器对 AD 林根中的_msdcs区域具有权威性。

  • 不能将 /ad 开关与 或 /c一起使用/d

使用 /ql 开关从列表中请求 DNS 查询测试。

  • 开关 /ql 发送文本输入文件中指定的 DNS 查询

  • 指定输入文件的路径和名称。

  • 开关 /ql 支持 A、PTR、CNAME、SRV 和 MX 记录查询。

  • 通过运行以下命令创建示例输入文件:

    dnslint /ql autocreate  
    
  • 不能将 /ql 开关与 、 /ad/c一起使用/d

注意

  • 不能 /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,必须使用以下三个参数之一:

  1. 用于 /d 域名测试
  2. 用于 /ad Active Directory 复制测试。
  3. 用于 /ql 查询列表中指定的测试。

/d 使用 (域名测试) 开关来测试特定的 DNS 域名。 使用此开关来帮助诊断“跛脚委派”问题和其他相关的 DNS 问题。 测试的域名可以是:

  • 已注册在 Internet 上使用的名称。
  • 在专用命名空间中使用的名称。

在专用网络上测试域名或在 Internet 上注册的深度超过两个级别的域名时,必须使用 /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 文件关联的任何程序在生成报表文件后自动打开报告文件。 通常,Microsoft 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 (文本) 开关,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 但是,不能将 选项与 或/s/adlocalhost 组合一起使用/test_tcp/ql/ql使用 函数,可以直接从输入文件测试 TCP 端口 53。 函数 /ad /s localhost 测试本地配置的 DNS 服务器是否可以解析用于 Active Directory 林复制的 DNS 记录。 可以改为使用 /ad/sip_addr 来测试 TCP 端口 53 连接,其中 ip_addr 是对 Active Directory 域根目录中的 _msdcs 区域具有权威的 DNS 服务器的 IP 地址。

例如:dnslint /d microsoft.com /v /test_tcp

(/c 连接测试) 切换请求,DNSLint 在检查 DNS 服务器是否指定域名时,在找到的所有电子邮件服务器上测试已知电子邮件端口。 支持 SMTP、Post Office 协议 (POP 版本 3) 和 Internet 邮件访问协议 (IMAP 版本 4) 。 默认情况下,指定交换机后 /c ,DNSLint 会尝试连接到它找到的每个电子邮件服务器上的所有三个端口:

  • SMTP 的 TCP 端口 25
  • POP 的 TCP 端口 110
  • 适用于 IMAP 的 TCP 端口 143

DNSLint 报告每个端口处于“正在侦听”、“未侦听”或“无响应”的状态。如果 DNSLint 发现某个端口正在侦听,它还会返回来自该端口的响应。 例如,如果 SMTP 端口正在侦听,它通常会返回与 SMTP 协议规范一致的响应,如以下示例所示:

220 mailsrv.contoso.com Microsoft ESMTP MAIL 服务,版本:5.0.2195.3705 就绪,周一,2002 年 5 月 13 日 17:08:36 -0700

当端口报告为“未侦听”时,它表示正在查询的电子邮件服务器已响应并设置了重置标志的 TCP 数据包。 它还指示端口上没有侦听服务或程序。

当目标电子邮件服务器未响应连接尝试时,将报告“无响应”。 如果目标服务器正常运行且正在运行,则指示正在筛选端口:

  • 目标服务器。
  • 运行 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 MAIL 服务,版本:
5.0.2195.4905 准备于 2002 年 5 月 14 日星期二 09:26:06 -0700

POP 响应:无响应 (可能筛选)

IMAP 响应:无响应 (可能筛选)

注意

一个或多个 POP 服务器未响应。
一个或多个 IMAP 服务器未响应。

当目标电子邮件服务器不响应其某个电子邮件端口上的连接尝试时,DNSLint 会重试连接三次。 这是 TCP 客户端的标准行为。 在 DNSLint 指示存在“无响应”之前,它会等待三个单独的 TCP 连接尝试超时。此过程可能会减慢报表的完成速度。 若要优化 DNSLint 操作,可以指定要检查的一个或多个电子邮件端口,而不是始终检查所有三个端口。

默认情况下,指定选项后 /c ,将选中所有三个 TCP 端口 (25、110、143) 。 但可以指定要在 选项后/c检查哪些端口。 在 选项后面 /c 立即指定逗号分隔的列表。 仅指定有效端口: smtppopimap。 这三个端口的任意组合都有效。 例如, 命令 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 指定仅应检查 (TCP 端口 143) 的 IMAP 端口和 (TCP 端口 110) 的 POP 端口。

可以将 /s (服务器) 开关与 /d/ad 函数配合使用。 该 /s 开关有多种用途,但它只采用一种类型的数据,即 DNS 服务器的有效 IP 地址 (,) 有一个例外。

指定 /d时, /s 选项将绕过 DNSLint 默认进行的 InterNIC Whois 查找。 因此,DNSLint 可以在专用网络和比 Internet 上的二级域更深的域名上运行测试。 DNSLint 还可以测试 InterNIC 不支持的域名。 撰写本文时,InterNIC 支持Whois对以下域进行查找:.biz、、.com、、.edu.info.coop.museum.int.net和 。.org

使用 /ad时, /s 开关用于指定 DNS 服务器的 IP 地址,该 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 服务器没有响应,则使用列表中的下一个服务器。