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

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

适用于: Windows Server 2012 R2
原始 KB 数: 816103

简介

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

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

  • Active Directory 域服务 (添加)
  • 适用于轻型目录访问协议的 Active Directory (LDAP)
  • 远程过程调用 (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、DFS、DFSR、证书服务和所有其他服务:

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

注意

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

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

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

PortQry 知道如何使用 UDP 和 TCP) 将查询发送到 RPC 终结点映射器 (并解释响应。 此查询显示向 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 查询响应:

当前日期: <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 终结点映射器数据库配置为侦听端口 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 可以使用 UDP 或 TCP) 发送格式正确的 DNS 查询 (。 实用工具发送“.”portqry.microsoft.com的 DNS 查询。然后,PortQry 等待来自目标 DNS 服务器的响应。 查询的 DNS 响应是负面还是正值无关,因为任何响应都指示端口正在侦听。