Windows Server : restaurer un contrôleur de domaine sans USN rollback (repadmin, PDC Emulator)

Procédure éprouvée pour remettre en service un contrôleur de domaine restauré sans polluer la forêt : on bloque toute réplication sortante du DC, on ne laisse entrer que le PDC Emulator, on resynchronise proprement, puis on réactive la topologie en toute sécurité.

Sommaire

Contexte et problème à résoudre

  • Un contrôleur de domaine (DC) Windows Server a subi un écran bleu FLTMGR.sys.
  • La machine a été restaurée depuis une sauvegarde âgée de 10 jours et redémarrée hors réseau ; entre‑temps, de nouveaux objets Active Directory (utilisateurs, groupes, attributs…) ont été créés ailleurs dans la forêt.
  • Si le DC restauré est reconnecté sans précaution, il initiera une réplication « en retard » susceptible de provoquer un USN rollback, de répliquer des métadonnées obsolètes et d’empoisonner jusqu’à 15 autres DC.

Objectif

  • Bloquer toute réplication sortante depuis le DC restauré.
  • N’autoriser qu’une réplication entrante ciblée depuis le PDC Emulator vers ce DC afin de le remettre à jour sans risque.

Plan d’intervention rapide (résumé)

ÉtapeCommande / actionEffet recherché
1. Désactiver la réplication sortante du DC restaurérepadmin /options <Nom_DC_restauré> +DISABLE_OUTBOUND_REPLEmpêche l’envoi de mises à jour obsolètes.
2. (Facultatif) Bloquer la réplication entrante sur les DC partenaires initiauxrepadmin /options <Nom_DC_partenaire> +DISABLE_INBOUND_REPLBarrière de sécurité supplémentaire.
3. Vérifier la topologierepadmin /showrepl ou console Sites et services ADConfirmer que seul le PDC est source autorisée pour le DC restauré.
4. Forcer la réplication du PDC vers le DC restaurérepadmin /syncall <Nom_DC_restauré> /APeD
ou
repadmin /replicate <Nom_DC_restauré> <PDC> <NC> /force (par partition)
Met à jour l’annuaire sans attendre le planning normal.
5. Contrôler les journaux d’événementsObservateur d’événements → Directory ServiceDétecter les erreurs : USN rollback (2095), objets persistants (1988/1989), etc.
6. Réactiver la réplication normalerepadmin /options <Nom_DC_restauré> -DISABLE_OUTBOUND_REPL puis, si appliqué, -DISABLE_INBOUND_REPL sur les autres DCLe DC restauré réintègre la topologie.

Pourquoi cette méthode est sûre

Active Directory résout les conflits via des version numbers d’attributs, des horodatages et des vecteurs UTD (Up‑To‑Dateness). Mais une restauration « en arrière » peut déclencher un USN rollback : les partenaires pensent déjà avoir reçu certains USN, ce qui casse la confiance et peut stopper ou corrompre la réplication. En désactivant l’outbound sur le DC restauré, on élimine le risque qu’il pousse des changements anciens. En ne laissant entrer que le PDC Emulator, on garantit un flux de données propre, ré-ancrant le DC restauré dans l’état courant de la forêt, avant de rouvrir la topologie.

Procédure détaillée

Prérequis et garde‑fous

  • Le DC restauré est démarré hors réseau (ou isolé par pare‑feu) et sain au niveau OS.
  • L’heure est synchronisée (Kerberos : dérive < 5 minutes). Vérifier via w32tm /query /status.
  • Les services NTDS et DNS démarrent sans erreurs critiques.
  • La restauration provient d’un backup supporté (VSS/System State). Éviter toute restauration par instantané hyperviseur qui favorise l’USN rollback.

Identifier le PDC Emulator

Sur n’importe quel DC :

netdom query fsmo

ou en PowerShell :

Import-Module ActiveDirectory
(Get-ADDomain).PDCEmulator

Étape 1 — Bloquer toute réplication sortante du DC restauré

Sur un DC quelconque (ou en session locale sur le DC restauré), exécutez :

repadmin /options &lt;Nom_DC_restauré&gt; +DISABLE_OUTBOUND_REPL

