設定 Microsoft Distributed Transaction Coordinator (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 動態配置給傳入通訊的埠。 然後,您可以將防火牆設定為只將連入外部通訊限制在 RPC 端點對應程式埠) (這些埠和埠 135。 建議使用 DTC 服務的固定埠或防火牆中的預設動態 49152-65535 範圍,以避免埠耗盡,而且只有在防火牆無法篩選計算機或 IP 時,才會變更為自定義 RPC 埠。

您可以有一個本機 DTC 實例和多個叢集 DTC 實例。 您可能需要為依賴 RPC 的其他子系統提供更多連入動態埠,因此建議您保留預設 RPC 範圍,即使 DTC 服務使用固定埠也一樣。

本文所述的登錄機碼和值預設不會出現在登錄中;您必須使用登錄 編輯器 來新增它們。

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需如何備份和還原登錄的詳細資訊,請參閱 如何在 Window 中備份和還原登錄

將 DTC 設定為使用單一固定埠

請在涉及 DTC 交易的電腦上遵循下列步驟,以設定 DTC 的固定埠。 防火牆必須針對固定埠和埠 135 雙向開啟, (RPC 端點對應程式埠) :

  1. 若要啟動登錄 編輯器,請選取 [開始],選取 [執行],輸入 regedt32,然後選取 [確定]
  2. 在 [登錄 編輯器 中,選取 [本機計算機] 視窗中的 [HKEY_LOCAL_MACHINE]。
  3. 按兩下路徑中名為的資料夾,以展開樹狀結構 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC
  4. 選取 MSDTC 資料夾,然後在 [編輯] 選單上選取 [新增 > DWORD (32 位) 值]。
  5. [名稱 ] 變更為 [ServerTcpPort]
  6. 以滑鼠右鍵按下並選擇新值上的 [ 修改 ]。
  7. 在 [值 編輯器] 對話框中,選取 [十進位],然後在 [值數據] 字段中放置您的固定埠號碼,例如 g 40001,然後選取 [確定]

若要設定叢集 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 以使用用戶端口範圍

請在涉及 DTC 交易的計算機上遵循下列步驟,其中防火牆會防止完整通訊來控制 RPC 動態埠配置。 您必須針對 RPC 端點對應程式連接埠 (指定的埠和連接埠 135 雙向開啟防火牆) :

  1. 若要啟動登錄 編輯器,請選取 [開始],選取 [執行],輸入 regedt32,然後選取 [確定]

    使用 Regedt32.exe,而不是 Regedit.exe。 Regedit.exe 不支援埠值所需的REG_MULTI_SZ數據類型。

  2. 在 [登錄 編輯器 中,選取 [本機計算機] 視窗中的 [HKEY_LOCAL_MACHINE]。

  3. 按兩下路徑中名為的資料夾,以展開樹狀結構 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc

  4. 選取 RPC 資料夾,然後選取 [編輯] 功能表上的 [新增金鑰]。

  5. 在 [新增金鑰] 對話方塊中,輸入因特網,然後選取 [確定]

  6. 選取 [因特網] 資料夾,然後選取 [編輯] 功能表上的 [新增值]。

  7. 在 [ 新增值] 對話框的 [ 值名稱 ] 方塊中,輸入

  8. 在 [ 數據類型] 方塊中,選 取 [REG_MULTI_SZ],然後選取 [ 確定]

  9. 在 [多字串 編輯器] 對話方塊的 [資料] 方塊中,指定您要 RPC 用於動態埠配置的埠或埠,然後選取 [確定]

    您輸入的每個字串值都會指定單一埠或內含埠範圍。 例如,若要開啟埠 40000,請指定 40000 而不含引號。 若要開啟包含 40000 到 42000 的埠,請指定 40000-42000 ,不含引號。 您可以指定多個埠或埠範圍,方法是每行指定一個埠或埠範圍。 所有埠都必須介於 1024 到 65535 的範圍內。 如果有任何埠超出此範圍,或任何字串無效,RPC 會將整個設定視為無效。

    Microsoft 建議您從 20000 和更新版本開啟埠,因為其他應用程式通常會使用較低的埠,而且您至少要開啟 1000 個埠,以避免埠耗盡。 在高負載系統上,您可能需要更多埠。 Windows 2008 和更新版本中的預設範圍 1024-5000 已移至 49152-65535 範圍,以避免埠耗盡。

  10. 請遵循步驟 6 到 9,使用下列值為因特網新增另一個密鑰:

    值:PortsInternetAvailable
    數據類型:REG_SZ
    數據:Y

    此值表示 [埠] 值底下所列的埠可讓因特網使用。

  11. 請遵循步驟 6 到 9,使用下列值為因特網新增另一個密鑰:

    值:UseInternetPorts
    數據類型:REG_SZ
    數據:Y

    此值表示 RPC 應該從因特網埠清單動態指派埠。

  12. 將防火牆設定為允許對指定動態埠的連入存取,以及在 RPC 端點對應程式埠) (埠 135。

  13. 重新啟動電腦。 當 RPC 重新啟動時,它會根據您指定的登錄值,動態指派傳入埠。 例如,若要開啟埠 40000 到 42000,請建立下列具名值:

    埠:REG_MULTI-SZ:40000-42000
    PortsInternetAvailable :REG_SZ :Y
    UseInternetPorts : REG_SZ : Y

DTC 也需要您可以透過 NetBIOS 或 DNS 解析電腦名稱。 檢查 NIC 屬性中是否已啟用 NetBIOS,並測試 NetBIOS 是否可以使用 ping 和伺服器名稱來解析名稱。 用戶端電腦必須能夠解析伺服器的名稱。 而且伺服器必須能夠解析客戶端的名稱。 如果 NetBIOS 無法解析名稱,請將專案新增至電腦上的 LMHOSTS 檔案。