Erreur GPO « RPC server is unavailable » / « Remote procedure call was cancelled » : causes, ports et correctifs fiables

Lors d’un déclenchement à distance de mise à jour de stratégie de groupe, des échecs avec « RPC server is unavailable » ou « Remote procedure call was cancelled » pointent presque toujours vers un problème d’accès RPC. Voici un guide pratique, précis et actionnable pour rétablir la mise à jour GPO à distance.

Sommaire

Vue d’ensemble de la question

Depuis la Group Policy Management Console (GPMC), l’option Group Policy Update crée et exécute à distance une tâche planifiée immédiate qui lance gpupdate sur la machine cible. Cette opération s’appuie sur le couple RPC/DCOM : le mappeur de points de terminaison (EPMAP) écoute sur 135/TCP, puis le service invoqué (Planificateur de tâches, WMI, etc.) alloue un port dynamique RPC dans la plage par défaut 49152–65535/TCP. Si l’un de ces éléments (services, ports, DNS, authentification, profil pare-feu) est défaillant, l’appel échoue et la GPO n’est pas rafraîchie à distance.

Pourquoi ces erreurs apparaissent

Comprendre brièvement le chemin technique aide à prioriser les vérifications :

  • Résolution de nom : la console doit résoudre le FQDN de la cible en IP correcte. Les incohérences DNS ou des suffixes erronés provoquent des connexions RPC vers la mauvaise adresse.
  • Handshake RPC : l’émetteur contacte 135/TCP sur la cible, récupère le port dynamique du service visé, puis se connecte à ce port éphémère.
  • Planificateur à distance : GPMC utilise DCOM pour demander au service Task Scheduler de créer une tâche immédiate exécutant gpupdate (côté Ordinateur, et optionnellement côté Utilisateur). La tâche s’exécute, puis est supprimée.
  • Authentification : l’opération nécessite un compte disposant d’administration locale sur la cible et une heure synchronisée (Kerberos).
  • Profil de pare-feu : si la carte réseau est en profil Public, de nombreuses règles d’administration à distance sont désactivées par défaut.

Symptômes typiques

  • Erreur « RPC server is unavailable » (souvent 0x800706BA) : impossible d’atteindre 135/TCP, ou le port RPC dynamique retour n’est pas joignable, ou DNS résout mal.
  • Erreurs « Remote procedure call failed/cancelled » (codes COM/RPC variables) : service cible joignable mais connexion interrompue (filtrage intermédiaire, time-out, profil pare-feu inadapté, DCOM incomplet).

Causes probables

Les plus fréquentes :

  • Services requis non opérationnels sur la cible : Remote Procedure Call (RPC), RPC Endpoint Mapper, DCOM Server Process Launcher, Task Scheduler.
  • Pare-feu bloquant l’EPMAP 135/TCP et/ou la plage 49152–65535/TCP (RPC dynamiques). SMB 445/TCP peut aussi intervenir selon les opérations associées.
  • DNS défaillant / incohérences FQDN/NetBIOS, entrées hosts obsolètes, suffixes mal configurés.
  • Connectivité (routage, VPN, NAT, ACL inter‑VLAN) interrompue ou instable.
  • Authentification/permissions insuffisantes, désynchronisation horaire cassant Kerberos.
  • Profil pare-feu inadapté (profil Public actif) désactivant les règles d’administration.

Autres causes possibles :

  • Durcissements locaux ou GPO modifiant les règles DCOM/COM+, WMI, ou désactivant Remote Scheduled Tasks Management.
  • Antivirus/EDR avec politiques de network lockdown sur ports éphémères.
  • Vieilles machines (XP/2003) : non prises en charge. Minimum Windows Vista/Server 2008 (Planificateur v2.0).

