如何強制 Kerberos 在 Windows 中使用 TCP 而非 UDP

本文說明如何強制 Kerberos 使用 TCP 而非 UDP。

原始 KB 編號: 244474

摘要

Windows Kerberos 驗證套件是 Windows Server 2003、Windows Server 2008 和 Windows Vista 中的預設驗證套件。 它與 NTLM 挑戰/回應通訊協定並存,並用於用戶端和伺服器可以交涉 Kerberos 的實例。 批註要求 (RFC) 1510 指出用戶端在用戶端連絡 KDC 時,應將使用者數據報通訊協定 (UDP) 數據報傳送至埠 88。 KDC 應該以回復數據報回應傳送者 IP 位址的傳送埠。 RFC 也會指出 UDP 必須是第一個嘗試的通訊協定。

注意

RFC 4120 現在已過時 RFC 1510。 RFC 4120 指定 KDC 必須接受 TCP 要求,而且應該接聽埠 88 (十進位) 上的這類要求。 根據預設,Windows Server 2008 和 Windows Vista 會先嘗試 Kerberos 的 TCP,因為 MaxPacketSize 預設值現在是 0。 您仍然可以使用 MaxPacketSize 登錄值來覆寫該行為。

UDP 封包大小的限制可能會導致網域登入時出現下列錯誤訊息:

事件記錄檔錯誤 5719
來源 NETLOGON

網域網域沒有 Windows NT 或 Windows 2000 域控制器。 發生下列錯誤:

目前沒有登入伺服器可供服務登入要求。

此外,Netdiag 工具可能會顯示下列錯誤訊息:

  • 錯誤訊息 1

    DC 清單測試 。 . . . . . . . . . . :失敗 [WARNING] 無法呼叫 DsBind 至 COMPUTERNAMEDC.domain.com (159.140.176.32)。 [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • 錯誤訊息 2

    Kerberos 測試。 . . . . . . . . . . :失敗 [嚴重] Kerberos 沒有 MEMBERSERVER$的票證。] 此問題徵兆的 Windows XP 事件記錄檔為 SPNegotiate 40960 和 Kerberos 10。

其他相關資訊

重要

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 為增加保護起見,請先備份登錄,再進行修改。 然後,如果發生問題,您就可以還原登錄。 如需備份和還原登錄的詳細資訊,請參閱如何在 Windows 中備份及還原登錄

如果您使用適用於 Kerberos 的 UDP,當您收到下列訊息時,用戶端電腦可能會停止回應 (停止回應:載入您的個人設定。

根據預設,Windows Server 2003 使用 UDP 的數據報封包大小上限為 1,465 個字節。 針對 Windows XP 和 Windows 2000,此最大值為 2,000 個字節。 傳輸控制通訊協定 (TCP) 用於大於此最大值的任何 Datagrampacket。 修改登錄機碼和值,即可變更 UDP 所使用的數據報封包大小上限。

根據預設,Kerberos 會使用無連線的 UDP 數據報封包。 根據各種因素,包括安全性標識碼 (SID) 歷程記錄和群組成員資格,某些帳戶會有較大的 Kerberos 驗證封包大小。 根據虛擬專用網 (VPN) 硬體組態,這些較大的封包在通過 VPN 時必須分散。 問題是由這些大型 UDP Kerberos 封包的分散所造成。 由於 UDP 是無連線的通訊協定,因此如果分散的 UDP 封包依序到達目的地,將會捨棄這些封包。

如果您將 MaxPacketSize 變更為 1 的值,則會強制用戶端使用 TCP 透過 VPN 通道傳送 Kerberos 流量。 因為 TCP 是面向連線,所以它是跨 VPN 通道更可靠的傳輸方式。 即使卸除封包,伺服器仍會重新要求遺失的數據封包。

您可以將 MaxPacketSize 變更為 1,以強制用戶端透過 TCP 使用 Kerberos 流量。 若要這樣做,請遵循下列步驟:

  1. 啟動 [登錄編輯程式]。

  2. 找出 ,然後按下登錄子機碼: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters

    注意

    如果 Parameters 索引鍵不存在,請立即加以建立。

  3. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  4. 輸入 MaxPacketSize,然後按 ENTER。

  5. 按兩下 MaxPacketSize,在 [值資料] 方塊中輸入1,按兩下以選取 [十進位] 選項,然後按兩下 [確定]。

  6. 結束 [登錄編輯程式]。

  7. Restart your computer.

這是 Windows 2000、XP 和 Server 2003 的解決方案方法。 Windows Vista 和更新版本會針對 MaxPacketSize 使用預設值 “0”,這也會關閉 Kerberos 用戶端的 UDP 使用。

下列範本是可匯入組策略的系統管理範本,可讓執行 Windows Server 2003、Windows XP 或 Windows 2000 的所有企業計算機設定 MaxPacketSize 值。 若要在組策略對象編輯器中檢視 MaxPacketSize 設定,請單擊 [檢視] 功能表上的 [僅顯示原則],如此就不會選取 [僅顯示原則]。 此範本會修改 [原則] 區段外的登錄機碼。 根據預設,組策略對象編輯器不會顯示這些登錄設定。