如何使用 PortQry 排查 Active Directory 连接问题

本文介绍如何运行 PortQry 来测试任何 Windows 组件或任何版本的 Windows 上的网络连接。

原始 KB 数: 816103

简介

PortQry 是一个命令行实用工具,可用于排查 Windows 组件和功能使用的 TCP/IP 连接问题。 该实用工具报告远程计算机上的转换控制协议(TCP)和用户数据报协议(UDP)端口的端口状态。 可以运行 PortQry 来测试任何 Windows 组件或任何版本的 Windows 方案的网络连接。

本文介绍如何使用 portqry 验证 Active Directory 和 Active Directory 相关组件的基本 TCP/IP 连接,包括:

  • Active Directory 域服务 (ADDS)
  • 轻型目录访问协议的 Active Directory (LDAP)
  • Remote procedure call (RPC)(远程过程调用 (RPC))
  • 域名服务 (DNS)
  • 其他与 ADDS 相关的组件
  • ADDS 依赖的其他组件

在跨中间设备(包括防火墙)部署域控制器时,通过所需端口和协议验证网络连接尤其有用。

安装 PortQry

下载Portqry.exe

可从Microsoft下载中心下载 PortQry .exe。 若要下载 PortQry .exe,请访问以下Microsoft网站:

下载 PortQry 命令行端口扫描程序版本 2.0

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

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

Microsoft 已对该文件进行病毒扫描。 Microsoft 使用的是文件发布时可以获得的最新病毒检测软件。 该文件存储在安全增强的服务器上,有助于防止对文件进行任何未经授权的更改。

PortQry 工具的图形版本(称为 PortQueryUI)包含其他功能,这些功能可以使使用 PortQry 更易于使用。 若要下载 PortQueryUI 工具,请访问以下Microsoft网站:

下载 PortQryUI - PortQry 命令行端口扫描程序的用户界面

详细信息

PortQry 以以下三种方式之一报告端口的状态:

  • 侦听:进程正在侦听目标系统上的目标端口。 PortQry 从端口收到响应。
  • 未侦听:没有进程正在侦听目标系统上的目标端口。 PortQry 从目标 UDP 端口收到 Internet 控制消息协议(ICMP)“目标无法访问 - 端口无法访问”消息。 或者,如果目标端口是 TCP 端口,则 Portqry 收到 TCP 确认数据包,并设置了“重置”标志。
  • 已筛选:正在筛选目标系统上的目标端口。 PortQry 未收到来自目标端口的响应。 进程可能正在侦听端口,也可能不侦听。 默认情况下,TCP 端口被查询三次,UDP 端口在报告目标端口之前查询一次。

使用 PortQry,还可以查询 LDAP 服务。 它使用 UDP 或 TCP 发送 LDAP 查询,并解释 LDAP 服务器的查询响应。 LDAP 服务器的响应经过分析、格式化并返回给用户。

Active Directory 提供的 RPC 接口可以使用动态服务器端口(大多数是可配置的)。客户端使用 RPC 终结点映射器查找特定 Active Directory 服务的 RPC 接口的服务器端口。

RPC 终结点映射器数据库侦听端口 135。 这意味着,大多数部署的 TCP 端口 135 是超出基本 LDAP 查询的必需端口。 对于属于域的所有客户端,也需要它。

有关 PortQry 的详细信息,请参阅:

310099命令行实用工具Portqry.exe说明

可以在以下知识库文章中找到 Windows 使用的端口和协议列表,包括 Active Directory、DFSS、DFSR、证书服务和其他所有服务:

832017 Windows 的服务概述和网络端口要求

注意

使用临时端口的 Active Directory 和其他服务必须具有从端口 135 到 Windows 文章的服务概述和网络端口要求中列出的所有连接。

还可以在以下文章中找到特定于 AD 的端口和协议:

179442 如何为域和信任配置防火墙

PortQry 知道如何将查询发送到 RPC 终结点映射器(使用 UDP 和 TCP)并解释响应。 此查询显示向 RPC 终结点映射器注册的所有终结点。 终结点映射器的响应经过分析、格式化并返回给用户。

如果 PortQry 不可用,可以使用 LDP.EXE通过激活“无连接”复选框连接到端口 389 上的域控制器。

PortQry 的另一种替代方法是 NLTEST,但它不适用于任意服务器。 服务器必须是运行该工具的计算机所在的同一域中的域控制器。 如果是这种情况,可以使用 Nltest /sc_reset<域名 \ <>计算机名称>强制安全通道进入特定的域控制器。 有关详细信息,请参阅 网络连接

使用 portqry

示例 1:使用 Portqry 使用 UDP 端口 389 通过特定端口和协议测试连接性,例如

此示例演示如何使用 PortQry 来确定 LDAP 服务是否响应。 通过检查响应,可以确定哪个 LDAP 服务正在侦听端口,以及有关其配置的一些详细信息。 此信息可用于排查各种问题。

