DNSLint 实用工具介绍

DNSLint 有三种功能用于校验域名系统 (DNS) 记录并生成一个 HTML 报告。这三种功能是:∙∙∙ dnslint/d:此功能诊断可能的“不良委派”问题和其他相关的 DNS 问题。 dnsl

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开关用于请求域名测试。在解决不良委派问题时,可以使用此开关。

∙ 您必须指定一个要测试的域名。 您不能将/ad开关与/d开关一起使用。

您可以使用/ad开关来请求 Active Directory 测试。

∙ /ad开关可解析用于 AD 林复制的 DNS 记录。 默认情况下将使用本地系统的 LDAP 服务。 您可以指定一个远程 LDAP 服务器 IP 地址(可选)。 仅接受有效的 IP 地址。不接受名称。

一般来说,这是一个 Active Directory 域控制器。

∙ 您必须将/ad开关与/s选项一起使用,其中的/s选项指定一个 DNS 服务器的 IP 地

址,此 DNS 服务器对 AD 目录林根中的 _msdcs 区域具有管理权。

∙ 您不能将/d或/c与/ad开关一起使用。

/ql开关用于请求从一个列表中进行 DNS 查询测试。

∙ /ql开关用于发送在一个文本输入文件中指定的 DNS 查询。 您必须指定输入文件的路径和名称。 /ql开关支持 A ﹑PTR ﹑CNAME ﹑SRV 和 MX 这几种记录查询。 您可以通过运行以下命令来创建一个示例输入文件:

dnslint /ql autocreate

∙ 您不能将/d﹑/ad或/c与/ql开关一起使用。

,

注意:

回到顶端 您不能将/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 来获得 DNS 服务器 IP

地址。

∙ /s开关通过使用提供的 IP 地址来检查 DNS 记录。 仅接受有效的 IP 地址。不接受名称。 使用此选项可检查不受 InterNIC 支持的域名。 当您使用/ad时,必须使用/s来指定一个 DNS 服务器,此服务器对 AD 目录林的根

域中的 _msdcs 子域具有管理权。

∙ 当您使用/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 服务器的名称相同。因为此报告是 HTML 格式,所以“.htm”文件扩展名会自动添加到报告名称上。

默认情况下,DNSLint 在此报告文件生成后会尝试通过使用与此报告文件的 .htm 文件相关联的程序自动打开它。一般情况下,Microsoft Internet Explorer 是与 .htm 扩展名相关联的。无法通过使用 DNSLint 将此报告的格式更改为非 HTML 格式。

要定义此报告文件的写入位置,请指定此报告文件的完整路径和名称。DNSLint 对本地驱动器和通用命名约定 (UNC) 路径都支持。例如,命令dnslint /d msn.com /r c:reportsreskit将会在 C:Reports 文件夹下创建一个名为 Reskit.htm 的报告。命令dnslint /d

mydom.local /r server1reportsmydom将会在名为 server1 的远程系统上的 Reports 这一共享文件夹中创建一个报告。此报告的名称是 Mydom.htm 。

如果您指定/t(文本)开关,DNSLint 会生成一个文本报告和一个 HTML 报告。此文本报告与 .htm 报告同名,只不过文件扩展名是 .txt。此文件与 .htm 文件是在同一文件夹下创建的。例如,命令dnslint /d msn.com /r c:reportsreskit /t在 C:Reports 文件夹下创建两个报告。一个报告名为 Reskit.htm ,另外一个名为 Reskit.txt 。

默认情况下,如果 DNSLint 在目标文件夹下检测到一个已经存在的报告文件,此文件与将要生成的报告文件同名,DNSLint 就会提示您覆盖此文件。如果使用/y选项,DNSLint 将在不提示您给出许可的情况下覆盖一个现有的报告文件。当您使用此选项时,.htm 文件和可选的 .txt 文件都会被覆盖。

dnslint /y /d msn.com /r c:reportsreskit /t这一命令将在 C:Reports 文件夹下创建两个报告。一个报告名为 Reskit.htm ,另一个名为 Reskit.txt 。此命令会在不提示您的情况下覆盖现有的报告文件。

/no_open开关可防止 DNSLint 在报告生成后自动打开报告。如果您在脚本中使用 DNSLint ,但不想立即查看此报告,或不想通过 DNSLint 从其运行的系统查看此报告,就可以使用此选项。例如,dnslint /y /d msn.com /no_open这一命令将生成一个名为 Dnslint.htm 的报告,此报告会在不提示用户的情况下覆盖一个现有的同名报告。当报告完成时,DNSLint 不会自动打开它。

在使用/d的情况下,使用/test_tcp(测试 TCP 端口 53)选项可请求测试 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是一个 DNS 服务器的 IP 地址,此服务器对 Active Directory 域的根下的 _msdcs 区域具有管理权。