Parcours de remédiation recommandé

  1. Valider la joignabilité de base ping <nom_fqdn> ping <adresse_ip> Test-NetConnection <nom_fqdn> -Port 135 Si 135/TCP est fermé, corrigez le pare-feu/ACL avant d’aller plus loin. Un ping négatif ne disqualifie pas la cible si ICMP est bloqué, mais 135/TCP doit répondre.
  2. Contrôler les services essentiels (sur la cible) Get-Service RpcSs,RpcEptMapper,DcomLaunch,Schedule | Format-Table Name,Status,StartType Tous doivent être Running et en Automatic. Si l’un n’est pas démarré, corrigez. Ne tentez pas d’arrêter RpcSs ; redémarrez la machine si nécessaire.
  3. Ouvrir les règles pare-feu requises (cible) # Groupes de règles essentiels (noms en anglais) Get-NetFirewallRule -DisplayGroup "Remote Scheduled Tasks Management" | Enable-NetFirewallRule Get-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" | Enable-NetFirewallRule Get-NetFirewallRule -DisplayGroup "Remote Event Log Management" | Enable-NetFirewallRule Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" | Enable-NetFirewallRule Get-NetFirewallRule -DisplayGroup "COM+ Network Access" | Enable-NetFirewallRule # Vérifier le profil actif Get-NetConnectionProfile | Format-Table Name, NetworkCategory, IPv4Connectivity Sur des OS en français, les DisplayGroup peuvent être localisés (ex. Gestion à distance des tâches planifiées, Journaux des événements distants). Utilisez Get-NetFirewallRule | Select-Object -Unique DisplayGroup pour lister les noms exacts. La plupart des règles sont valides pour le profil Domaine. Si le réseau est en Public, ces règles peuvent ne pas s’appliquer. Corrigez la détection de domaine (connectivité au DC, profils multiples, VLAN d’administration) ou activez temporairement des règles équivalentes All profils pour tester.
  4. Valider DNS et nommage nslookup <nom_fqdn> Resolve-DnsName <nom_fqdn> -Type A,AAAA ipconfig /displaydns | more # Éviter toute entrée statique non désirée : Get-Content $env:SystemRoot\System32\drivers\etc\hosts L’adresse retournée doit être exactement celle de la cible. Les collisions d’entrées (multi‑A, résidus DHCP, enregistrements vieux) sont source d’erreurs aléatoires « cancelled ».
  5. Vérifier l’authentification et le canal sécurisé # Sur la cible Test-ComputerSecureChannel -Verbose # Depuis la cible ou un DC nltest /sc\_verify:\ # Contrôle et correction d'heure (NTP/Kerberos) w32tm /query /status w32tm /resync /nowait Utilisez un compte administrateur local sur la cible ou un compte disposant d’un groupe équivalent (Domain Admins, Helpdesk Admins délégués, etc.). Un écart d’horloge > 5 minutes casse Kerberos et produit des erreurs RPC/COM difficilement interprétables.
  6. Relancer la mise à jour GPO # Depuis GPMC : Group Policy Update (ciblage par OU) # En PowerShell (requiert les mêmes ouvertures RPC que GPMC) : Invoke-GPUpdate -Computer <NomCible> -Target Computer -Force # En local sur la cible (isole le problème RPC) gpupdate /force Si gpupdate /force marche en local mais pas à distance, vous avez confirmé un problème d’accès RPC (pare‑feu/ACL/profil).
  7. Diagnostiquer le trafic si l’échec persiste # Tests de ports explicites Test-NetConnection <nom_fqdn> -Port 445 # Outils optionnels : # rpcping -t ncacn_ip_tcp -s <cible> -p 135 # portqry -n <cible> -e 135 -p TCP # Journaliser côté cible # Observateur d’événements > Applications et services > Microsoft > Windows > GroupPolicy > Operational # Observateur d’événements > Journaux Windows > Système (RPC/DCOM/Netlogon) <p>Consultez aussi <em>Task Scheduler &gt; Microsoft &gt; Windows &gt; GroupPolicy</em> pour voir le passage de la tâche <em>GPUpdate</em> (état, dernier résultat, horodatage).</p>

Mémo : ports, services et prérequis

ÉlémentDétailsPourquoi c’est requis
RPC Endpoint Mapper135/TCPDécouverte du port RPC dynamique du service cible.
RPC dynamiques49152–65535/TCP (défaut)Canal de données entre l’émetteur et le service (Planificateur, WMI…).
SMB445/TCPPeut intervenir pour accès aux partages/retours, journaux, scripts.
ServicesRpcSs, RpcEptMapper, DcomLaunch, SchedulePipeline RPC/DCOM et exécution de la tâche gpupdate.
OS cibleWindows Vista/Server 2008 ou +Planificateur v2.0 requis pour l’exécution immédiate à distance.

Jeux de règles pare‑feu utiles