默认情况下,LDAP 配置为侦听端口 389。 示例调用指定要使用 UDP 协议进行查询的服务器:

PortQry -n <fqdn> -p udp -e 389

PortQry 使用 Windows Server 2003 及更高版本计算机中包含的 %SystemRoot%\System32\Drivers\...\Services 文件自动解析 UDP 端口 389。 在下面的示例输出中,端口解析为活动 LDAP 服务,PortQry 报告端口正在侦听或筛选。

然后,PortQry 会向其发送一个接收响应的格式化 LDAP 查询。 它将向用户返回整个响应,并报告端口正在侦听。 如果 PortQry 未收到对查询的响应,则会报告端口已筛选。

示例输出

C:\>portqry -n <fqdn> -e 389 -p udp

查询以下名称的目标系统:

<fqdn>

正在尝试将名称解析为 IP 地址......

解析为 169.254.0.14 的名称

UDP 端口 389 (未知服务):侦听或筛选

将 LDAP 查询发送到 UDP 端口 389...

LDAP 查询响应:

currentdate: <DateTime> (未调整的 GMT)
subschemaSubentry:
CN=Aggregate,CN=Schema,CN=Configuration,DC=reskit,DC=com
dsServiceName:CN=NTDS
设置,CN=mydc,CN=Servers,CN=eu,CN=Sites,CN
=Configuration,DC=reskit,DC=com
namingContexts:DC=reskit,DC=com
defaultNamingContext: DC=reskit,DC=com
schemaNamingContext:
CN=Schema,CN=Configuration,DC=reskit,DC=com
configurationNamingContext:
CN=Configuration,DC=reskit,DC=com
rootDomainNamingContext: DC=reskit,DC=com
supportedControl:1.2.840.113556.1.4.319
supportedLDAPVersion: 3
supportedLDAPPolicies:MaxPoolThreads
highestCommittedUSN:815431405
supportedSASLMechanisms:GSSAPI
dnsHostName: <HostName>
ldapServiceName: <ServiceName>
serverName:
CN=MYDC,CN=Servers,CN=EU,CN=Sites,CN=Configuration,DC=reskit,DC=com
supportedCapabilities:1.2.840.113556.1.4.800
isSynchronized: TRUE
isGlobalCatalogReady: TRUE

======== LDAP 查询响应结束========
UDP 端口 389 正在侦听

注意

基于 UDP 的 LDAP 测试可能不适用于运行 Windows Server 2008 及更高版本的域控制器。 原因之一是已在域控制器上禁用 IPv6。 若要启用 IPv6,请将以下文章中讨论的值设置为默认值 0
929852在 Windows 中为高级用户配置 IPv6 的指南

示例 2:标识已注册到 RPC 终结点映射器的服务

此示例演示如何使用 PortQry 来确定向目标服务器的 RPC 终结点映射器数据库注册哪些服务或应用程序。 输出包括每个应用程序的通用唯一标识符(UUID)、批注名称(如果存在)、应用程序使用的协议、应用程序绑定到的网络地址以及应用程序的终结点(端口号(方括号中的命名管道)。 此信息可用于排查各种问题。

默认情况下,RPC 终结点映射器数据库配置为侦听端口 135。 示例调用指定要使用 UDP 协议进行查询的服务器:

portqry -n <fqdn> -p udp -e 135

示例输出

查询以下名称的目标系统:

<fqdn>

正在尝试将名称解析为 IP 地址......

解析为 169.254.0.18 的名称

UDP 端口 135 (epmap 服务):侦听或筛选
正在查询终结点映射器数据库......
服务器的响应:

UUID:ecec0d70-a603-11d0-96b1-00a0c91ece30 NTDS 备份接口
ncacn_np:\\\\MYDC[\PIPE\lsass]

UUID:16e0cf3a-a604-11d0-96b1-00a0c91ece30 NTDS 还原接口
ncacn_np:\\\\MYDC[\PIPE\lsass]

UUID:e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS 接口
ncacn_ip_tcp:169.254.0.18[1027]

UUID:f5cc59b4-4264-101a-8c59-08002b2f8426 NtFrs 服务
ncacn_ip_tcp:169.254.0.18[1130]

UUID:d049b186-814f-11d1-9a3c-00c04fc9b232 NtFrs API
ncacn_ip_tcp:169.254.0.18[1130]

UUID:d049b186-814f-11d1-9a3c-00c04fc9b232 NtFrs API
ncacn_np:\\\\MYDC[\pipe\00000580.000]

找到的终结点总数:6

== RPC 终结点映射器查询响应 == 结束

UDP 端口 135 正在侦听

PortQry 可以发送格式正确的 DNS 查询(使用 UDP 或 TCP)。 该实用工具为“portqry.microsoft.com.”发送 DNS 查询。然后,PortQry 等待来自目标 DNS 服务器的响应。 对查询的 DNS 响应是负的还是正的,因为任何响应都指示端口正在侦听。