Kerberos に UDP の代わりに TCP を使用する方法Windows

この記事では、Kerberos に UDP ではなく TCP の使用を強制する方法について説明します。

適用対象:  Windows 10 - すべてのエディション、Windows Server 2012 R2
元の KB 番号:   244474

概要

Kerberos Windowsパッケージは、Windows Server 2003、Windows Server 2008、および Windows Vista の既定の認証パッケージです。 NTLM チャレンジ/応答プロトコルと共存し、クライアントとサーバーの両方が Kerberos をネゴシエートできるインスタンスで使用されます。 コメントの要求 (RFC) 1510 では、クライアントが KDC に接続するときに、クライアントがキー配布センター (KDC) の IP アドレスにあるポート 88 にユーザー データグラム (UDP) データグラムを送信する必要があります。 KDC は、送信者の IP アドレスにある送信側ポートに対する返信データグラムで応答する必要があります。 RFC では、UDP が最初に試されるプロトコルである必要があるというメッセージも示されています。

注意

RFC 4120 は RFC 1510 を廃止しました。 RFC 4120 は、KDC が TCP 要求を受け入れ、ポート 88 (10 進数) でそのような要求をリッスンする必要があります。 既定では、MaxPacketSize の既定値が 0 Windowsので、サーバー 2008 と Windows Vista は Kerberos の TCP を最初に試します。 MaxPacketSize レジストリ値を使用して、その動作を上書きできます。

UDP パケット サイズの制限により、ドメイン ログオン時に次のエラー メッセージが表示される場合があります。

イベント ログ エラー 5719
ソース NETLOGON

ドメイン ドメインWindows NT 2000 Windows 2000 ドメイン コントローラーは使用 できません。 次のエラーが発生しました。

現在、ログオン要求にサービスを提供できるログオン サーバーはありません。

さらに、Netdiag ツールに次のエラー メッセージが表示される場合があります。

  • エラー メッセージ 1

    DC リスト テスト 。 . . . . . . . . . . : Failed [WARNING] DsBind を COMPUTERNAMEDC.domain.com (159.140.176.32) に呼び出す必要があります。 [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • エラー メッセージ 2

    Kerberos テスト。 . . . . . . . . . . : Failed [FATAL] Kerberos に MEMBERSERVER$のチケットが存在しない。このWindowsの症状である XP イベント ログには、SPNegotiate 40960 と Kerberos 10 があります。

詳細

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリをバックアップおよび復元する方法の詳細については、「レジストリをバックアップおよび復元する方法」を参照Windows。

Kerberos に UDP を使用する場合、クライアント コンピューターは、個人用設定の読み込みというメッセージが表示された場合に応答 (ハング) を停止する場合があります。

既定では、サーバー 2003 で UDP を使用Windowsデータグラム パケットの最大サイズは 1,465 バイトです。 XP Windows 2000 Windowsの場合、この最大値は 2,000 バイトです。 伝送制御プロトコル (TCP) は、この最大値を超えるデータグラムパックに使用されます。 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」 と入力し、[Decimal] オプションをクリックして [OK] をクリックします

  6. レジストリ エディターを終了します。

  7. コンピューターを再起動します。

これは、2000、XP、および Server 2003 のWindows方法です。 WindowsVista 以降では、MaxPacketSize の既定の "0" を使用します。また、Kerberos クライアントでの UDP の使用もオフにします。

次のテンプレートは、グループ ポリシーにインポートできる管理用テンプレートで、Windows Server 2003、Windows XP、または Windows 2000 を実行しているすべてのエンタープライズ コンピューターに MaxPacketSize 値を設定できます。 グループ ポリシー オブジェクト エディターで MaxPacketSize の設定を表示するには、[表示] メニューの[ポリシーのみ表示] をクリックして、[ポリシーのみ表示] が選択されていない。 このテンプレートは、[ポリシー] セクションの外部のレジストリ キーを変更します。 既定では、グループ ポリシー オブジェクト エディターでは、これらのレジストリ設定は表示されません。