Groupe de règles (EN/FR)Ports/ProtocolesUsage
Remote Scheduled Tasks Management / Gestion à distance des tâches planifiées135/TCP + RPC dyn.Création/gestion de tâches côté cible pour déclencher gpupdate.
Windows Management Instrumentation (WMI)135/TCP + RPC dyn.Inventaire/diagnostic distant ; utile pour tests et débogage.
Remote Event Log Management / Journaux des événements distants135/TCP + RPC dyn.Lecture des journaux pour confirmer l’exécution de la GPO.
COM+ Network Access (DCOM-In)135/TCP + RPC dyn.Transport DCOM nécessaire au Planificateur et autres COM serveurs.
File and Printer Sharing (SMB-In)445/TCPOpérations annexes (scripts, diagnostics, copies).

Diagnostic DNS et nommage

Les messages « unavailable » surviennent souvent alors que le port 135 est ouvert, mais que l’émetteur vise la mauvaise IP. Points clés :

  • Contrôlez le FQDN utilisé par GPMC et sa résolution (nslookup, Resolve-DnsName).
  • Vérifiez le suffixe DNS de l’émetteur (ipconfig /all) et la présence d’entrées hosts résiduelles.
  • Nettoyez d’anciennes entrées A/PTR, en particulier après un re‑image ou un changement d’IP.
  • Évitez NetBIOS seul ; préférez toujours le FQDN de la machine.

Authentification, Kerberos et canal sécurisé

Un échec Kerberos peut ressembler à une panne RPC. À vérifier :

  • Le compte utilisé a des droits d’admin local sur la cible (directement ou via groupes).
  • Le canal sécurisé machine‑domaine est valide : Test-ComputerSecureChannel -Verbose.
  • La synchro NTP est correcte (w32tm /query /status). Corrigez tout écart > 5 minutes.

Profil de pare‑feu et posture de l’interface réseau

Les règles d’administration à distance sont, par défaut, autorisées en profil Domaine et souvent désactivées en Public. Or, une machine peut basculer en Public si elle perd la détection de domaine (VPN sans NRPT, filtrage DC, jonction partielle).

Get-NetConnectionProfile | Format-Table Name, InterfaceAlias, NetworkCategory
# Sur un poste non joint au domaine, on peut basculer en Private :
# Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private
# (Sur un poste de domaine, le profil Domaine est contrôlé par la détection DC.)

Pour tester rapidement, activez temporairement les règles critiques sur All profils (ou créez une GPO dédiée appliquée aux machines de gestion) ; puis revenez à une configuration durcie.

Scénarios particuliers et contournements

  • Segments/VPN/NAT : assurez l’ouverture de 135/TCP + plage dynamique RPC sur toute la chaîne (pare‑feu intermédiaires, ACL inter‑VLAN). En environnement très filtré, envisagez de restreindre la plage RPC à quelques centaines de ports et d’ouvrir exactement cette plage.
  • Restriction de plage RPC côté cible (avancé) : possible via Registre HKLM\SOFTWARE\Microsoft\Rpc\Internet (Ports en REG_MULTI_SZ, PortsInternetAvailable=Y, UseInternetPorts=Y), puis redémarrage. À n’appliquer qu’avec une gouvernance réseau claire.
  • WinRM/PowerShell Remoting comme alternative : si RPC/COM est bloqué mais WinRM ouvert (5985/5986), on peut exécuter gpupdate à distance : Invoke-Command -ComputerName <cible> -ScriptBlock { gpupdate /force } -Credential (Get-Credential) Ce n’est pas GPMC, mais c’est un moyen de contourner temporairement un blocage RPC.
  • Validation côté DC : si gpupdate /force réussi en local, le pipeline GPO (SYSVOL, LDAP) est OK ; la panne est bien entre GPMC et la cible (RPC/pare‑feu/ACL).

Exemples de scripts prêts à l’emploi

Audit express d’une machine cible :

