ファイアウォールを介して動作するように Microsoft 分散トランザクション コーディネーター (DTC) を構成する

この記事では、ファイアウォールを介して動作するように Microsoft 分散トランザクション コーディネーター (DTC) を構成する方法について説明します。

適用対象: Windows Server 2012 R2、Windows Server 2016、Windows Server 2019、Windows Server 2022
元の KB 番号: 250367

詳細

ネットワーク アドレス変換ファイアウォールなど、ファイアウォールを介して通信するように DTC を構成できます。

DTC では、既定でリモート プロシージャ コール (RPC) 動的ポート割り当てが使用されます。 RPC 動的ポート割り当てでは、49152 から 65535 の範囲のポート番号がランダムに選択されます。 レジストリを変更することで、RPC が受信通信に動的に割り当てるポートを制御できます。 その後、受信外部通信をそれらのポートとポート 135 (RPC エンドポイント マッパー ポート) のみに制限するようにファイアウォールを構成できます。 DTC サービスの固定ポートまたはファイアウォールの既定の動的 49152-65535 範囲のいずれかを使用して、ポートの枯渇を回避し、ファイアウォールがコンピューターまたは IP でフィルター処理できない場合にのみカスタム RPC ポートに変更することをお勧めします。

1 つのローカル DTC インスタンスと複数のクラスター化 DTC インスタンスを使用できます。 RPC に依存する他のサブシステムには、より多くの受信動的ポートを提供する必要がある場合があるため、DTC サービスに固定ポートを使用する場合でも、既定の RPC 範囲を維持することをお勧めします。

この記事で説明するレジストリ キーと値は、既定ではレジストリに表示されません。レジストリ エディターを使用して追加する必要があります。

重要

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

1 つの固定ポートを使用するように DTC を構成する

DTC トランザクションに関係するコンピューターで次の手順に従って、DTC の固定ポートを設定します。 固定ポートとポート 135 (RPC エンドポイント マッパー ポート) の両方向でファイアウォールを開く必要があります。

  1. レジストリ エディターを開始するには、[スタート] を選択し、[実行] を選択し、「regedt32」と入力して、[OK] を選択します
  2. [レジストリ] エディターで、[ローカル コンピューター] ウィンドウで [HKEY_LOCAL_MACHINE] を選択します。
  3. パスでという名前のフォルダーをダブルクリックして、ツリーを HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC 展開します。
  4. MSDTC フォルダーを選択し、[編集] メニューの [ 新しい > DWORD (32 ビット) 値 ] を 選択 します。
  5. [名前][ServerTcpPort] に変更します。
  6. 右クリックし、新しい値で [変更 ] を選択します。
  7. [値のエディター] ダイアログ ボックスで、[10 進数] を選択し、固定ポート番号 (例: 40001) を [値データ] フィールドに配置し、[OK] を選択します

クラスター化 DTC インスタンスの固定ポートを構成するには、クラスター リソース GUID を見つけて、この場所に ServerTcpPort 値を追加する必要があります。 DTC インスタンスごとに異なるポート番号を使用します。 たとえば、DTC リソース GUID が 012345678-9abc-def0-1234-56789abcdef0 の場合は、次のパス HKEY_LOCAL_MACHINE\Cluster\Resources\012345678-9abc-def0-1234-56789abcdef0\MSDTCPRIVATE\MSDTCになります。 追加の DTC クラスター化リソースの手順を繰り返します。

または、管理者特権を reg add 持つスクリプトのコマンドを使用して、この操作を実行できます。 クラスター化された DTC インスタンスが使用されている場合は、次の例を特定のクラスター GUID に調整します。

reg add HKLM\SOFTWARE\Microsoft\MSDTC /v ServerTcpPort /t REG_DWORD /d 40001 /f
reg add HKLM\Cluster\Resources\012345678-9abc-def0-1234-56789abcdef0\MSDTCPRIVATE\MSDTC /v ServerTcpPort /t REG_DWORD /d 40002 /f

顧客のポート範囲を使用するように RPC を構成する