Alternative GUI : Sites et services Active Directory → Site → Serveurs → <Nom_DC_restauré> → NTDS Settings (clic droit) → Disable Outbound Replication.

Étape 2 — (Optionnel) Empêcher provisoirement les partenaires de recevoir

Si vous voulez une double ceinture, bloquez l’inbound sur les anciens partenaires du DC restauré (optionnel, car l’outbound est déjà coupé) :

repadmin /options &lt;Nom_DC_partenaire&gt; +DISABLE_INBOUND_REPL

Vous pouvez aussi isoler le DC restauré au pare‑feu (RPC/135, LDAP/389, LDAPS/636, Kerberos/88, SMB/445, etc.) en n’autorisant que le PDC Emulator pendant la remise à niveau.

Étape 3 — Vérifier la topologie et les connexions

  • repadmin /showrepl <Nom_DC_restauré> /verbose /all /intersite pour l’état des partenaires et des partitions (Schema, Configuration, Domaine, DNS).
  • Dans Sites et services AD, vérifiez les Connection objects sous NTDS Settings. Si besoin, supprimez ou désactivez temporairement les connexions entrantes autres que le PDC vers le DC restauré.

Étape 4 — Forcer la réplication entrante depuis le PDC

Deux approches, au choix :

Approche A : synchronisation globale

Déclencher une synchronisation complète de toutes les partitions sur le DC restauré :

repadmin /syncall &lt;Nom_DC_restauré&gt; /APeD
  • /A : toutes les partitions, /P : propager, /e : inter‑sites, /D : DN complets.

Approche B : réplication ciblée par partition (recommandée en environnement sensible)

Répétez pour chaque Naming Context (NC) :

repadmin /replicate &lt;Nom_DC_restauré&gt; &lt;PDC&gt; "CN=Schema,CN=Configuration,DC=exemple,DC=local" /force
repadmin /replicate &lt;Nom_DC_restauré&gt; &lt;PDC&gt; "CN=Configuration,DC=exemple,DC=local" /force
repadmin /replicate &lt;Nom_DC_restauré&gt; &lt;PDC&gt; "DC=exemple,DC=local" /force
repadmin /replicate &lt;Nom_DC_restauré&gt; &lt;PDC&gt; "DC=DomainDnsZones,DC=exemple,DC=local" /force
repadmin /replicate &lt;Nom_DC_restauré&gt; &lt;PDC&gt; "DC=ForestDnsZones,DC=exemple,DC=local" /force

Astuce : adaptez exemple.local à votre domaine. En multi‑domaines, répétez pour chaque domaine concerné.

Étape 5 — Contrôler les journaux et la cohérence

  • Observateur d’événements → Directory Service : traquez notamment :
    • 2095 (USN rollback détecté),
    • 1988/1989 (objets persistants/lingering),
    • 2042 (dépassement tombstoneLifetime),
    • Événements DFSR pour SYSVOL, ex. 2213 (suspension après arrêt brutal).
  • Vérifiez la vector clock et les latences : repadmin /showvector /latency <Nom_DC_restauré> repadmin /showutdvec <Nom_DC_restauré> "DC=exemple,DC=local" repadmin /showrepl <Nom_DC_restauré> /errorsonly
  • Contrôle global : dcdiag /c /v /e /fix.

Étape 6 — Confirmer SYSVOL et DNS

  • SYSVOL/DFSR : backlog nul entre PDC et DC restauré : dfsrdiag backlog /rgname:"Domain System Volume" /rfname:"SYSVOL Share" /smem:<PDC> /rmem:<Nom_DC_restauré>
  • Partages visibles : net share doit afficher SYSVOL et NETLOGON.
  • DNS : les zones AD‑intégrées sont à jour (console DNS ou dnscmd /enumzones).

Étape 7 — Réactiver la réplication et la topologie

repadmin /options &lt;Nom_DC_restauré&gt; -DISABLE_OUTBOUND_REPL

Si vous aviez bloqué l’inbound sur d’autres DC :

repadmin /options &lt;Nom_DC_partenaire&gt; -DISABLE_INBOUND_REPL

Dans Sites et services AD, restaurez/validez les Connection objects automatiques (KCC). Lancez un Check Replication Topology si nécessaire.

