Configurer Microsoft Distributed Transaction Coordinator (DTC) pour utiliser un pare-feu

Cet article explique comment configurer Microsoft Distributed Transaction Coordinator (DTC) pour qu’il fonctionne via des pare-feu.

Produits concernés : Windows Server 2012 R2, Windows Server 2016, Windows Server 2019 et Windows Server 2022
Numéro de la base de connaissances d’origine : 250367

Plus d’informations

Vous pouvez configurer DTC pour communiquer via des pare-feu, y compris des pare-feu de traduction d’adresses réseau.

DTC utilise l’allocation de ports dynamiques RPC (Remote Procedure Call) par défaut. L’allocation de ports dynamique RPC sélectionne de façon aléatoire les numéros de port dans la plage 49152-65535. En modifiant le Registre, vous pouvez contrôler les ports que RPC alloue dynamiquement pour la communication entrante. Vous pouvez ensuite configurer votre pare-feu pour limiter les communications externes entrantes aux ports et au port 135 (port du mappeur de point de terminaison RPC). Il est recommandé d’utiliser un port fixe pour les services DTC ou la plage dynamique par défaut 49152-65535 dans les pare-feu afin d’éviter l’épuisement des ports et de ne passer aux ports RPC personnalisés que si les pare-feu ne peuvent pas filtrer sur l’ordinateur ou les adresses IP.

Vous pouvez avoir une instance DTC locale et plusieurs instances DTC en cluster. Vous devrez peut-être fournir davantage de ports dynamiques entrants pour d’autres sous-systèmes qui s’appuient sur RPC. Il est donc recommandé de conserver la plage RPC par défaut même si vous utilisez un port fixe pour les services DTC.

Les clés et valeurs de Registre décrites dans cet article n’apparaissent pas dans le Registre par défaut ; vous devez les ajouter à l’aide du Registre Rédacteur.

Importante

Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations sur la sauvegarde et la restauration du Registre, consultez Comment sauvegarder et restaurer le Registre dans Window.

Configurer DTC pour utiliser un port fixe unique

Suivez ces étapes sur les ordinateurs impliqués dans les transactions DTC pour définir un port fixe pour DTC. Le pare-feu doit être ouvert dans les deux sens pour le port fixe et le port 135 (le port du mappeur de point de terminaison RPC) :

  1. Pour démarrer le Registre Rédacteur, sélectionnez Démarrer, Exécuter, tapez regedt32, puis sélectionnez OK.
  2. Dans registre Rédacteur, sélectionnez HKEY_LOCAL_MACHINE dans la fenêtre Ordinateur local.
  3. Développez l’arborescence en double sélectionnant les dossiers nommés dans le chemin d’accès HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC .
  4. Sélectionnez le dossier MSDTC, puis sélectionnez Nouvelle > valeur DWORD (32 bits) dans le menu Modifier .
  5. Remplacez le Nom par ServerTcpPort.
  6. Cliquez avec le bouton droit et choisissez Modifier sur la nouvelle valeur.
  7. Dans la boîte de dialogue Valeur Rédacteur, sélectionnez Décimal, puis entrez votre numéro de port fixe, par exemple 40001, dans le champ Données de la valeur, puis sélectionnez OK.

Pour configurer le port fixe pour les instances DTC en cluster, vous devez rechercher le GUID de ressource de cluster et ajouter la valeur ServerTcpPort sous cet emplacement. Utilisez un numéro de port différent pour chaque instance DTC. Par exemple, si votre GUID de ressource DTC est 012345678-9abc-def0-1234-56789abcdef0, il se trouve dans ce chemin : HKEY_LOCAL_MACHINE\Cluster\Resources\012345678-9abc-def0-1234-56789abcdef0\MSDTCPRIVATE\MSDTC. Répétez les étapes pour les ressources en cluster DTC supplémentaires.

Vous pouvez également utiliser les reg add commandes dans les scripts avec des privilèges d’administrateur pour effectuer cette opération. Ajustez l’exemple suivant à votre GUID de cluster spécifique si l’instance DTC en cluster est utilisé :

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

Configurer RPC pour utiliser la plage de ports client

