Настройка координатора распределенных транзакций (Майкрософт) для работы через брандмауэр

В этой статье описывается настройка координатора распределенных транзакций (Майкрософт) для работы через брандмауэры.

Применимо к: Windows Server 2012 R2, Windows Server 2016, Windows Server 2019, Windows Server 2022
Исходный номер базы знаний: 250367

Дополнительная информация

Вы можете настроить DTC для обмена данными через брандмауэры, включая брандмауэры преобразования сетевых адресов.

По умолчанию DTC использует динамическое выделение портов удаленного вызова процедур (RPC). Динамическое выделение портов RPC случайным образом выбирает номера портов в диапазоне 49152–65535. Изменив реестр, можно указать, какие порты RPC динамически выделяет для входящего взаимодействия. Затем вы можете настроить брандмауэр так, чтобы ограничить входящий внешний обмен данными только этими портами и портом 135 (порт сопоставителя конечной точки RPC). Рекомендуется использовать фиксированный порт для служб DTC или динамический диапазон по умолчанию 49152–65535 в брандмауэрах, чтобы избежать исчерпания портов и переходить на пользовательские порты RPC, только если брандмауэры не могут фильтровать на компьютере или IP-адресах.

Вы можете иметь один локальный экземпляр DTC и несколько кластеризованных экземпляров DTC. Возможно, потребуется предоставить больше входящих динамических портов для других подсистем, использующих RPC, поэтому рекомендуется сохранить диапазон RPC по умолчанию, даже если для служб DTC используется фиксированный порт.

Разделы реестра и значения, описанные в этой статье, не отображаются в реестре по умолчанию; Их необходимо добавить с помощью Редактор реестра.

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о резервном копировании и восстановлении реестра см. в статье Резервное копирование и восстановление реестра в окне.

Настройка 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. В диалоговом окне Значение Редактор выберите Десятичный, а затем введите фиксированный номер порта, например 40001, в поле Данные значения, а затем нажмите кнопку ОК.

Чтобы настроить фиксированный порт для кластеризованных экземпляров DTC, необходимо найти GUID ресурса кластера и добавить значение ServerTcpPort в этом расположении. Используйте разный номер порта для каждого экземпляра DTC. Например, если идентификатор GUID ресурса DTC — 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. Брандмауэр должен быть открыт в обоих направлениях для указанных портов и порта 135 (порт сопоставителя конечных точек RPC):

  1. Чтобы запустить Редактор реестра, нажмите кнопку Пуск, выберите Выполнить, введите regedt32, а затем нажмите кнопку ОК.

    Вместо Regedit.exe используйте Regedt32.exe. Regedit.exe не поддерживает тип данных REG_MULTI_SZ, необходимый для значения Порты.

  2. В Редактор реестра выберите HKEY_LOCAL_MACHINE в окне Локальный компьютер.

  3. Разверните дерево, дважды выбрав папки с именем в HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc пути.

  4. Выберите папку RPC и выберите Добавить ключ в меню Правка .

  5. В диалоговом окне Добавление ключа в поле Имя ключа введите Интернет и нажмите кнопку ОК.

  6. Выберите папку Internet и выберите Добавить значение в меню Правка .

  7. В диалоговом окне Добавление значения в поле Имя значения введите Порты.

  8. В поле Тип данных выберите REG_MULTI_SZ, а затем нажмите кнопку ОК.

  9. В диалоговом окне Многострочная Редактор в поле Данные укажите порт или порты, которые RPC будет использовать для динамического выделения портов, а затем нажмите кнопку ОК.

    Каждое введенное строковое значение указывает один порт или инклюзивный диапазон портов. Например, чтобы открыть порт 40000, укажите 40000 без кавычек. Чтобы открыть порты с 40000 до 42000 включительно, укажите 40000–42000 без кавычек. Можно указать несколько портов или диапазонов портов, указав один порт или диапазон портов на строку. Все порты должны находиться в диапазоне от 1024 до 65535. Если какой-либо порт находится за пределами этого диапазона или если какая-либо строка недопустима, RPC будет рассматривать всю конфигурацию как недопустимую.

    Корпорация Майкрософт рекомендует открывать порты от 20 000 и более ранних версий, так как более низкие порты часто используются другими приложениями и открывать не менее 1000 портов, чтобы избежать нехватки портов. В системах с высокой нагрузкой может потребоваться больше портов. Диапазон по умолчанию 1024–5000 был перемещен в Windows 2008 и выше в диапазон 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 включена в свойствах сетевого адаптера, и проверьте, может ли NetBIOS разрешить имена с помощью ping и имени сервера. Клиентский компьютер должен иметь возможность разрешать имя сервера. И сервер должен иметь возможность разрешать имя клиента. Если NetBIOS не удается разрешить имена, добавьте записи в файлы LMHOSTS на компьютерах.