Windows Server - AD, DHCP, DNS
1. Prérequis et préparation
1.1 Versions de Windows Server supportées
Cette documentation couvre les versions suivantes :
- Windows Server 2019 – LTSC, support étendu jusqu'en janvier 2029
- Windows Server 2022 – LTSC, support étendu jusqu'en octobre 2031
- Windows Server 2025 – LTSC, dernière version en date
1.2 Rôles à installer
Pour une infrastructure complète AD/DNS/DHCP, les rôles suivants sont nécessaires :
- AD DS – Active Directory Domain Services
- DNS Server – Généralement installé automatiquement avec AD DS
- DHCP Server – Distribution automatique des adresses IP
# Verifier les roles installes sur le serveur
Get-WindowsFeature | Where-Object {$_.Installed -eq $true}
# Lister tous les roles disponibles
Get-WindowsFeature | Format-Table Name, DisplayName, InstallState
1.3 Configuration réseau préalable
Avant d'installer les rôles, le serveur doit avoir une configuration réseau statique :
# Identifier les interfaces reseau
Get-NetAdapter
# Configurer une adresse IP statique
New-NetIPAddress -InterfaceAlias "Ethernet" `
-IPAddress 192.168.1.10 `
-PrefixLength 24 `
-DefaultGateway 192.168.1.1
# Configurer les serveurs DNS (lui-meme + secondaire)
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
-ServerAddresses 127.0.0.1, 192.168.1.11
# Verifier la configuration
Get-NetIPAddress -InterfaceAlias "Ethernet"
Get-DnsClientServerAddress -InterfaceAlias "Ethernet"
1.4 Renommer le serveur
# Renommer le serveur (redemarrage necessaire)
Rename-Computer -NewName "DC01" -Restart
# Verifier le nom
hostname
$env:COMPUTERNAME
1.5 Vérification via GUI
- Ouvrir Paramètres → Système → À propos de
- Vérifier le nom de l'ordinateur
- Ouvrir Panneau de configuration → Réseau et partage → Modifier les paramètres de la carte
- Clic droit sur la carte réseau → Propriétés → Protocole Internet version 4 (TCP/IPv4)
- Configurer l'adresse IP statique, le masque, la passerelle et les DNS
2. Active Directory Domain Services (AD DS)
2.1 Installation du rôle AD DS
Via PowerShell
# Installer le role AD DS avec les outils de gestion
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
# Verifier l'installation
Get-WindowsFeature AD-Domain-Services
Via Server Manager
- Ouvrir Server Manager → Manage → Add Roles and Features
- Sélectionner Role-based or feature-based installation
- Sélectionner le serveur local
- Cocher Active Directory Domain Services
- Accepter l'ajout des fonctionnalités requises
- Terminer l'assistant et attendre la fin de l'installation
2.2 Promotion en premier contrôleur de domaine
Après l'installation du rôle, il faut promouvoir le serveur en contrôleur de domaine.
Via PowerShell – Nouvelle forêt
# Importer le module de deploiement AD DS
Import-Module ADDSDeployment
# Creer une nouvelle foret Active Directory
Install-ADDSForest `
-DomainName "mondomaine.local" `
-DomainNetbiosName "MONDOMAINE" `
-ForestMode "WinThreshold" `
-DomainMode "WinThreshold" `
-InstallDns:$true `
-DatabasePath "C:\Windows\NTDS" `
-LogPath "C:\Windows\NTDS" `
-SysvolPath "C:\Windows\SYSVOL" `
-SafeModeAdministratorPassword (ConvertTo-SecureString "MotDePasseComplexe123!" -AsPlainText -Force) `
-Force:$true
# Le serveur redemarrera automatiquement
-ForestMode "WinThreshold" correspond au niveau fonctionnel Windows Server 2016+. Pour Server 2025, vous pouvez utiliser "Win2025" si tous vos DC seront en 2025.
Via Server Manager (Assistant graphique)
- Dans Server Manager, cliquer sur le drapeau de notification jaune
- Cliquer sur Promote this server to a domain controller
- Sélectionner Add a new forest
- Saisir le nom de domaine racine :
mondomaine.local - Choisir les niveaux fonctionnels de forêt et de domaine
- Cocher DNS Server
- Définir le mot de passe DSRM (Directory Services Restore Mode)
- Valider le nom NetBIOS
- Confirmer les chemins NTDS, SYSVOL
- Vérifier les prérequis puis Install
2.3 Vérification post-installation
# Verifier que le serveur est bien un DC
Get-ADDomainController -Filter *
# Verifier le domaine
Get-ADDomain
# Verifier la foret
Get-ADForest
# Verifier les roles FSMO
netdom query fsmo
# Verifier les services AD
Get-Service NTDS, DNS, Netlogon, KDC
2.4 Structure des Unités d'Organisation (OU)
Les OU permettent d'organiser les objets AD et d'appliquer des stratégies de groupe (GPO).
Création d'OU via PowerShell
# Creer les OU de premier niveau
New-ADOrganizationalUnit -Name "Entreprise" -Path "DC=mondomaine,DC=local" -ProtectedFromAccidentalDeletion $true
# Creer des sous-OU
New-ADOrganizationalUnit -Name "Utilisateurs" -Path "OU=Entreprise,DC=mondomaine,DC=local"
New-ADOrganizationalUnit -Name "Ordinateurs" -Path "OU=Entreprise,DC=mondomaine,DC=local"
New-ADOrganizationalUnit -Name "Groupes" -Path "OU=Entreprise,DC=mondomaine,DC=local"
New-ADOrganizationalUnit -Name "Serveurs" -Path "OU=Entreprise,DC=mondomaine,DC=local"
# Creer des OU par service
New-ADOrganizationalUnit -Name "Direction" -Path "OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
New-ADOrganizationalUnit -Name "Comptabilite" -Path "OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
New-ADOrganizationalUnit -Name "Informatique" -Path "OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
New-ADOrganizationalUnit -Name "Commercial" -Path "OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
# Lister toutes les OU
Get-ADOrganizationalUnit -Filter * | Select-Object Name, DistinguishedName
Via Active Directory Users and Computers (GUI)
- Ouvrir Server Manager → Tools → Active Directory Users and Computers
- Clic droit sur le domaine → New → Organizational Unit
- Saisir le nom de l'OU
- Cocher Protect object from accidental deletion
2.5 Création d'utilisateurs
Via PowerShell – Utilisateur unique
# Creer un utilisateur avec tous les attributs courants
New-ADUser `
-Name "Jean Dupont" `
-GivenName "Jean" `
-Surname "Dupont" `
-SamAccountName "jdupont" `
-UserPrincipalName "jdupont@mondomaine.local" `
-DisplayName "Jean Dupont" `
-Description "Technicien informatique" `
-Office "Bureau 201" `
-Company "Mon Entreprise" `
-Department "Informatique" `
-Title "Technicien Support" `
-Path "OU=Informatique,OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local" `
-AccountPassword (ConvertTo-SecureString "TempPass123!" -AsPlainText -Force) `
-ChangePasswordAtLogon $true `
-Enabled $true
# Verifier la creation
Get-ADUser -Identity "jdupont" -Properties *
Via PowerShell – Création en masse (CSV)
# Fichier CSV attendu (utilisateurs.csv) :
# Prenom;Nom;Login;MotDePasse;OU;Service;Poste
# Jean;Dupont;jdupont;TempPass123!;Informatique;Informatique;Technicien
# Marie;Martin;mmartin;TempPass123!;Comptabilite;Comptabilite;Comptable
# Script d'import en masse
$utilisateurs = Import-Csv -Path "C:\Scripts\utilisateurs.csv" -Delimiter ";"
foreach ($user in $utilisateurs) {
$nom = "$($user.Prenom) $($user.Nom)"
$ouPath = "OU=$($user.OU),OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
try {
New-ADUser `
-Name $nom `
-GivenName $user.Prenom `
-Surname $user.Nom `
-SamAccountName $user.Login `
-UserPrincipalName "$($user.Login)@mondomaine.local" `
-DisplayName $nom `
-Department $user.Service `
-Title $user.Poste `
-Path $ouPath `
-AccountPassword (ConvertTo-SecureString $user.MotDePasse -AsPlainText -Force) `
-ChangePasswordAtLogon $true `
-Enabled $true
Write-Host "Utilisateur $nom cree avec succes." -ForegroundColor Green
}
catch {
Write-Host "Erreur pour $nom : $_" -ForegroundColor Red
}
}
Via GUI (Active Directory Users and Computers)
- Naviguer vers l'OU souhaitée
- Clic droit → New → User
- Remplir les champs : prénom, nom, nom d'ouverture de session
- Définir le mot de passe et les options (changer au prochain logon, etc.)
- Terminer la création
2.6 Création et gestion des groupes
# Creer un groupe de securite global
New-ADGroup `
-Name "GRP_Informatique" `
-GroupScope Global `
-GroupCategory Security `
-Path "OU=Groupes,OU=Entreprise,DC=mondomaine,DC=local" `
-Description "Groupe du service Informatique"
# Creer un groupe de domaine local (pour les permissions NTFS)
New-ADGroup `
-Name "DL_Partage_Informatique_RW" `
-GroupScope DomainLocal `
-GroupCategory Security `
-Path "OU=Groupes,OU=Entreprise,DC=mondomaine,DC=local" `
-Description "Acces lecture-ecriture au partage Informatique"
# Ajouter un utilisateur a un groupe
Add-ADGroupMember -Identity "GRP_Informatique" -Members "jdupont"
# Ajouter plusieurs utilisateurs
Add-ADGroupMember -Identity "GRP_Informatique" -Members "jdupont","mmartin","pdurand"
# Imbriquer le groupe global dans le groupe de domaine local (strategie AGDLP)
Add-ADGroupMember -Identity "DL_Partage_Informatique_RW" -Members "GRP_Informatique"
# Lister les membres d'un groupe
Get-ADGroupMember -Identity "GRP_Informatique" | Select-Object Name, SamAccountName
# Lister les groupes d'un utilisateur
Get-ADUser -Identity "jdupont" -Properties MemberOf | Select-Object -ExpandProperty MemberOf
2.7 Recherche et gestion des objets AD
# Rechercher un utilisateur
Get-ADUser -Filter "Name -like '*Dupont*'" -Properties Department, Title
# Lister les utilisateurs desactives
Get-ADUser -Filter {Enabled -eq $false} | Select-Object Name, SamAccountName
# Lister les utilisateurs qui ne se sont pas connectes depuis 90 jours
$date = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -lt $date} -Properties LastLogonDate |
Select-Object Name, SamAccountName, LastLogonDate
# Desactiver un compte
Disable-ADAccount -Identity "jdupont"
# Reinitialiser un mot de passe
Set-ADAccountPassword -Identity "jdupont" `
-Reset `
-NewPassword (ConvertTo-SecureString "NouveauPass456!" -AsPlainText -Force)
# Deplacer un objet vers une autre OU
Move-ADObject -Identity "CN=Jean Dupont,OU=Informatique,OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local" `
-TargetPath "OU=Direction,OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
# Supprimer un utilisateur
Remove-ADUser -Identity "jdupont" -Confirm:$false
3. DNS (Domain Name System)
3.1 Installation du rôle DNS
Le rôle DNS est généralement installé automatiquement lors de la promotion en contrôleur de domaine. Si ce n'est pas le cas :
# Installer le role DNS
Install-WindowsFeature -Name DNS -IncludeManagementTools
# Verifier l'installation
Get-WindowsFeature DNS
3.2 Zones de recherche directe
La zone de recherche directe permet de résoudre un nom en adresse IP.
# Lister les zones DNS existantes
Get-DnsServerZone
# Creer une zone de recherche directe primaire integree a AD
Add-DnsServerPrimaryZone `
-Name "mondomaine.local" `
-ReplicationScope "Forest" `
-DynamicUpdate "Secure"
# Creer une zone de recherche directe pour un domaine externe (secondaire)
Add-DnsServerSecondaryZone `
-Name "partenaire.com" `
-ZoneFile "partenaire.com.dns" `
-MasterServers 10.0.0.50
3.3 Zones de recherche inversée
La zone de recherche inversée permet de résoudre une adresse IP en nom.
# Creer une zone de recherche inversee integree a AD
Add-DnsServerPrimaryZone `
-NetworkId "192.168.1.0/24" `
-ReplicationScope "Forest" `
-DynamicUpdate "Secure"
# Verifier la zone creee
Get-DnsServerZone | Where-Object {$_.IsReverseLookupZone -eq $true}
Via DNS Manager (GUI)
- Ouvrir Server Manager → Tools → DNS
- Développer le serveur
- Clic droit sur Reverse Lookup Zones → New Zone
- Sélectionner Primary zone et cocher Store the zone in Active Directory
- Choisir la portée de réplication (forêt, domaine, etc.)
- Sélectionner IPv4 Reverse Lookup Zone
- Saisir l'ID réseau :
192.168.1 - Autoriser les mises à jour dynamiques sécurisées uniquement
3.4 Enregistrements DNS
Enregistrement A (hôte vers IPv4)
# Creer un enregistrement A
Add-DnsServerResourceRecordA `
-ZoneName "mondomaine.local" `
-Name "serveur-web" `
-IPv4Address "192.168.1.50" `
-CreatePtr # Cree automatiquement l'enregistrement PTR
# Supprimer un enregistrement A
Remove-DnsServerResourceRecord `
-ZoneName "mondomaine.local" `
-Name "serveur-web" `
-RRType A -Force
Enregistrement AAAA (hôte vers IPv6)
# Creer un enregistrement AAAA
Add-DnsServerResourceRecordAAAA `
-ZoneName "mondomaine.local" `
-Name "serveur-web" `
-IPv6Address "fd00::50"
Enregistrement CNAME (alias)
# Creer un alias (CNAME)
Add-DnsServerResourceRecordCName `
-ZoneName "mondomaine.local" `
-Name "www" `
-HostNameAlias "serveur-web.mondomaine.local"
# Creer un alias pour un intranet
Add-DnsServerResourceRecordCName `
-ZoneName "mondomaine.local" `
-Name "intranet" `
-HostNameAlias "serveur-iis.mondomaine.local"
Enregistrement MX (messagerie)
# Creer un enregistrement MX
Add-DnsServerResourceRecordMX `
-ZoneName "mondomaine.local" `
-Name "." `
-MailExchange "mail.mondomaine.local" `
-Preference 10
# Ajouter un MX secondaire
Add-DnsServerResourceRecordMX `
-ZoneName "mondomaine.local" `
-Name "." `
-MailExchange "mail-backup.mondomaine.local" `
-Preference 20
Enregistrement SRV (service)
# Creer un enregistrement SRV (ex: serveur SIP)
Add-DnsServerResourceRecord `
-ZoneName "mondomaine.local" `
-Name "_sip._tcp" `
-Srv `
-DomainName "sip.mondomaine.local" `
-Priority 0 `
-Weight 0 `
-Port 5060
Enregistrement PTR (résolution inverse)
# Creer un enregistrement PTR manuellement
Add-DnsServerResourceRecordPtr `
-ZoneName "1.168.192.in-addr.arpa" `
-Name "50" `
-PtrDomainName "serveur-web.mondomaine.local"
Lister et vérifier les enregistrements
# Lister tous les enregistrements d'une zone
Get-DnsServerResourceRecord -ZoneName "mondomaine.local"
# Filtrer par type d'enregistrement
Get-DnsServerResourceRecord -ZoneName "mondomaine.local" -RRType A
Get-DnsServerResourceRecord -ZoneName "mondomaine.local" -RRType CNAME
Get-DnsServerResourceRecord -ZoneName "mondomaine.local" -RRType MX
Get-DnsServerResourceRecord -ZoneName "mondomaine.local" -RRType SRV
# Tester la resolution DNS
Resolve-DnsName -Name "serveur-web.mondomaine.local" -Type A
Resolve-DnsName -Name "mondomaine.local" -Type MX
nslookup serveur-web.mondomaine.local
3.5 Transfert de zone
# Configurer le transfert de zone vers des serveurs specifiques
Set-DnsServerPrimaryZone `
-Name "mondomaine.local" `
-SecureSecondaries "TransferToSecureServers" `
-SecondaryServers "192.168.1.11","192.168.1.12"
# Autoriser le transfert vers tous les serveurs listes dans NS
Set-DnsServerPrimaryZone `
-Name "mondomaine.local" `
-SecureSecondaries "TransferToZoneNameServer"
# Desactiver completement le transfert de zone
Set-DnsServerPrimaryZone `
-Name "mondomaine.local" `
-SecureSecondaries "NoTransfer"
3.6 Redirecteurs (Forwarders)
Les redirecteurs permettent de transférer les requêtes DNS non résolues localement vers des serveurs DNS externes.
# Ajouter des redirecteurs DNS
Add-DnsServerForwarder -IPAddress "8.8.8.8"
Add-DnsServerForwarder -IPAddress "8.8.4.4"
Add-DnsServerForwarder -IPAddress "1.1.1.1"
# Lister les redirecteurs configures
Get-DnsServerForwarder
# Supprimer un redirecteur
Remove-DnsServerForwarder -IPAddress "1.1.1.1"
# Configurer un redirecteur conditionnel (pour un domaine partenaire)
Add-DnsServerConditionalForwarderZone `
-Name "partenaire.com" `
-MasterServers "10.0.0.50","10.0.0.51" `
-ReplicationScope "Forest"
Via DNS Manager (GUI)
- Ouvrir DNS Manager
- Clic droit sur le serveur → Properties
- Onglet Forwarders
- Cliquer Edit et ajouter les adresses IP des serveurs DNS externes
- Pour les redirecteurs conditionnels : clic droit sur Conditional Forwarders → New Conditional Forwarder
3.7 Nettoyage DNS (Scavenging)
# Activer le nettoyage sur le serveur DNS
Set-DnsServerScavenging `
-ScavengingState $true `
-RefreshInterval 7.00:00:00 `
-NoRefreshInterval 7.00:00:00 `
-ScavengingInterval 7.00:00:00
# Activer le vieillissement sur une zone
Set-DnsServerZoneAging `
-Name "mondomaine.local" `
-Aging $true `
-RefreshInterval 7.00:00:00 `
-NoRefreshInterval 7.00:00:00
# Lancer un nettoyage manuel
Start-DnsServerScavenging
4. DHCP (Dynamic Host Configuration Protocol)
4.1 Installation du rôle DHCP
Via PowerShell
# Installer le role DHCP avec les outils de gestion
Install-WindowsFeature -Name DHCP -IncludeManagementTools
# Autoriser le serveur DHCP dans Active Directory
Add-DhcpServerInDC -DnsName "DC01.mondomaine.local" -IPAddress 192.168.1.10
# Verifier l'autorisation
Get-DhcpServerInDC
# Redemarrer le service DHCP
Restart-Service DHCPServer
# Supprimer les alertes de configuration post-installation
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ServerManager\Roles\12" -Name "ConfigurationState" -Value 2
Via Server Manager
- Ouvrir Server Manager → Add Roles and Features
- Cocher DHCP Server
- Terminer l'assistant
- Cliquer sur la notification post-installation pour Complete DHCP configuration
- L'autorisation dans AD se fait automatiquement via cet assistant
4.2 Création d'une étendue (Scope)
Via PowerShell
# Creer une etendue DHCP
Add-DhcpServerv4Scope `
-Name "LAN Principal" `
-StartRange 192.168.1.100 `
-EndRange 192.168.1.200 `
-SubnetMask 255.255.255.0 `
-LeaseDuration 8.00:00:00 `
-State Active `
-Description "Etendue pour le reseau principal"
# Verifier l'etendue creee
Get-DhcpServerv4Scope
Via DHCP Manager (GUI)
- Ouvrir Server Manager → Tools → DHCP
- Développer le serveur → IPv4
- Clic droit sur IPv4 → New Scope
- Saisir le nom et la description
- Définir la plage d'adresses (début/fin) et le masque
- Configurer les exclusions si nécessaire
- Définir la durée du bail
- Configurer les options DHCP (passerelle, DNS, domaine)
- Activer l'étendue
4.3 Options DHCP
# Configurer les options au niveau de l'etendue
# Option 003 : Passerelle par defaut
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 3 -Value "192.168.1.1"
# Option 006 : Serveurs DNS
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 6 -Value "192.168.1.10","192.168.1.11"
# Option 015 : Nom de domaine DNS
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 15 -Value "mondomaine.local"
# Option 044 : Serveur WINS (si necessaire)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 44 -Value "192.168.1.10"
# Option 066 : Serveur TFTP (pour PXE / WDS)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 66 -Value "192.168.1.30"
# Option 067 : Nom du fichier de demarrage (pour PXE)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 -OptionId 67 -Value "boot\\x64\\wdsnbp.com"
# Configurer les options au niveau du serveur (s'appliquent a toutes les etendues)
Set-DhcpServerv4OptionValue -OptionId 6 -Value "192.168.1.10","192.168.1.11"
# Lister toutes les options configurees pour une etendue
Get-DhcpServerv4OptionValue -ScopeId 192.168.1.0
4.4 Exclusions
# Ajouter une plage d'exclusion (adresses a ne pas distribuer)
Add-DhcpServerv4ExclusionRange `
-ScopeId 192.168.1.0 `
-StartRange 192.168.1.100 `
-EndRange 192.168.1.109
# Lister les exclusions
Get-DhcpServerv4ExclusionRange -ScopeId 192.168.1.0
# Supprimer une exclusion
Remove-DhcpServerv4ExclusionRange `
-ScopeId 192.168.1.0 `
-StartRange 192.168.1.100 `
-EndRange 192.168.1.109
4.5 Réservations
# Creer une reservation DHCP (adresse fixe basee sur l'adresse MAC)
Add-DhcpServerv4Reservation `
-ScopeId 192.168.1.0 `
-IPAddress 192.168.1.150 `
-ClientId "AA-BB-CC-DD-EE-FF" `
-Name "Imprimante-RDC" `
-Description "Imprimante du rez-de-chaussee"
# Creer une reservation pour un serveur
Add-DhcpServerv4Reservation `
-ScopeId 192.168.1.0 `
-IPAddress 192.168.1.151 `
-ClientId "11-22-33-44-55-66" `
-Name "NAS-Principal" `
-Description "Serveur NAS Synology"
# Lister les reservations
Get-DhcpServerv4Reservation -ScopeId 192.168.1.0
# Supprimer une reservation
Remove-DhcpServerv4Reservation -ScopeId 192.168.1.0 -IPAddress 192.168.1.150
# Exporter les reservations (sauvegarde)
Get-DhcpServerv4Reservation -ScopeId 192.168.1.0 | Export-Csv "C:\DHCP\reservations.csv" -NoTypeInformation
4.6 Baux actifs
# Lister tous les baux actifs
Get-DhcpServerv4Lease -ScopeId 192.168.1.0
# Filtrer les baux par etat
Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Where-Object {$_.AddressState -eq "Active"}
# Supprimer un bail specifique
Remove-DhcpServerv4Lease -ScopeId 192.168.1.0 -IPAddress 192.168.1.120
4.7 Basculement DHCP (Failover)
Le basculement DHCP permet de garantir la haute disponibilité du service en cas de panne d'un serveur.
Mode équilibrage de charge (Load Balance)
# Configurer le basculement en mode equilibrage de charge
Add-DhcpServerv4Failover `
-Name "Failover-LAN" `
-PartnerServer "DC02.mondomaine.local" `
-ScopeId 192.168.1.0 `
-SharedSecret "MotDePassePartage123!" `
-LoadBalancePercent 50 `
-MaxClientLeadTime 01:00:00 `
-AutoStateTransition $true `
-StateSwitchInterval 00:30:00
Mode veille (Hot Standby)
# Configurer le basculement en mode veille
Add-DhcpServerv4Failover `
-Name "Failover-LAN-HotStandby" `
-PartnerServer "DC02.mondomaine.local" `
-ScopeId 192.168.1.0 `
-SharedSecret "MotDePassePartage123!" `
-ServerRole Active `
-ReservePercent 10 `
-MaxClientLeadTime 01:00:00 `
-AutoStateTransition $true `
-StateSwitchInterval 00:30:00
Gestion du basculement
# Verifier l'etat du basculement
Get-DhcpServerv4Failover
# Forcer la replication vers le partenaire
Invoke-DhcpServerv4FailoverReplication -Name "Failover-LAN"
# Supprimer le basculement
Remove-DhcpServerv4Failover -Name "Failover-LAN" -Force
4.8 Sauvegarde et restauration DHCP
# Sauvegarder la configuration DHCP
Backup-DhcpServer -Path "C:\DHCP\Backup"
# Exporter la configuration complete
Export-DhcpServer -File "C:\DHCP\dhcp-export.xml" -Leases
# Restaurer depuis une sauvegarde
Restore-DhcpServer -Path "C:\DHCP\Backup"
# Importer une configuration
Import-DhcpServer -File "C:\DHCP\dhcp-export.xml" -BackupPath "C:\DHCP\BackupAvantImport" -Leases
5. Réplication Active Directory
5.1 Concepts de base
La réplication Active Directory assure la synchronisation des données entre les contrôleurs de domaine. Elle repose sur :
- KCC (Knowledge Consistency Checker) – Génère automatiquement la topologie de réplication
- Sites AD – Représentent les emplacements physiques du réseau
- Liens de sites – Connectent les sites entre eux pour la réplication inter-sites
- Partitions d'annuaire – Schema, Configuration, Domaine, DNS
5.2 Sites et Services Active Directory
Création de sites
# Creer un nouveau site AD
New-ADReplicationSite -Name "Site-Paris"
New-ADReplicationSite -Name "Site-Lyon"
# Lister les sites existants
Get-ADReplicationSite -Filter *
# Creer un sous-reseau et l'associer a un site
New-ADReplicationSubnet -Name "192.168.1.0/24" -Site "Site-Paris"
New-ADReplicationSubnet -Name "192.168.2.0/24" -Site "Site-Lyon"
# Lister les sous-reseaux
Get-ADReplicationSubnet -Filter * | Select-Object Name, Site
Via Active Directory Sites and Services (GUI)
- Ouvrir Server Manager → Tools → Active Directory Sites and Services
- Clic droit sur Sites → New Site
- Saisir le nom du site et sélectionner un lien de site
- Développer Subnets → clic droit → New Subnet
- Saisir le préfixe réseau et associer au site
5.3 Liens de sites
# Creer un lien de site
New-ADReplicationSiteLink `
-Name "Paris-Lyon" `
-SitesIncluded "Site-Paris","Site-Lyon" `
-Cost 100 `
-ReplicationFrequencyInMinutes 15 `
-InterSiteTransportProtocol IP
# Modifier un lien de site existant
Set-ADReplicationSiteLink `
-Identity "Paris-Lyon" `
-Cost 50 `
-ReplicationFrequencyInMinutes 30
# Definir une planification (replication uniquement pendant certaines heures)
Set-ADReplicationSiteLink `
-Identity "Paris-Lyon" `
-ReplicationSchedule @{Sunday="00:00-23:59"; Monday="00:00-23:59"; Tuesday="00:00-23:59"; Wednesday="00:00-23:59"; Thursday="00:00-23:59"; Friday="00:00-23:59"; Saturday="00:00-23:59"}
# Lister les liens de site
Get-ADReplicationSiteLink -Filter * | Select-Object Name, Cost, ReplicationFrequencyInMinutes
5.4 Réplication intra-site
La réplication intra-site se produit automatiquement entre les DC d'un même site. Elle est :
- Immédiate – Déclenchée par notification (dans les 15 secondes)
- Non compressée – Utilise toute la bande passante disponible
- Gérée par le KCC – Topologie automatique en anneau
# Forcer la replication entre deux DC du meme site
repadmin /syncall DC01 /d /e /P
# Forcer la replication d'une partition specifique
repadmin /replicate DC02 DC01 "DC=mondomaine,DC=local"
# Verifier les connexions de replication
Get-ADReplicationConnection -Filter * | Select-Object Name, ReplicateFromDirectoryServer, ReplicateToDirectoryServer
5.5 Réplication inter-site
La réplication inter-site se produit entre les DC de sites différents. Elle est :
- Planifiée – Selon la fréquence définie dans le lien de site (minimum 15 min)
- Compressée – Pour économiser la bande passante
- Via des têtes de pont (Bridgehead) – Un DC par site est désigné pour la réplication
# Definir un serveur tete de pont prefere
Set-ADObject `
-Identity "CN=DC01,CN=Servers,CN=Site-Paris,CN=Sites,CN=Configuration,DC=mondomaine,DC=local" `
-Add @{bridgeheadTransportList="CN=IP,CN=Inter-Site Transports,CN=Sites,CN=Configuration,DC=mondomaine,DC=local"}
# Verifier les tetes de pont
repadmin /bridgeheads
5.6 Vérification de la réplication
# Afficher le resume de la replication
repadmin /replsummary
# Afficher l'etat detaille de la replication
repadmin /showrepl
# Afficher l'etat de la replication pour tous les DC
repadmin /showrepl * /csv > C:\replication-report.csv
# Verifier les erreurs de replication
repadmin /showrepl /errorsonly
# Afficher la file d'attente de replication
repadmin /queue
# Verifier les metadonnees d'un objet (utile pour le depannage)
repadmin /showobjmeta DC01 "CN=Jean Dupont,OU=Informatique,OU=Utilisateurs,OU=Entreprise,DC=mondomaine,DC=local"
# Verifier la convergence de la replication
repadmin /replsummary /bysrc /bydest /sort:delta
repadmin /replsummary régulièrement pour détecter rapidement les problèmes de réplication. Toute erreur dans la colonne "fails" doit être investigée immédiatement.
6. Contrôleur de domaine supplémentaire
6.1 Préparation du second serveur
Avant de promouvoir un second contrôleur de domaine :
- Configurer une adresse IP statique
- Pointer le DNS primaire vers le premier DC (ex: 192.168.1.10)
- Renommer le serveur (ex: DC02)
- Joindre le domaine existant
# Configurer l'IP statique du second serveur
New-NetIPAddress -InterfaceAlias "Ethernet" `
-IPAddress 192.168.1.11 `
-PrefixLength 24 `
-DefaultGateway 192.168.1.1
# Pointer vers le premier DC pour la resolution DNS
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
-ServerAddresses 192.168.1.10
# Renommer le serveur
Rename-Computer -NewName "DC02" -Restart
# Joindre le domaine (apres redemarrage)
Add-Computer -DomainName "mondomaine.local" -Credential (Get-Credential) -Restart
6.2 Installation du rôle AD DS et promotion
Via PowerShell
# Installer le role AD DS
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
# Promouvoir en controleur de domaine supplementaire
Import-Module ADDSDeployment
Install-ADDSDomainController `
-DomainName "mondomaine.local" `
-InstallDns:$true `
-DatabasePath "C:\Windows\NTDS" `
-LogPath "C:\Windows\NTDS" `
-SysvolPath "C:\Windows\SYSVOL" `
-SiteName "Site-Paris" `
-ReplicationSourceDC "DC01.mondomaine.local" `
-SafeModeAdministratorPassword (ConvertTo-SecureString "MotDePasseComplexe123!" -AsPlainText -Force) `
-Credential (Get-Credential) `
-Force:$true
# Le serveur redemarrera automatiquement
Via Server Manager (GUI)
- Installer le rôle AD DS via Server Manager
- Cliquer sur la notification → Promote this server to a domain controller
- Sélectionner Add a domain controller to an existing domain
- Saisir le nom de domaine :
mondomaine.local - Fournir les identifiants d'un administrateur du domaine
- Cocher DNS Server et éventuellement Global Catalog
- Définir le mot de passe DSRM
- Choisir le DC source de réplication (ou laisser automatique)
- Valider les chemins et lancer l'installation
6.3 Vérification post-promotion
# Verifier les DC du domaine
Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, Site, IsGlobalCatalog, OperatingSystem
# Verifier la replication entre les DC
repadmin /replsummary
# Verifier la sante du nouveau DC
dcdiag /s:DC02 /v
# Verifier que le DNS est replique
Get-DnsServerZone -ComputerName DC02
# Verifier les enregistrements SRV
nslookup -type=srv _ldap._tcp.mondomaine.local
6.4 Réplication du DNS
Si le DNS est intégré à Active Directory, les zones DNS se répliquent automatiquement entre les DC.
# Verifier les zones DNS sur le second DC
Get-DnsServerZone -ComputerName DC02
# Verifier la portee de replication d'une zone
Get-DnsServerZone -Name "mondomaine.local" | Select-Object ZoneName, ZoneType, ReplicationScope
# Changer la portee de replication si necessaire
Set-DnsServerPrimaryZone `
-Name "mondomaine.local" `
-ReplicationScope "Forest"
# Forcer la replication DNS
repadmin /syncall DC02 /d /e /A /P
6.5 Réplication SYSVOL
SYSVOL contient les scripts de connexion et les stratégies de groupe (GPO). Il est répliqué via DFSR (DFS Replication) sur les DC modernes.
# Verifier l'etat de la replication DFSR
dfsrdiag pollad
# Verifier l'etat de la replication SYSVOL
wmic /namespace:\\root\microsoftdfs path dfsrreplicatedfolderinfo get replicatedfoldername,replicationgroupname,state
# Etat DFSR via PowerShell
Get-DfsReplicationGroup
Get-DfsrState
# Forcer la replication DFSR
dfsrdiag syncnow /partner:DC01 /rgname:"Domain System Volume" /time:5
# Verifier la coherence SYSVOL
# Comparer le contenu entre les deux DC
Get-ChildItem "\\DC01\SYSVOL\mondomaine.local\Policies" | Measure-Object
Get-ChildItem "\\DC02\SYSVOL\mondomaine.local\Policies" | Measure-Object
dfsrmig pour effectuer cette migration.
6.6 Configuration DNS sur les deux DC
# Sur DC01 : pointer le DNS vers lui-meme en premier, puis vers DC02
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
-ServerAddresses 127.0.0.1, 192.168.1.11
# Sur DC02 : pointer le DNS vers lui-meme en premier, puis vers DC01
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
-ServerAddresses 127.0.0.1, 192.168.1.10
7. Bonnes pratiques et sécurité
7.1 Comptes administrateurs
- Ne jamais utiliser le compte Administrateur par défaut pour les tâches quotidiennes
- Créer des comptes nominatifs avec droits d'administration
- Utiliser le principe du moindre privilège
- Renommer et désactiver le compte Administrateur intégré
# Renommer le compte Administrateur par defaut
Rename-ADObject `
-Identity "CN=Administrateur,CN=Users,DC=mondomaine,DC=local" `
-NewName "AdminLocal_Renamed"
# Creer un compte administrateur nominatif
New-ADUser `
-Name "Admin - Jean Dupont" `
-SamAccountName "adm.jdupont" `
-UserPrincipalName "adm.jdupont@mondomaine.local" `
-Path "OU=Administrateurs,OU=Entreprise,DC=mondomaine,DC=local" `
-AccountPassword (ConvertTo-SecureString "MotDePasseAdmin!" -AsPlainText -Force) `
-Enabled $true `
-PasswordNeverExpires $false
# Ajouter aux groupes d'administration
Add-ADGroupMember -Identity "Domain Admins" -Members "adm.jdupont"
# Auditer les membres des groupes privilegies
Get-ADGroupMember -Identity "Domain Admins" | Select-Object Name, SamAccountName
Get-ADGroupMember -Identity "Enterprise Admins" | Select-Object Name, SamAccountName
Get-ADGroupMember -Identity "Schema Admins" | Select-Object Name, SamAccountName
7.2 Stratégies de groupe (GPO) de base
Politique de mot de passe
# Verifier la politique de mot de passe actuelle
Get-ADDefaultDomainPasswordPolicy
# Modifier la politique de mot de passe du domaine
Set-ADDefaultDomainPasswordPolicy `
-Identity "mondomaine.local" `
-MinPasswordLength 12 `
-PasswordHistoryCount 24 `
-MaxPasswordAge 90.00:00:00 `
-MinPasswordAge 1.00:00:00 `
-ComplexityEnabled $true `
-LockoutThreshold 5 `
-LockoutDuration 00:30:00 `
-LockoutObservationWindow 00:30:00 `
-ReversibleEncryptionEnabled $false
Politique de verrouillage de compte
# Creer une GPO de securite de base
New-GPO -Name "GPO-Securite-Base" -Comment "Parametres de securite de base"
# Lier la GPO au domaine
New-GPLink `
-Name "GPO-Securite-Base" `
-Target "DC=mondomaine,DC=local" `
-LinkEnabled Yes
# Lister les GPO existantes
Get-GPO -All | Select-Object DisplayName, CreationTime, ModificationTime
# Generer un rapport HTML d'une GPO
Get-GPOReport -Name "Default Domain Policy" -ReportType Html -Path "C:\GPO\default-domain-policy.html"
# Generer un rapport de toutes les GPO
Get-GPO -All | ForEach-Object {
Get-GPOReport -Guid $_.Id -ReportType Html -Path "C:\GPO\$($_.DisplayName).html"
}
GPO recommandées
Voici les GPO essentielles à configurer dans un nouvel environnement :
- Politique de mot de passe – Longueur minimale 12 caractères, complexité, historique
- Verrouillage de compte – 5 tentatives, verrouillage 30 minutes
- Audit – Activer l'audit des connexions, des accès aux objets, des modifications de politique
- Pare-feu Windows – Activer sur tous les profils
- Windows Update – Configurer WSUS ou Windows Update for Business
- Restriction logicielle – AppLocker ou SRP
- Bureau à distance – Limiter l'accès RDP aux groupes autorisés
7.3 Sauvegarde Active Directory
# Installer la fonctionnalite Windows Server Backup
Install-WindowsFeature -Name Windows-Server-Backup
# Sauvegarder l'etat du systeme (inclut AD, DNS, SYSVOL, registre)
wbadmin start systemstatebackup -backupTarget:E: -quiet
# Verifier les sauvegardes existantes
wbadmin get versions -backupTarget:E:
# Planifier une sauvegarde quotidienne de l'etat du systeme
$policy = New-WBPolicy
$target = New-WBBackupTarget -VolumePath "E:"
Add-WBBackupTarget -Policy $policy -Target $target
Add-WBSystemState -Policy $policy
Set-WBSchedule -Policy $policy -Schedule 02:00
Set-WBPolicy -Policy $policy
7.4 Corbeille Active Directory
# Activer la corbeille AD (irreversible, necessite le niveau fonctionnel 2008 R2+)
Enable-ADOptionalFeature `
-Identity "Recycle Bin Feature" `
-Scope ForestOrConfigurationSet `
-Target "mondomaine.local" `
-Confirm:$false
# Restaurer un objet supprime
Get-ADObject -Filter {DisplayName -eq "Jean Dupont"} -IncludeDeletedObjects |
Restore-ADObject
# Lister les objets dans la corbeille
Get-ADObject -Filter {IsDeleted -eq $true} -IncludeDeletedObjects -Properties DisplayName, WhenChanged |
Select-Object DisplayName, WhenChanged
7.5 Sécurisation des DC
- Pas d'autres rôles – Un DC ne doit héberger que AD DS, DNS et éventuellement DHCP
- Pas de navigation Internet – Aucun navigateur utilisé sur un DC
- Mises à jour – Appliquer les correctifs de sécurité régulièrement
- Accès physique – Verrouiller l'accès physique aux DC
- BitLocker – Chiffrer les volumes système des DC
- Minimum 2 DC – Toujours avoir au moins deux contrôleurs de domaine
- LAPS – Déployer Local Administrator Password Solution pour les postes
8. Dépannage courant
8.1 dcdiag – Diagnostic du contrôleur de domaine
# Diagnostic complet du DC local
dcdiag /v
# Diagnostic d'un DC specifique
dcdiag /s:DC01 /v
# Diagnostic de tous les DC du domaine
dcdiag /a /v
# Diagnostic de tous les DC de la foret
dcdiag /e /v
# Tests specifiques
dcdiag /test:dns /v # Test DNS complet
dcdiag /test:replications # Test de replication
dcdiag /test:services # Test des services AD
dcdiag /test:advertising # Test de l'annonce du DC
dcdiag /test:fsmocheck # Test des roles FSMO
dcdiag /test:ridmanager # Test du pool RID
dcdiag /test:topology # Test de la topologie KCC
dcdiag /test:netlogons # Test du service Netlogon
# Exporter le rapport dans un fichier
dcdiag /v /c > C:\Logs\dcdiag-report.txt
8.2 repadmin – Diagnostic de la réplication
# Resume de la replication
repadmin /replsummary
# Etat detaille de la replication
repadmin /showrepl
# Afficher uniquement les erreurs
repadmin /showrepl /errorsonly
# Forcer la replication de toutes les partitions
repadmin /syncall /AdeP
# Verifier le vecteur de mise a jour (USN)
repadmin /showutdvec DC01 "DC=mondomaine,DC=local"
# Verifier les partenaires de replication
repadmin /showconn
# Afficher les tetes de pont
repadmin /bridgeheads
# Supprimer les metadonnees d'un DC demote de force
# (uniquement si le DC n'est plus accessible)
ntdsutil
metadata cleanup
connections
connect to server DC01
quit
select operation target
list domains
select domain 0
list sites
select site 0
list servers in site
select server X
quit
remove selected server
quit
quit
8.3 nltest – Diagnostic de la relation d'approbation
# Verifier la relation de confiance avec le domaine
nltest /dsgetdc:mondomaine.local
# Verifier le canal securise
nltest /sc_query:mondomaine.local
# Reinitialiser le canal securise
nltest /sc_reset:mondomaine.local
# Lister les DC du domaine
nltest /dclist:mondomaine.local
# Verifier le site AD actuel du poste
nltest /dsgetsite
# Forcer la decouverte d'un DC
nltest /dsgetdc:mondomaine.local /force
8.4 nslookup – Diagnostic DNS
# Tester la resolution directe
nslookup serveur-web.mondomaine.local
# Tester la resolution inverse
nslookup 192.168.1.50
# Interroger un serveur DNS specifique
nslookup serveur-web.mondomaine.local 192.168.1.10
# Verifier les enregistrements SRV (critiques pour AD)
nslookup -type=srv _ldap._tcp.mondomaine.local
nslookup -type=srv _kerberos._tcp.mondomaine.local
nslookup -type=srv _gc._tcp.mondomaine.local
# Verifier les enregistrements MX
nslookup -type=mx mondomaine.local
# Mode interactif avec serveur specifique
nslookup
server 192.168.1.10
set type=any
mondomaine.local
exit
# Avec PowerShell (Resolve-DnsName)
Resolve-DnsName -Name "mondomaine.local" -Type SOA
Resolve-DnsName -Name "_ldap._tcp.mondomaine.local" -Type SRV
Resolve-DnsName -Name "192.168.1.10" -Type PTR
8.5 ipconfig – Diagnostic réseau
# Afficher la configuration IP complete
ipconfig /all
# Vider le cache DNS local
ipconfig /flushdns
# Renouveler le bail DHCP
ipconfig /release
ipconfig /renew
# Afficher le cache DNS
ipconfig /displaydns
# Re-enregistrer le DNS
ipconfig /registerdns
# Equivalent PowerShell
Get-NetIPConfiguration -Detailed
Clear-DnsClientCache
Register-DnsClient
8.6 Problèmes courants et solutions
Les postes ne trouvent pas le contrôleur de domaine
# Verifier que les enregistrements SRV existent
nslookup -type=srv _ldap._tcp.mondomaine.local
# Si manquants, forcer la re-registration
net stop netlogon && net start netlogon
# Verifier le fichier Netlogon.dns
type C:\Windows\System32\config\netlogon.dns
La réplication échoue entre les DC
# Verifier la connectivite reseau
Test-NetConnection -ComputerName DC02 -Port 389 # LDAP
Test-NetConnection -ComputerName DC02 -Port 636 # LDAPS
Test-NetConnection -ComputerName DC02 -Port 3268 # GC
Test-NetConnection -ComputerName DC02 -Port 53 # DNS
Test-NetConnection -ComputerName DC02 -Port 88 # Kerberos
Test-NetConnection -ComputerName DC02 -Port 445 # SMB (SYSVOL)
Test-NetConnection -ComputerName DC02 -Port 135 # RPC
# Verifier l'heure (ecart max 5 min pour Kerberos)
w32tm /query /status
w32tm /monitor
# Resynchroniser l'heure
w32tm /resync /force
# Verifier les pare-feu
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True" -and $_.Direction -eq "Inbound"} | Select-Object DisplayName, Action
Problème de mot de passe DSRM
# Reinitialiser le mot de passe DSRM
ntdsutil
set dsrm password
reset password on server null
(saisir le nouveau mot de passe)
quit
quit
Un DC ne répond plus – Transfert des rôles FSMO
# Verifier les roles FSMO actuels
netdom query fsmo
# Transferer les roles FSMO (DC encore accessible)
Move-ADDirectoryServerOperationMasterRole `
-Identity "DC02" `
-OperationMasterRole SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster
# Prendre de force les roles FSMO (DC inaccessible - SEIZE)
Move-ADDirectoryServerOperationMasterRole `
-Identity "DC02" `
-OperationMasterRole SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster `
-Force
8.7 Scripts de diagnostic complet
# Script de diagnostic rapide d'un environnement AD
Write-Host "=== DIAGNOSTIC ACTIVE DIRECTORY ===" -ForegroundColor Cyan
Write-Host ""
# Informations du domaine
Write-Host "--- Domaine ---" -ForegroundColor Yellow
Get-ADDomain | Select-Object Name, DNSRoot, DomainMode, PDCEmulator
Write-Host ""
# Controleurs de domaine
Write-Host "--- Controleurs de domaine ---" -ForegroundColor Yellow
Get-ADDomainController -Filter * | Format-Table Name, IPv4Address, Site, IsGlobalCatalog, OperatingSystem
Write-Host ""
# Roles FSMO
Write-Host "--- Roles FSMO ---" -ForegroundColor Yellow
netdom query fsmo
Write-Host ""
# Replication
Write-Host "--- Replication ---" -ForegroundColor Yellow
repadmin /replsummary
Write-Host ""
# Services AD
Write-Host "--- Services ---" -ForegroundColor Yellow
Get-Service NTDS, DNS, Netlogon, KDC, DFSR, DHCPServer -ErrorAction SilentlyContinue |
Format-Table Name, Status, StartType
Write-Host ""
# DNS
Write-Host "--- Zones DNS ---" -ForegroundColor Yellow
Get-DnsServerZone | Format-Table ZoneName, ZoneType, ReplicationScope
Write-Host ""
# DHCP
Write-Host "--- Etendues DHCP ---" -ForegroundColor Yellow
Get-DhcpServerv4Scope -ErrorAction SilentlyContinue |
Format-Table ScopeId, Name, StartRange, EndRange, State
Write-Host ""
# Test DNS
Write-Host "--- Test DNS ---" -ForegroundColor Yellow
Resolve-DnsName -Name "_ldap._tcp.$((Get-ADDomain).DNSRoot)" -Type SRV -ErrorAction SilentlyContinue |
Format-Table Name, Type, Target, Port
Write-Host "=== FIN DU DIAGNOSTIC ===" -ForegroundColor Cyan
C:\Scripts\Diagnostic-AD.ps1 et exécutez-le régulièrement pour un suivi proactif de la santé de votre infrastructure Active Directory.