function Test-GPRemoteUpdate {
  param([Parameter(Mandatory)] [string]$ComputerName)

\$report = \[ordered]@{
ComputerName = \$ComputerName
PingFQDN     = \$false
TCP135       = \$false
TCP445       = \$false
ServicesOK   = \$false
DnsOK        = \$false
TimeOK       = \$false
Profile      = \$null
}

try { \$report.PingFQDN = Test-Connection -Count 1 -ComputerName \$ComputerName -Quiet } catch {}
try { \$report.TCP135   = (Test-NetConnection \$ComputerName -Port 135).TcpTestSucceeded } catch {}
try { \$report.TCP445   = (Test-NetConnection \$ComputerName -Port 445).TcpTestSucceeded } catch {}

try {
\$svc = Invoke-Command -ComputerName \$ComputerName -ScriptBlock {
Get-Service RpcSs,RpcEptMapper,DcomLaunch,Schedule | Select-Object Name,Status,StartType
} -ErrorAction Stop
\$report.ServicesOK = @(\$svc | ?{ \$*.Status -eq 'Running' -and \$*.StartType -match 'Auto' }).Count -eq 4
} catch {}

try {
\$dns = Resolve-DnsName \$ComputerName -ErrorAction Stop
\$report.DnsOK = \$dns -ne \$null
} catch {}

try {
\$time = Invoke-Command -ComputerName \$ComputerName -ScriptBlock { w32tm /query /status } -ErrorAction Stop
\$report.TimeOK = \$time -match 'Stratum|NTP'
} catch {}

try {
\$profile = Invoke-Command -ComputerName \$ComputerName -ScriptBlock {
Get-NetConnectionProfile | Select-Object -First 1 -ExpandProperty NetworkCategory
}
\$report.Profile = \$profile
} catch {}

\[pscustomobject]\$report
}

Utilisation : Test-GPRemoteUpdate -ComputerName PC‑001 pour obtenir un état synthétique des prérequis.

Activation ciblée des groupes de règles :

$groups = @(
  "Remote Scheduled Tasks Management",
  "Windows Management Instrumentation (WMI)",
  "Remote Event Log Management",
  "COM+ Network Access",
  "File and Printer Sharing"
)
$groups | ForEach-Object {
  Get-NetFirewallRule -DisplayGroup $_ -ErrorAction SilentlyContinue | Enable-NetFirewallRule
}

Lecture et interprétation des journaux

  • GroupPolicy/Operational : confirme le lancement et le résultat du traitement de stratégie (côté cible). Recherchez les événements autour de l’horodatage de votre tentative.
  • Système : messages RPC/DCOM/Netlogon, time‑outs, refus d’accès, erreurs d’authentification.
  • Planificateur de tâches : vérifiez l’apparition et l’exécution de la tâche GPUpdate dans Microsoft → Windows → GroupPolicy.

Bonnes pratiques de durcissement sans casser RPC

  • Segmentez vos flux d’administration (VLAN d’admin) plutôt que d’ouvrir toute la plage RPC entre tous les réseaux.
  • Serrez la plage RPC à un intervalle restreint (via Registre) uniquement si vous maîtrisez l’impact et si l’équipe réseau ouvre précisément cette plage.
  • GPO dédiée : créez une GPO qui active Uniquement les groupes de règles nécessaires sur les hôtes cibles (filtre sécurité/wmi), plutôt qu’une activation générale.
  • Surveillance : placez des alertes sur GroupPolicy/Operational et sur les échecs RPC/DCOM récurrents pour détecter tôt une régression.

Check‑list opérationnelle

  • [ ] Cible joignable par nom et par IP
  • [ ] 135/TCP ouvert et ports RPC dynamiques non filtrés bout‑à‑bout
  • [ ] Services RPC/DCOM/Planificateur en état Running
  • [ ] DNS correct (FQDN → IP attendue) et heure synchronisée
  • [ ] Règles pare‑feu d’administration à distance activées
  • [ ] Compte utilisé avec droits d’admin sur la cible

Astuces supplémentaires

  • Sur des réseaux segmentés/VPN, faites valider par l’équipe réseau les ACL inter‑VLAN et l’ouverture conjointe 135/TCP + plage RPC.
  • Si une politique locale/GPO durcit le pare‑feu, déployez une GPO dédiée qui active spécifiquement les groupes de règles utiles, ciblée sur les machines concernées.
  • Pour isoler GPMC ↔︎ cible vs DC ↔︎ cible, exécutez gpupdate /force directement sur la machine : si cela réussit, le souci vient de l’accès distant RPC (et non du moteur GPO).

Questions fréquentes