Scripts réutilisables (copier‑coller)

PowerShell : réplication sûre depuis le PDC

# Variables
$Restored = "NOM-DC-RESTAURE"
Import-Module ActiveDirectory
$Pdc = (Get-ADDomain).PDCEmulator
$DomainDN = (Get-ADDomain).DistinguishedName
$ConfigNC = (Get-ADRootDSE).configurationNamingContext
$SchemaNC = (Get-ADRootDSE).schemaNamingContext
$DomainDNS = "DC=DomainDnsZones,$DomainDN"
$ForestDNS = "DC=ForestDnsZones,$((Get-ADRootDSE).rootDomainNamingContext)"

# 1) Bloquer l'outbound

cmd /c "repadmin /options $Restored +DISABLE_OUTBOUND_REPL"

# 2) Répliquer en entrée depuis le PDC (toutes les partitions)

$NCs = @($SchemaNC,$ConfigNC,$DomainDN,$DomainDNS,$ForestDNS)
foreach($nc in $NCs){
cmd /c "repadmin /replicate $Restored $Pdc `"$nc`" /force"
}

# 3) Vérifications

cmd /c "repadmin /showrepl $Restored /errorsonly"
cmd /c "repadmin /showvector /latency $Restored"

# 4) Réactiver l'outbound

cmd /c "repadmin /options $Restored -DISABLE_OUTBOUND_REPL" 

PowerShell : lister rapidement les partenaires d’un DC

Import-Module ActiveDirectory
$Server="NOM-DC-RESTAURE"
Get-ADReplicationPartnerMetadata -Target $Server -Scope Server |
  Select-Object Server, Partner, Partition, InboundConnections, OutboundConnections

Bonnes pratiques complémentaires

  1. Restauration authoritative ? Si des objets créés sur le DC restauré entre la sauvegarde et le crash sont critiques, effectuez une authoritative restore ciblée (via DSRM et ntdsutil) avant la resynchronisation ; sinon ils seront perdus lors de l’écrasement par les partenaires.
  2. Contrôle USN et GUID : vérifiez cohérence des InvocationID et des UTD vectors. Un rollback non détecté bloque parfois la réplication ; repadmin /showutdvec et /showvector /latency aident à confirmer l’intégrité avant réouverture.
  3. Durée < tombstoneLifetime : ne laissez pas le DC isolé au‑delà du tombstoneLifetime (par défaut ~180 jours). Au‑delà, envisagez un nettoyage de métadonnées et une réinstallation du rôle.
  4. Sauvegarde rythmée : conservez au moins un System State quotidien. Plus le delta est court, plus la remise à niveau est rapide et moins risquée.
  5. Surveillance post‑remise :
    • Vérifiez toutes les partitions (Schema, Configuration, Domaine, DNS).
    • Contrôlez SYSVOL/DFSR : dfsrdiag backlog doit revenir à 0.
    • Testez la création d’un utilisateur et d’un groupe puis la convergence sur tous les DC.
    • Confirmez que Strict Replication Consistency est activé (par défaut depuis 2003 SP1).

Tableau de diagnostic : événements clés et actions

ID d’événementSourceSymptômeAction recommandée
2095NTDS ReplicationUSN rollback détectéMaintenir l’outbound désactivé, répliquer uniquement depuis PDC, vérifier InvocationID et vector clocks.
1988/1989NTDS ReplicationObjets persistants (lingering)Nettoyage des objets persistants, s’assurer de Strict Replication Consistency, relancer réplication.
2042NTDS ReplicationTombstoneLifetime dépasséDésinstaller/rebâtir le DC ; réplication « promiscuous » à éviter ; nettoyage de métadonnées.
2213DFSRSYSVOL en pause après arrêt brutalValider la cohérence, lever la suspension (WMI/DFSR) et suivre le backlog jusqu’à 0.

Check‑list de validation avant réouverture

  • Réplication AD : repadmin /showrepl <Nom_DC_restauré> /errorsonlyaucune erreur.
  • Latence : repadmin /showvector /latency → latences dans la norme du site.
  • DNS : zones int&eacutégrées AD synchronisées, résolutions directes et inverses OK.
  • SYSVOL : backlog DFSR à 0, partages SYSVOL/NETLOGON présents.
  • Kerberos/NTP : dérive < 5 min.
  • Événements : pas de 2095/1988/1989 récents.
  • Rôles FSMO : PDC identifié et joignable (netdom query fsmo).

FAQ rapide

Puis‑je simplement rebrancher le DC restauré ?
Non. Sans désactiver l’outbound, vous risquez d’émettre des métadonnées obsolètes et de créer des objets persistants chez les partenaires.

Dois‑je toujours faire une restauration authoritative ?
Non. Un authoritative restore n’est utile que pour promouvoir quelques objets choisis. Par défaut, laissez les objets « nouveaux » créés ailleurs écraser les anciens.

Et si la réplication échoue malgré tout ?
Contrôlez DNS, l’heure, l’InvocationID, les ports RPC/LDAP, et les événements. En dernier recours, retirez le DC (désinstallation ADDS), faites un nettoyage de métadonnées, puis réinstallez.

Résultat obtenu

  • Aucune propagation de données obsolètes grâce à +DISABLE_OUTBOUND_REPL.
  • Le DC restauré a été remis à niveau par réplication entrante depuis le PDC Emulator uniquement.
  • Réintégration dans la topologie sans impact pour les autres DC de la forêt.

Annexe : ports utiles pour l’isolation temporaire

ServicePortRemarque
RPC Endpoint MapperTCP 135Nécessaire aux connexions DCE/RPC (replication).
LDAP / LDAPSTCP/UDP 389, TCP 636Annuaire et découverte.
KerberosTCP/UDP 88Authentification AD.
SMBTCP 445SYSVOL/NETLOGON.
DNSTCP/UDP 53Zones intégrées AD.
RPC dynamiquesTCP 49152‑65535Plage par défaut Windows Server (configurable).

Pièges courants et remèdes

  • Snapshots hyperviseur : éviter de remonter un DC depuis un instantané non supporté. Préférez un System State.
  • FRS encore actif : si votre forêt utilise encore FRS pour SYSVOL (héritage), migrez vers DFSR (FRS est obsolète) et traitez les événements 13508/13568.
  • Strict Replication Consistency désactivé : réactivez‑la pour empêcher l’entrée d’objets persistants provenant d’un DC obsolète.
  • DNS défaillant : sans enregistrements _msdcs à jour, la réplication échoue. Purgez le cache et regénérez l’inscription dynamique (ipconfig /registerdns).
  • Heure désalignée : corrigez la source NTP du PDC (w32tm /config ...), puis resynchronisez.

Exemple consolidé de bout en bout

# 0) --- À faire AVANT de rebrancher le DC restauré ---
# Isoler le DC restauré (réseau bloqué sauf vers le PDC) et vérifier l'heure

# 1) Bloquer l'outbound

repadmin /options  +DISABLE_OUTBOUND_REPL

# 2) Identifier le PDC Emulator

netdom query fsmo

# ou: (Get-ADDomain).PDCEmulator

# 3) Forcer une réplication entrante sûre (par partition)

repadmin /replicate   "CN=Schema,CN=Configuration,DC=exemple,DC=local" /force
repadmin /replicate   "CN=Configuration,DC=exemple,DC=local" /force
repadmin /replicate   "DC=exemple,DC=local" /force
repadmin /replicate   "DC=DomainDnsZones,DC=exemple,DC=local" /force
repadmin /replicate   "DC=ForestDnsZones,DC=exemple,DC=local" /force

# 4) Vérifications rapides

repadmin /showrepl  /errorsonly
dfsrdiag backlog /rgname:"Domain System Volume" /rfname:"SYSVOL Share" /smem: /rmem:

# 5) Réactiver la réplication

repadmin /options  -DISABLE_OUTBOUND_REPL

# 6) Validation finale

dcdiag /c /v /e /fix 

En procédant ainsi — blocage de l’outbound, réplication entrante ciblée depuis le PDC, contrôles de cohérence — vous évitez la propagation d’un annuaire périmé, vous rétablissez l’état attendu et vous rouvrez la topologie sans risque.

Sommaire