本文提供了一个解决方案,用于解决向服务器端口 88、464、389 和 3268 创建的传输控制协议(TCP)会话重置的问题。 端口 636 和 3269 上使用安全套接字层(SSL)或传输层安全性(TLS)的会话也会受到影响。
还可以注意到用户数据报协议 (UDP) 端口 88 和 464 上的请求未收到响应。
原始 KB 数: 2000061
运行 Windows Server 角色Active Directory 域服务(AD DS)或 Active Directory 轻型目录服务(AD LDS)。 偶尔会遇到 TCP 会话创建到服务器端口 88、464、389 和 3268 的情况。 端口 636 和 3269 上使用安全套接字层(SSL)或传输层安全性(TLS)的会话也会受到影响。
在网络流量的跟踪中,可以看到使用 TCP RESET(或 RST)的帧在使用 TCP 三向握手建立会话后,服务器几乎立即发送。 客户端可能在发送 RESET 之前发送一些请求数据,但此请求未响应,也没有确认数据。
对于 UDP,可以在端口 88 和 464 上看到请求未收到响应。
空闲会话监视不正确
管理 LDAP 服务器和 Kerberos 密钥分发中心(KDC)的 TCP 会话的库使用清理线程监视处于非活动状态的会话,如果会话空闲时间过长,则会断开这些会话的连接。 清理线程每 30 秒运行一次,以清理这些会话。
KDC 注册表项 NewConnectionTimeout
使用默认值 10 秒控制空闲时间。 但是,根据清理的实现,有效间隔为 0-30 秒。 因此,新创建的会话可能会立即被服务器偶尔断开连接。
重置 NewConnectionTimeout
对于 KDC 端口,许多客户端(包括 Windows Kerberos 客户端)将执行重试,然后获取用于会话的完整计时器计时周期。 LDAP 应用程序有更高的机会考虑连接重置致命故障。
如果设置为 NewConnectionTimeout
40 或更高,则会收到 30-90 秒的超时窗口。 当你使用 70 或更高版本时,你会收到 60-120 秒的超时时间。有关注册表值的详细信息 NewConnectionTimeout
,请参阅 Windows 中的 Kerberos 协议注册表项和 KDC 配置键。
KDC 可能无法响应某些 UDP Kerberos 身份验证请求
你正在运行 Windows Server 角色 AD DS。 客户端从源端口 22528/UDP 或 53249/UDP 发送 Kerberos 身份验证或密码更改请求,但 KDC 可能无法响应。
注意
自 Windows Vista 以来,Microsoft Kerberos 客户端默认使用 TCP Kerberos 身份验证。 因此,此问题可能只发生在使用 UDP 进行 Kerberos 请求的第三方产品中。
KDC 具有针对请求循环的内置保护,并阻止源端口 88/UDP 和 464/UDP 上的 Kerberos 身份验证请求。 但是,实现的字节排序有一个 bug,因此源端口 22528/UDP 和 53249/UDP 会被阻止。
必须从客户端上的 UDP 临时端口范围中排除 22528/UDP 和 53249/UDP。