Suivez ces étapes sur les ordinateurs impliqués dans les transactions DTC où les pare-feu empêchent la communication complète pour contrôler l’allocation de ports dynamiques RPC. Le pare-feu doit être ouvert dans les deux sens pour les ports spécifiés et le port 135 (port du mappeur de point de terminaison RPC) :

  1. Pour démarrer le Registre Rédacteur, sélectionnez Démarrer, Exécuter, tapez regedt32, puis sélectionnez OK.

    Utilisez Regedt32.exe au lieu de Regedit.exe. Regedit.exe ne prend pas en charge le type de données REG_MULTI_SZ requis pour la valeur Ports.

  2. Dans registre Rédacteur, sélectionnez HKEY_LOCAL_MACHINE dans la fenêtre Ordinateur local.

  3. Développez l’arborescence en double sélectionnant les dossiers nommés dans le chemin d’accès HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc .

  4. Sélectionnez le dossier RPC, puis sélectionnez Ajouter une clé dans le menu Modifier .

  5. Dans la boîte de dialogue Ajouter une clé , dans la zone Nom de la clé , tapez Internet, puis sélectionnez OK.

  6. Sélectionnez le dossier Internet, puis sélectionnez Ajouter une valeur dans le menu Modifier .

  7. Dans la boîte de dialogue Ajouter une valeur , dans la zone Nom de la valeur , tapez Ports.

  8. Dans la zone Type de données , sélectionnez REG_MULTI_SZ, puis OK.

  9. Dans la boîte de dialogue Rédacteur à plusieurs chaînes, dans la zone Données, spécifiez le ou les ports que vous souhaitez que RPC utilise pour l’allocation dynamique de ports, puis sélectionnez OK.

    Chaque valeur de chaîne que vous tapez spécifie un port unique ou une plage de ports inclusive. Par exemple, pour ouvrir le port 40000, spécifiez 40000 sans les guillemets. Pour ouvrir les ports 40000 à 42000 inclus, spécifiez 40000-42000 sans les guillemets. Vous pouvez spécifier plusieurs ports ou plages de ports en spécifiant un port ou une plage de ports par ligne. Tous les ports doivent être comprises entre 1024 et 65535. Si un port se trouve en dehors de cette plage ou si une chaîne n’est pas valide, RPC traite la configuration entière comme non valide.

    Microsoft vous recommande d’ouvrir des ports à partir de 20 000 et plus, car les ports inférieurs peuvent souvent être utilisés par d’autres applications, et d’ouvrir un minimum de 1 000 ports pour éviter l’épuisement des ports. Sur les systèmes à charge élevée, vous aurez peut-être besoin de plus de ports. La plage par défaut 1024-5000 a été déplacée dans Windows 2008 et versions ultérieures vers la plage 49152-65535 pour éviter l’épuisement des ports.

  10. Suivez les étapes 6 à 9 pour ajouter une autre clé pour Internet, en utilisant ces valeurs :

    Valeur : PortsInternetAvailable
    Type de données : REG_SZ
    Données : Y

    Cette valeur signifie que les ports répertoriés sous la valeur Ports doivent être rendus disponibles sur Internet.

  11. Suivez les étapes 6 à 9 pour ajouter une autre clé pour Internet, en utilisant ces valeurs :

    Valeur : UseInternetPorts
    Type de données : REG_SZ
    Données : Y

    Cette valeur signifie que RPC doit attribuer dynamiquement des ports à partir de la liste des ports Internet.

  12. Configurez votre pare-feu pour autoriser l’accès entrant aux ports dynamiques spécifiés et au port 135 (port du mappeur de point de terminaison RPC).

  13. Redémarrez l'ordinateur. Lorsque RPC redémarre, il affecte dynamiquement les ports entrants, en fonction des valeurs de Registre que vous avez spécifiées. Par exemple, pour ouvrir les ports 40000 à 42000 inclus, créez ces valeurs nommées :

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

DTC nécessite également que vous puissiez résoudre les noms d’ordinateurs au moyen de NetBIOS ou DNS. Vérifiez que NetBIOS est activé dans les propriétés de la carte réseau et testez si NetBIOS peut résoudre les noms à l’aide de ping et du nom du serveur. L’ordinateur client doit être en mesure de résoudre le nom du serveur. Et le serveur doit être en mesure de résoudre le nom du client. Si NetBIOS ne peut pas résoudre les noms, ajoutez des entrées aux fichiers LMHOSTS sur les ordinateurs.