如何使用 PortQry 解决 Active Directory 连接问题

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

原始产品版本:   Windows Server 2012 R2
原始 KB 编号:   816103

简介

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

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

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

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

安装 PortQry

下载Portqry.exe

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

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

若要详细了解如何下载 Microsoft 支持文件,请参阅以下 Microsoft 知识库:

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

Microsoft 扫描了此文件中的病毒。 Microsoft 使用在文件发布日期可用的最新病毒检测软件。 该文件存储在安全增强型服务器上,有助于防止对文件进行未经授权的更改。

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

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

更多信息

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

  • 侦听:进程正在目标系统上的目标端口上侦听。 PortQry 收到来自端口的响应。
  • 不侦听:没有进程正在目标系统上的目标端口上侦听。 PortQry 从目标 UDP 端口 (INTERNET 控制消息) "目标无法访问 - 端口无法访问"消息。 或者,如果目标端口是 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、DFS、DFSR、证书服务和所有其他服务:

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

备注

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

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

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

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

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

PortQry 的另一个替代项是 NLTEST,但它对任意服务器不起作用。 服务器必须是运行该工具的同一域中的域控制器。 如果是这种情况,可以使用 Nltest /sc_reset将安全通道 <domain name> \ <computer name> 强制进入特定的域控制器。 有关详细信息,请参阅 网络连接

使用 portqry

示例 1:以 UDP 端口 389 为例,使用 Portqry 测试特定端口和协议上的连接

此示例演示如何使用 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 <fqdn> -n -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
Settings,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:
在 Windows 中为高级用户配置 IPv6 的929852指南

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

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

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

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

示例输出

查询目标系统称为:

<fqdn>

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

名称解析为 169.254.0.18

UDP 端口 135 (epmap) :LISTENING 或 FILTERED
查询终结点映射器数据库...
服务器的响应:

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 Service
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 可以使用 UDP 或 TCP (发送格式正确的 DNS) 。 该实用工具发送"."的 DNS portqry.microsoft.com 查询。然后,PortQry 会等待来自目标 DNS 服务器的响应。 对查询的 DNS 响应是负数还是正数不相关,因为任何响应都指示端口正在侦听。