Faut‑il ouvrir SMB 445/TCP pour « Group Policy Update » ?
Pas strictement pour la création de la tâche à distance (qui repose sur RPC/DCOM). Toutefois, en pratique, certaines opérations annexes (scripts d’ouverture de session, collecte de journaux) nécessitent 445/TCP. Pour un diagnostic exhaustif, testez aussi 445/TCP.

Peut‑on remplacer GPMC par PowerShell uniquement ?
Oui : Invoke-GPUpdate effectue le même type d’appel (RPC/DCOM + tâche planifiée). Les ouvertures réseau requises sont identiques.

Quand l’erreur « cancelled » survient‑elle ?
Souvent lorsque la connexion initiale réussit (135/TCP OK) mais que le port dynamique attribué est inaccessible (filtrage, NAT non symétrique, time‑out), ou encore lorsque le profil pare‑feu est Public.

En bref

Les échecs « RPC server is unavailable » / « Remote procedure call was cancelled » lors d’un Group Policy Update proviennent quasi toujours d’un blocage réseau/pare‑feu, d’un DNS défaillant, ou de services requis à l’arrêt. En suivant le parcours pas‑à‑pas (135/TCP, ports RPC dynamiques, groupes de règles Remote Scheduled Tasks Management, services et DNS), vous restaurez un déclenchement GPO à distance fiable.


Référence express des commandes

# 1) Ping et RPC mapper
ping <nom_fqdn>
Test-NetConnection <nom_fqdn> -Port 135

# 2) Services essentiels

Get-Service RpcSs,RpcEptMapper,DcomLaunch,Schedule | ft Name,Status,StartType

# 3) Règles pare-feu utiles

Get-NetFirewallRule -DisplayGroup "Remote Scheduled Tasks Management" | Enable-NetFirewallRule
Get-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" | Enable-NetFirewallRule
Get-NetFirewallRule -DisplayGroup "Remote Event Log Management" | Enable-NetFirewallRule
Get-NetFirewallRule -DisplayGroup "COM+ Network Access" | Enable-NetFirewallRule
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" | Enable-NetFirewallRule

# 4) DNS et nommage

nslookup \
Resolve-DnsName \ -Type A,AAAA

# 5) Authent et synchro

Test-ComputerSecureChannel -Verbose
nltest /sc\_verify:\
w32tm /query /status
w32tm /resync /nowait

# 6) Mise à jour GPO

Invoke-GPUpdate -Computer \ -Target Computer -Force
gpupdate /force

# 7) Ports complémentaires et logs

Test-NetConnection \ -Port 445

# Observateur d’événements > Microsoft > Windows > GroupPolicy > Operational

# Observateur d’événements > Système (RPC/DCOM/Netlogon)

Modèle d’analyse rapide

  1. Le FQDN résout‑il l’IP attendue ? Oui → Étape suivante. Non → corriger DNS.
  2. Test-NetConnection -Port 135 réussi ? Oui → Étape suivante. Non → ouvrir 135/TCP.
  3. Règles Remote Scheduled Tasks Management activées et profil Domaine actif ? Oui → Étape suivante. Non → activer/corriger profil.
  4. Services RpcSs/RpcEptMapper/DcomLaunch/Schedule en Running ? Oui → Étape suivante. Non → corriger services.
  5. Kerberos et canal sécurisé valides ? Oui → Étape suivante. Non → resynchroniser l’heure/vérifier l’appartenance au domaine.
  6. Invoke-GPUpdate ou GPMC fonctionne ? Oui → résolu. Non → ouvrir la plage RPC dynamique et réessayer.

Résumé opérationnel

  • Ouvrir 135/TCP et la plage RPC dynamique (par défaut 49152–65535/TCP) bout‑à‑bout.
  • Activer les groupes de règles : Remote Scheduled Tasks Management, WMI, Remote Event Log Management, COM+ Network Access, File and Printer Sharing.
  • Garantir services RpcSs, RpcEptMapper, DcomLaunch, Schedule en Running/Automatic.
  • Assainir DNS et synchronisation horaire.
  • Utiliser gpupdate local pour isoler GPMC vs machine, et Invoke-GPUpdate pour automatiser.

En bref : alignez DNS, RPC, pare‑feu, services et Kerberos, et la mise à jour GPO à distance redeviendra prévisible et robuste.

Sommaire