例如:

dnslint /d microsoft.com /v /test_tcp

/c(连接测试)开关请求 DNSLint 在它所发现的所有电子邮件服务器上测试已知的电子邮件端口,同时检查 DNS 服务器上是否有指定的域名。支持的协议有简单邮件传输协议 (SMTP)﹑邮局协议(POP 版本 3)和 Internet 邮件访问协议(IMAP 版本 4)。默认情况下,在指定/c开关时,DNSLint 尝试在它所发现的每一个电子邮件服务器上连接到全部三个端口。这三个端口是:用于 SMTP 的 TCP 端口 25﹑用于 POP 的 TCP 端口 110 和用于 IMAP 的 TCP 端口 143。

DNSLint 会报告每一个端口所处的状态:“侦听”﹑“没有侦听”或“无响应”。当 DNSLint 发现有一个端口在侦听时,如果返回了任何响应,它也会从此端口返回响应。例如,如果一个 SMTP 端口在侦听,它一般会返回一个符合 SMTP 协议规范的响应。例如:

220 mailsrv.reskit.com Microsoft ESMTP MAIL Service, Version:5.0.2195.3705 ready at Mon, 13 May 2002 17:08:36 -0700

当一个端口被报告为“没有侦听”时,这意味着被查询的电子邮件服务器已使用一个带有重置标志集的 TCP 数据包作出了响应。这说明没有任何服务或程序在侦听此端口。

当目标电子邮件服务器对连接尝试没有响应时,将报告“无响应”。假设目标服务器在正常运行,这说明在目标服务器上或者在运行着 DNSLint 的客户端与目标服务器之间的某个位置筛选了该端口。

dnslint /y /v /c /d msn.com这一命令将生成一个名为 Dnslint.htm 的文件,此文件将在不提示用户的情况下覆盖一个现有的同名报告。因为指定了/c选项,所以会在标准 DNSLint 报告的最后添加一个额外的部分:

Network Connectivity Tests

E-mail server:smtp-gw-4.msn.com

IP address: 207.46.181.13

SMTP response:

,

220 cpimssmtpa18.msn.com Microsoft ESMTP MAIL Service, Version:

5.0.2195.4905 ready at Tue, 14 May 2002 09:26:06 -0700

POP response:NO RESPONSE (possibly filtered)

IMAP response:NO RESPONSE (possibly filtered)

注意:

一个或多个 POP 服务器没有响应。

一个或多个 IMAP 服务器没有响应。

当目标电子邮件服务器对它的一个电子邮件端口上的一个连接尝试没有响应时,DNSLint 会尝试连接三次。对于 TCP 客户端来说,这是一种标准行为。因为 DNSLint 在等待三次不同的 TCP 连接尝试超时后才指示“无响应”,所以此过程会减慢报告完成的速度。为优化 DNSLint 操作,您可以指定您要检查哪个或哪些电子邮件端口,而不是每次都检查所有三个端口。

默认情况下,当指定/c选项时,三个 TCP 端口(25﹑110﹑143)将全部检查。但是,您也可以在/c选项后指定要检查哪一个端口。在/c选项后,可以紧接着指定一个逗号分隔的列表。您只能指定有效的端口:smtp ﹑pop ﹑imap 。您可以指定这三个端口的任意组合。例如,命令dnslint /d reskit.com /c smtp指定只检查 SMTP 端口(TCP 端口 25)。

命令dnslint /d reskit.com /c pop,smtp指定只检查 SMTP 端口(TCP 端口 25)和 POP 端口(TCP 端口 110)。

命令dnslint /d reskit.com /c imap,pop指定只检查 IMAP 端口(TCP 端口 143)和 POP 端口(TCP 端口 110)。

您可以将/d和/ad功能与/s(服务器)开关一起使用。/s开关有多种用途,但是它只接受一种类型的数据,即一个有效的 DNS 服务器 IP 地址(有一个例外)。

当您指定/d时,/s选项将跳过 DNSLint 默认情况下执行的 InterNIC Whois 查找。这样,DNSLint 就可以对专用网络和对 Internet 上深度超过第二级域的域名运行测试。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.reskit.com ,承载此域的 DNS 服务器也可能对 _msdcs.myad.reskit.com 区域(Active directory 复制中使用的 DNS 记录就是在此区域注册的)具有管理权。或者,也可以将

_msdcs.myad.reskit.com 区域委派到一个不同的 DNS 服务器。无论 DNS 基础结构是如何设计的,/s选项都是用于指定一个对 _msdcs.myad.reskit.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 服务器没有响应,就会使用列表中的下一个服务器。

标签: