Retour d’expérience sur l’augmentation du niveau fonctionnel d’un domaine et d’une forêt Active Directory

Salut

J’ai récemment augmenter le niveau de fonctionnalité du domaine / forêt Active Directory chez un de mes clients.
Là où cela devient intéressant, c’est que l’architecture Active Directory / réseau de mon client est assez élaborée :
* 1 forêt appelé MSREPORTAD.LAN avec 6 domaines (6 arborescences de domaine). Chaque domaine correspond en fait à une entité plus ou moins indépendante des autres. Le domaine racine est en fait un domaine de gestion.
* Il y a 6 sites Active Directory. La topôlogie de réplication se fait en étoile. Chaque entité (dont domaine de gestion) se trouve sur un site géographique différent. Pour des raisons de sécurité et de confidentialité, les différentes entités ne peuvent pas communiquer entre elles au niveau réseau. En fait les serveurs / station de travail de chaque entité ne peuvent communiquer qu’avec les serveurs/stations de travail du domaine de gestion et de leur domaine. Ce schéma est supporté par Microsoft mais suppose une configuration en étoile de la topologie de liens de sites. En fait il y a un site par entité / domaine de gestion. Chaque entité a un lien de site avec le domaine de gestion. Depuis le domaine de gestion, on peut accéder à toutes les entités.
* Les domaines étaient en mode de focntionnalité Windows 2000 mixte. La forêt était en mode de focntionnalité Windows 2000

L’objectifs de la prestation était de passer tous les domaines en mode Windows 2003 puis la forêt en mode Windows 2003.
On va voir que pour ce genre d’architecture, cette opération n’est pas anodine et doit être minutieusement préparer / valider. Si nécessaire, un plan de retour en arrière doit être préparé.

La première chose à savoir est que le changement de mode de domaine / forêt est irréversible !
La seule solution pour revenir en arrière serait de restaurer tous les contrôleurs de domaine de votre forêt ! Et il ne faudra pas qu’il communique entre eux avant que tous ne soient restaurés ! C’est donc une opération qui se prépare ! Je n’ai pas testé mais d’après les forums, une restauration autoritive ne permet pas de faire un retour en arrière (à valider).

Etape 1 (à ne pas négliger) : Se documenter sur la procédure :
Tout d’abord lire le document suivant :
http://support.microsoft.com/kb/322692/en-us
Il existe aussi en Français (http://support.microsoft.com/kb/322692) mais attention aux erreurs de traductions (on va voir qu’il y a pas mal d’erreurs de traduction sur un WIndows 2003 FR).
Quelques précisions s’imposent :
* Clairement, un des avantages ‘entre autres) à passer en mode natif 2003 (pour le domaine), c’est l’imbrication des groupes globaux dans d’autres groupes globaux.
* La contrainte sur la version de Windows supportée selon le mode de domaine / forêt Active Directory ne concerne que les contrôleurs de domaine ! En mode natif 2003, je peux avoir que des contrôleurs de domaine Windows 2003 Server. Par contre rien ne m’empêche d’avoir des serveurs membres Windows 2000 Server et Windows NT4 Server. Attention cependant au niveau d’authentification LAN Manager autorisé (LM, NTLM, NTLMV2 et/ou Kerberos). Pour plus d’informations voir article Microsoft http://support.microsoft.com/kb/823659.
* Quand vous faites une promotion de la forêt en mode natif 2003, cela ajoute de nouveaux attributs dans le catalogue global. Le catalogue global va donc devoir être regénéré complètement ce qui est loin d’être anodin. Cela va générer pas mal de trafic réseau et générer des erreurs de réplication !

Etape 2 : Valider le fonctionnement des sauvegardes :
* Valider le fonctionnement de vos sauvegardes et faire une sauvegarde de tous vos contrôleurs de domaine (ne pas oublier de sauvegarder l’état du système). Le mieux est de tester votre procédure de restauration !

Etape 3 : Valider le fonctionnement de votre annuaire :
* Pour cela, utiliser les outils des supports tools.
  Faire un dcdiag /v /e > c:\dcdiag.txt. Analyser ensuite le fichier c:\dcdiag.txt en faisant des recherches sur les mots clés suivants : “fail” et “error”.
  Faire un repadmin /showrepl sur les contrôleurs de domaine pour vérifier que tout réplique.
  Analyser les observateurs d’événements sur chaque contrôleur de domaine.
  Vérifier votre configuration DNS.
* Valider qu’il n’y a plus de BDC NT4. En effet de mémoire (poster en commentaire si vous avez un retour d’expérience contradictoire), Active Directory n’est pas capable de détecter la présence des BDC NT4 lors d’une augmentation du niveau focntionnel du domaine. La promotion en mode natif 2003 est impossible par contre si vous disposez de contrôleur de domaine Windows 2000 Server. Si vous rencontrez un message d’erreur vous indiquant qu’il y a un contrôleur de domaine mais que pourtant vous pensez ne plus en avoir, c’est qu’il doit rester des traces d’un ancien contrôleur de domaine Windows 2000 (vous avez probablement fait du DCPROMO /forceremoval sans faire un NTDSUTIL METADATA CLEANUP après). Consulter cet article : http://support.microsoft.com/kb/216498/en-us. En cas de besoin, vous pouvez demander Guillaume MATHIEU (c’est moi), société PROSERVIA ou un de ses collègues (plus d’informations sur http://www.proservia.fr) pour vous assister.

Etape 4 : Mise à niveau du domaine :
* Appliquer la procédure http://support.microsoft.com/kb/322692. Attention faire les domaines un par un et pas tout à la fois.
* Forcer la réplication et lancer adsiedit.msc (support tools) pour valider que sur tel contrôleur de domaine, l’LANormation a été répliquée (attribut msDS-Behavior-Version dans la partition de configuration | nom de la partition de domaine).
* Une fois tous les domaines en mopde natif 2003 et que l’LANormations a été répliquée, vous pouvez faire l’upgrade de la forêt. Attention le passage en mode de fonctionnalité Windows 2003 de la forêt entraîne la reconstruction du catalogue global.

Retour d’expérience sur l’augmentation du niveau fonctionnel d’un domaine :
Alors là je dis merci Microsoft, j’ai encore perdu quelques cheveux à cause de vos traductions !!!
Voici le message (ttype information)  que j’ai eu dans les logs ! “Le niveau de fonctionnalité n’a pas pu être elevé”.
Oula, je sais pas pour vous mais ça sent pas bon. Je vous rassure, ce genre de problème ne ferait pas l’objet d’une information mais d’une erreur. En fait, c’est une erreur de traduction (cette négation n’est que fantasme du traducteur) !
Moralité : installer vos serveurs en anglais.

L’erreur en Français :
Type de l’événement : Informations
Source de l’événement : NTDS General
Catégorie de l’événement : Accès au répertoire
ID de l’événement : 2039
Date :  18/11/2008
Heure :  11:46:58
Utilisateur : MSREPORTAD\administrateur
Ordinateur : MSREPORTAD1
Description :
Le niveau de fonctionnalité de ce domaine n’a pas pu être élevé.
 Domaine : DC=MSREPORTAD,DC=LAN
 Nouveau niveau fonctionnel du domaine : 2

En recherchant sur Internet ce message d’informations en anglais, voici ce que l’on obtient :
Event Type: Information
Event Source: NTDS General
Event Category: Directory Access
Event ID: 2039
User: MYDOMAIN\administrator
Description:
The functional level of this domain has been raised.
 Domain: DC=mydomain,DC=local
 New domain functional level:2

Retour d’expérience upgrade de la forêt :
Une frayeur n’arrivant jamais seule, j’upgrade la forêt en mode fonctionnalité 2003.
J’obtiens dans les observateurs d’événements, les messages suivant :
Type de l’événement : Informations
Source de l’événement : NTDS General
Catégorie de l’événement : Accès au répertoire
ID de l’événement : 2040
Date :  18/11/2008
Heure :  13:41:29
Utilisateur : MSREPORTADAD\Proservia
Ordinateur : MSREPORTAD1
Description :
Le niveau de fonctionnalité de cette forêt a été élevé.
Nouveau niveau fonctionnel de la forêt : 2

Type de l’événement : Informations
Source de l’événement : NTDS General
Catégorie de l’événement : Réplication
ID de l’événement : 1695
Date :  18/11/2008
Heure :  13:41:29
Utilisateur : MSREPORTAD\Proservia
Ordinateur : MSREPORTAD1
Description :
Le contrôleur de domaine local prend désormais en charge la réplication validée par un lien. Chaque valeur de l’attribut multivaleur réplique désormais individuellement pour réduire la bande passante du réseau et fournir un degré plus fin de résolution de conflit.

Type de l’événement : Informations
Source de l’événement : NTDS Replication
Catégorie de l’événement : Catalogue global
ID de l’événement : 1704
Date :  18/11/2008
Heure :  13:52:54
Utilisateur : AUTORITE NT\ANONYMOUS LOGON
Ordinateur : MSREPORTAD1
Description :
Le catalogue global a lancé la synchronisation d’un jeu d’attributs partiel pour la partition d’annuaire suivante à partir du contrôleur de domaine suivant.
Partition d’annuaire :
DC=ENTITE1AD,DC=LAN
Contrôleur de domaine :
59ad36d5-e562-4026-99a8-7cff46e93afe._msdcs.MSREPORTAD.LAN
Ce cycle de réplication spécial est provoqué par l’ajout d’un ou plusieurs attributs au jeu d’attributs partiel.

J’obtiens le même message d’informations pour les autres partitions de domaine.
En fait ce qu’explique ce message c’est que le fait de passer la forêt en mode fonctionnalité Windows 2003 ajoute de nouveaux attributs dans le catalogue global. Et que celui ci est donc juste en train de se régénérer !

A cette étape, aucune erreur / avertissement ne remonte dans les observateurs d’événements. Cependant si j’essais de forcer la réplication dans la console Sites et Services, voici ce que j’obtiens :
L’erreur suivante s’est produite lors de la tentative de synchronisation du contexte de nommage ENTITE2AD.LAN du contrôleur de domaine MSREPORTAD3 au contrôleur de domaine MSREPORTAD1. La tentative de synchronisation a échoué car le contrôleur de domaine destination est actuellement en attente de synchronisation de nouveaux attributs partiels à partir de la source. Cette condition est normale si une modification récente du schéma a modifié le jeu d’attributs partiels. Le jeu d’attributs partiels de destination n’est pas un sous-ensemble de l’ensemble d’attributs partiel source. Cette opération ne va pas continuer.”

A cela je réponds pas de panique ! C’est normal et cela va se corriger tout seul !

Analysons un peu plus ces erreurs de réplication cependant :
Je vous rappelle qu’un annuaire Active Directory est découpé en partition (aussi appelée contexte de nommage).
* 1 partition de domaine pour chaque domaine. 6 domaines donc 6 partitions de domaine dans mon cas.
* 1 partition de configuration
* 1 partition de schéma
* 1 partition ForestDnsZones (depuis Windows 2003)
* 1 partition DomainDnsZones (depuis Windows 2003).
* 1 ou plusieurs partitions applicatives (depuis Windows 2003)

L’erreur de réplication n’indique pas qu’aucune partition ne réplique mais que au moins une partition pose problème.
Pour voir quelles sont le ou les partitions problématiques :
* Installer les supports tools
* Lancer la commande repadmin /showrepl

Voici ce que l’on obtient quand on vient de mettre à niveau le schéma Active Directory et que l’on lance repadmin sur le serveur MSREPORTAD3.

repadmin running command /showrepl against server localhost
ENTITE3\MSREPORTAD3
DC Options: IS_GC
Site Options: (none)
DC object GUID: 5b934d02-e431-4c11-9d5f-5b7da4068301
DC invocationID: 915f544f-6415-4562-84fb-e8cbd394d7a6
==== INBOUND NEIGHBORS ======================================
CN=Configuration,DC=MSREPORTAD,DC=LAN
 ENTITE3\MSREPORTAD3b via RPC
   DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:16:49 was successful.
   GESTION\MSREPORTAD1 via RPC
   DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
   Last attempt @ 2008-11-18 14:28:35 was successful.
CN=Schema,CN=Configuration,DC=MSREPORTAD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:14:07 was successful.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:35 was successful.
DC=ForestDnsZones,DC=MSREPORTAD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:14:10 was successful.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:35 was successful.
DC=ENTITE3AD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:29:15 was successful.
DC=DomainDnsZones,DC=ENTITE3AD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 13:46:20 was successful.
DC=MSREPORTAD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:28:15 was successful.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:36 was successful.
DC=ENTITE4AD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:28:15 was successful.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:35 was delayed for a normal reason, result 8464 (0x2110):
  La tentative de synchronisation de la r‚plication a ‚chou‚ car le contr“leur de domaine destination est actuellement en attente de synchronisation de nouveaux attributs partiels … partir de la source. Cette condition est normale si une modification r‚cente du sch‚ma a modifi‚ le jeu d’attributs partiels. Le jeu d’attributs partiels de destination n’est pas un sous-ensemble de l’ensemble d’attributs partiel source.
    Last success @ 2008-11-18 14:23:21.
DC=ENTITE5AD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:28:15 was successful.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:35 was successful.
DC=ENTITE2AD,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:28:15 was successful.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:35 was delayed for a normal reason, result 8464 (0x2110):
  La tentative de synchronisation de la r‚plication a ‚chou‚ car le contr“leur de domaine destination est actuellement en attente de synchronisation de nouveaux attributs partiels … partir de la source. Cette condition est normale si une modification r‚cente du sch‚ma a modifi‚ le jeu d’attributs partiels. Le jeu d’attributs partiels de destination n’est pas un sous-ensemble de l’ensemble d’attributs partiel source.
    Last success @ 2008-11-18 14:23:21.
DC=ENTITEAD1,DC=LAN
  ENTITE3\MSREPORTAD3b via RPC
    DC object GUID: 90c8e2ba-f4c8-4b80-b31a-64aa2088844d
    Last attempt @ 2008-11-18 14:28:15 was delayed for a normal reason, result 8464 (0x2110):
  La tentative de synchronisation de la r‚plication a ‚chou‚ car le contr“leur de domaine destination est actuellement en attente de synchronisation de nouveaux attributs partiels … partir de la source. Cette condition est normale si une modification r‚cente du sch‚ma a modifi‚ le jeu d’attributs partiels. Le jeu d’attributs partiels de destination n’est pas un sous-ensemble de l’ensemble d’attributs partiel source.
    Last success @ 2008-11-18 13:46:20.
  GESTION\MSREPORTAD1 via RPC
    DC object GUID: 3785f2a5-5840-4dde-a3bb-6b784db83879
    Last attempt @ 2008-11-18 14:28:36 was delayed for a normal reason, result 8464 (0x2110):
  La tentative de synchronisation de la r‚plication a ‚chou‚ car le contr“leur de domaine destination est actuellement en attente de synchronisation de nouveaux attributs partiels … partir de la source. Cette condition est normale si une modification r‚cente du sch‚ma a modifi‚ le jeu d’attributs partiels. Le jeu d’attributs partiels de destination n’est pas un sous-ensemble de l’ensemble d’attributs partiel source.
    Last success @ 2008-11-18 14:23:21.
La question légitime qu’on se pose alors.Pourquoi le contrôleur de domaine du domaine A a t’il besoin de répliquer des informations depuis le domaine B ?
En fait, il le fait car ce contrôleur de domaine est serveur de catalogue global et qu’il a besoin de répliquer un certain nombre d’attributs des autres partitions de domaine pour générer le catalogue global.
Donc dans notre cas ce qui ne marche plus c’est la réplication des informations nécessaires pour le catalogue global. La réplication des objets dans le domaine fonctionne très bien par contre !
Dans mon cas, en forçant la réplication, la situation est revenu à la normale au bout de 2 heures. La topoligie de réplication fait qu’il faut 6 heures normalement à la partition de configuration pour répliquer entre deux contrôleurs de domaine de deux entités différentes. Ils passent en effet par les contrôleurs de domaine du domaine de gestion pour répliquer (réplication indirecte).

Pour plus d’informations, voir aussi :
http://groups.google.com/group/microsoft.public.windows.server.security/ browse_thread/thread/fb1db5eb4a1c90c9

a+

A propos Guillaume Mathieu

Directeur Technique chez Flexsi
Ce contenu a été publié dans Active Directory, Outils, Troubleshouting, Windows 2003 Server. Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à Retour d’expérience sur l’augmentation du niveau fonctionnel d’un domaine et d’une forêt Active Directory

  1. Christian dit :

    Un très bon reporting, complet et intéressant !
    J’ai moi aussi flipper littéralement quand j’ai eu ce message en Français !

Laisser un commentaire