Vous rencontrez des difficultés de communication OPC Classic sur un serveur Windows Server 2022 ? Suivez ce guide pas à pas pour configurer correctement DCOM et sécuriser la connexion entre vos clients OPC et votre serveur, même après le durcissement appliqué par Microsoft.
Pourquoi DCOM est indispensable à OPC Classic
Les spécifications OPC DA, A&E et HDA reposent sur DCOM (Distributed Component Object Model) pour établir la session distante et transférer les données en temps réel. Sans un paramétrage précis des droits DCOM, le client ne peut ni lancer le composant COM du serveur OPC, ni appeler ses interfaces — d’où des erreurs fréquentes : “Access denied”, “The RPC server is unavailable”, 0x80070005, etc. Windows Server 2022 durcit encore la couche DCOM (KB5004442), rendant la configuration initiale plus exigeante qu’auparavant.
Prérequis avant de commencer
- Droits administrateur sur le serveur OPC.
- Versions identiques (ou compatibles) de la pile OPC côté client et serveur, mises à jour après mars 2023 pour intégrer le dernier durcissement DCOM.
- Une adresse IP fixe (ou réservation DHCP) pour simplifier les règles pare‑feu.
- Un compte de service dédié au serveur OPC, doté des droits SeServiceLogonRight et Log on as a service.
Procédure détaillée de configuration DCOM
Étape | Action | Objectif |
---|---|---|
1 | Lancer DCOMCNFG (Win + R → dcomcnfg ) | Accéder à Services de composants |
2 | Ouvrir : Composants > Ordinateurs > Mon ordinateur > DCOM Config, puis localiser l’application serveur OPC | Repérer le CLSID/ProgID du serveur |
3 | Dans l’onglet Général, cocher « Exécuter cette application sur cet ordinateur » | Forcer l’exécution locale |
4 | Onglet Emplacement : laisser activée « Exécuter l’application sur cet ordinateur » | Éviter un lancement distant non contrôlé |
5 | Onglet Sécurité : • Autorisations de lancement et d’activation → Personnaliser > Modifier → ajouter groupes/comptes OPC, cocher Lancement local/distant & Activation locale/distance • Autorisations d’accès : même principe, cocher Accès local/distant | Accorder explicitement les droits aux comptes / services OPC |
6 | Onglet Identité : sélectionner le compte de service dédié (ou Utilisateur interactif pour un test local) | Définir le contexte d’exécution |
7 | Onglet Niveau d’authentification : choisir Connect (ou supérieur) | Garantir une authentification DCOM suffisante |
8 | Pare‑feu Windows : ouvrir TCP 135 + la plage dynamique 49152‑65535, ou définir une plage restreinte (ex. 6000‑6100) via :HKLM\Software\Microsoft\Rpc\Internet | Autoriser la conversation RPC/DCOM |
9 | Paramètres DCOM globaux (Services de composants > Propriétés de « Mon ordinateur » > Propriétés DCOM) : ✔ Activer DCOM ✔ Niveau d’authentification par défaut : Connect ✔ Usurpation par défaut : Identify | Cohérence des valeurs système |
10 | Redémarrer le service OPC (ou le serveur en cas de changement global) | Appliquer la nouvelle configuration |
Focus : restreindre proprement la plage de ports DCOM
Limiter les ports simplifie grandement l’ouverture pare‑feu ; voici un exemple de script PowerShell :
# Plage DCOM fixe 6000‑6100
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Rpc\Internet' `
-Name 'Ports' -PropertyType MultiString -Value ('6000-6100')
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Rpc\Internet' `
-Name 'PortsInternetAvailable' -PropertyType String -Value 'Y'
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Rpc\Internet' `
-Name 'UseInternetPorts' -PropertyType String -Value 'Y'
# Ouvrir la plage dans le pare‑feu
New-NetFirewallRule -DisplayName 'DCOM OPC 6000‑6100' `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 6000-6100
Pensez à désactiver ou à ajuster toute règle temporaire une fois la recette terminée.
Impact du durcissement DCOM (KB5004442)
Depuis le 14 mars 2023, Microsoft exige un niveau d’authentification renforcé ; si l’un de vos clients OPC date d’avant cette mise à jour, la connexion risque d’échouer. Deux approches :
- Mettre à jour le client OPC : solution pérenne.
- À titre transitoire, désactiver le durcissement en créant
RequireIntegrityActivationAuthenticationLevel=0
sousHKLM\SOFTWARE\Microsoft\Ole\AppCompat
. Ne laissez jamais cette clé en production ; retirez-la dès que le client est mis à jour.
Validation de la configuration
Tests locaux
- Lancez un OPC Test Client sur le même serveur ; s’il se connecte, la couche DCOM fonctionne localement.
- Dans l’Observateur d’événements : Applications et services > Journal Microsoft > Windows > DCOM, vérifiez l’absence d’erreurs 10016/10036.
Tests distants
- Depuis un poste client, ouvrez les ports avec
telnet <ip_serveur> 135
puis un port de la plage dynamique configurée. - Lancez l’outil OPCEnum pour vérifier la résolution des ProgIDs à travers le réseau.
- Connectez‑vous via l’OPC Test Client et surveillez le trafic dans l’Event Viewer du serveur : toute erreur doit disparaître.
Dépannage avancé
Symptôme | Piste de résolution | Commentaires |
---|---|---|
Erreur 0x80070005 (E_ACCESSDENIED) | Revérifiez onglet Sécurité (lancement/accès) et appartenance au groupe OPCUsers | Souvent causé par un compte de service mal ajouté |
RPC server unavailable | Ports 135 ou plage RPC fermés, ou résolution DNS incorrecte | Procéder à un ping puis telnet |
Connexion OK locale, KO distante | Pare‑feu tiers ou IPS bloquant les ports dynamiques | Contrôler la politique antivirus/EDR |
Erreur 10036 dans le journal DCOM | Client non mis à jour vis‑à‑vis du durcissement KB5004442 | Appliquer la clé temporaire ou patcher le client |
Sécurité et bonnes pratiques
- Principe du moindre privilège : n’accordez qu’aux comptes nécessaires les droits de lancement et d’accès.
- Regroupez les utilisateurs dans un groupe AD (ex. OPCUsers) pour simplifier la maintenance des ACL.
- Tracez les accès : activez l’audit Logon / Logoff et Object Access pour les événements COM.
- Documentez toute modification : capture d’écran des ACL, export du registre avant/après, etc.
- Privilégiez OPC UA pour les nouveaux projets ; DCOM reste requis pour le legacy, mais OPC UA élimine ces problématiques réseau tout en chiffrant nativement les échanges.
Automatiser la configuration avec PowerShell
Pour déployer rapidement le même paramétrage sur plusieurs serveurs 2022, vous pouvez encapsuler les actions DCOM dans un script PowerShell utilisant Set-Permission
(module Carbon) ou SetACL.exe
. Exemple simplifié :
$app = Get-CimInstance -ClassName Win32_DCOMApplicationSetting `
| Where-Object { $_.Description -like '*MonServeurOPC*' }
# Activer l’exécution locale
$app.LocalService = 'OPCServiceAccount'
$app.ActivationUseRemote = $false
Set-CimInstance -InputObject $app
# Droits de lancement/accès via DCOMPerm.exe (Windows SDK) ou SetACL
Un tel script, versionné dans Git, garantit la traçabilité et réduit les erreurs humaines.
FAQ rapide
Faut‑il vraiment redémarrer le serveur après chaque changement ?
Pas toujours : une simple relance du service OPC suffit si vous n’avez modifié que l’application. En revanche, après modification des paramètres DCOM globaux ou de la plage RPC, un redémarrage complet s’impose.
Puis‑je utiliser une connexion VPN pour sécuriser DCOM ?
Oui. Un tunnel VPN chiffré réduit l’exposition réseau, mais n’annule pas la nécessité d’ouvrir les ports DCOM à l’intérieur du tunnel.
OPC Enum doit‑il rester activé ?
Pour des raisons de sécurité, certains administrateurs désinstallent OPCEnum et spécifient le CLSID directement dans le client. C’est possible, mais plus complexe à maintenir. Gardez OPCEnum si votre environnement le permet et limitez les droits d’accès via DCOM.
Conclusion
Une configuration DCOM rigoureuse demeure la clé du succès pour tout projet OPC Classic sur Windows Server 2022. En appliquant les étapes détaillées ci‑dessus — création d’un compte de service, réglage minutieux des ACL, restriction de la plage de ports et vérification post‑KB5004442 — vous éliminerez 90 % des problèmes de connexion. Documentez chaque action, automatisez‑la dès que possible et prévoyez à moyen terme la migration vers OPC UA afin de tirer parti d’une couche de transport moderne, sécurisée et indépendante de DCOM.