ファイアウォールが RPC 動的ポート割り当てを制御するための完全な通信を妨げる DTC トランザクションに関係するコンピューターで、次の手順に従います。 ファイアウォールは、指定されたポートとポート 135 (RPC エンドポイント マッパー ポート) の両方向で開いている必要があります。

  1. レジストリ エディターを開始するには、[スタート] を選択し、[実行] を選択し、「regedt32」と入力して、[OK] を選択します

    Regedit.exe の代わりに Regedt32.exe を使用します。 Regedit.exe では、Ports 値に必要なREG_MULTI_SZデータ型はサポートされていません。

  2. [レジストリ] エディターで、[ローカル コンピューター] ウィンドウで [HKEY_LOCAL_MACHINE] を選択します。

  3. パスでという名前のフォルダーをダブルクリックして、ツリーを HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc 展開します。

  4. RPC フォルダーを選択し、[編集] メニューの [キーの追加] を選択します。

  5. [ キーの追加 ] ダイアログ ボックスの [ キー名 ] ボックスに「 インターネット」と入力し、[OK] を選択 します

  6. [インターネット] フォルダーを選択し、[編集] メニューの [値の追加] を選択します。

  7. [ 値の追加 ] ダイアログ ボックスの [ 値の名前 ] ボックスに「ポート」と入力 します

  8. [ データ型 ] ボックスで、[ REG_MULTI_SZ] を選択し、[ OK] を選択します

  9. [複数文字列エディター] ダイアログ ボックスの [データ] ボックスで、RPC で動的ポート割り当てに使用するポートを指定し、[OK] を選択します

    入力する各文字列値は、1 つのポートまたは包括的なポート範囲を指定します。 たとえば、ポート 40000 を開くには、引用符なしで 40000 を指定します。 ポート 40000 から 42000 までを開くには、引用符なしで 40000 から 42000 を指定します。 1 行に 1 つのポートまたはポート範囲を指定することで、複数のポートまたはポート範囲を指定できます。 すべてのポートは 1024 から 65535 の範囲である必要があります。 いずれかのポートがこの範囲外の場合、またはいずれかの文字列が無効な場合、RPC は構成全体を無効として扱います。

    Microsoft では、ポートが 20000 以降から開くようお勧めします。低いポートは他のアプリケーションで頻繁に使用される可能性があるため、ポート枯渇を避けるために少なくとも 1,000 個のポートを開く必要があります。 負荷の高いシステムでは、より多くのポートが必要になる場合があります。 ポートの枯渇を回避するために、Windows 2008 では既定の範囲 1024 から 5000 が 49152-65535 の範囲に移動されました。

  10. 次の値を使用して、手順 6 ~ 9 に従ってインターネット用の別のキーを追加します。

    値: PortsInternetAvailable
    データ型: REG_SZ
    データ: Y

    この値は、[ポート] の値の下に一覧表示されているポートがインターネットで使用可能であることを示します。

  11. 次の値を使用して、手順 6 ~ 9 に従ってインターネット用の別のキーを追加します。

    値: UseInternetPorts
    データ型: REG_SZ
    データ: Y

    この値は、RPC がインターネット ポートの一覧からポートを動的に割り当てる必要があることを示します。

  12. 指定された動的ポートとポート 135 (RPC エンドポイント マッパー ポート) への受信アクセスを許可するようにファイアウォールを構成します。

  13. コンピューターを再起動します。 RPC が再起動すると、指定したレジストリ値に基づいて、受信ポートが動的に割り当てられます。 たとえば、ポート 40000 から 42000 までを開くには、次の名前付き値を作成します。

    ポート: REG_MULTI-SZ: 40000-42000
    PortsInternetAvailable : REG_SZ : Y
    UseInternetPorts : REG_SZ : Y

DTC では、NetBIOS または DNS を使用してコンピューター名を解決できる必要もあります。 NETBIOS が NIC プロパティで有効になっていることを確認し、NetBIOS が ping とサーバー名を使用して名前を解決できるかどうかをテストします。 クライアント コンピューターは、サーバーの名前を解決できる必要があります。 また、サーバーはクライアントの名前を解決できる必要があります。 NetBIOS で名前を解決できない場合は、コンピューター上の LMHOSTS ファイルにエントリを追加します。