Serveur DNS sur Windows Server 2022
Configuration d'un serveur DNS Windows standalone ou intégré à Active Directory.
| Composant | Version |
|---|---|
| Windows Server | 2022 |
| DNS Server | Intégré |
Durée estimée : 30 minutes
Prérequis :
- Windows Server 2022 installé
- Accès Administrateur
- IP statique configurée
- Nom de domaine à gérer (ex:
example.lan)
1. Installation du rôle DNS
Via PowerShell (recommandé)
# Installer le rôle DNS Server
Install-WindowsFeature -Name DNS -IncludeManagementTools
# Vérifier l'installation
Get-WindowsFeature -Name DNS
Vérifier le service
# Statut du service
Get-Service -Name DNS
# Démarrer si nécessaire
Start-Service -Name DNS
# Configurer le démarrage automatique
Set-Service -Name DNS -StartupType Automatic
2. Configuration du Firewall
# Le rôle DNS configure automatiquement le firewall
# Vérifier les règles
Get-NetFirewallRule -DisplayName "*DNS*" | Select-Object DisplayName, Enabled
# Si nécessaire, activer manuellement
Enable-NetFirewallRule -DisplayGroup "DNS Service"
3. Configurer les paramètres du serveur DNS
Forwarders (redirecteurs)
# Ajouter des forwarders
Add-DnsServerForwarder -IPAddress 8.8.8.8
Add-DnsServerForwarder -IPAddress 8.8.4.4
# Vérifier les forwarders
Get-DnsServerForwarder
# Supprimer un forwarder
# Remove-DnsServerForwarder -IPAddress 8.8.8.8
Paramètres globaux
# Activer le round-robin (load balancing DNS)
Set-DnsServerSetting -RoundRobin $true
# Configurer le scavenging (nettoyage automatique)
Set-DnsServerScavenging -ScavengingState $true -RefreshInterval 7.00:00:00 -NoRefreshInterval 7.00:00:00
# Désactiver la récursion (si serveur autoritaire uniquement)
# Set-DnsServerRecursion -Enable $false
4. Créer une zone forward
Zone primaire
# Créer la zone forward
Add-DnsServerPrimaryZone -Name "example.lan" -ZoneFile "example.lan.dns" -DynamicUpdate None
# Vérifier
Get-DnsServerZone -Name "example.lan"
Si intégré à Active Directory
# Zone intégrée AD (recommandé avec AD)
Add-DnsServerPrimaryZone -Name "example.lan" -ReplicationScope Domain -DynamicUpdate Secure
5. Créer une zone reverse
# Zone reverse pour 192.168.1.0/24
Add-DnsServerPrimaryZone -NetworkId "192.168.1.0/24" -ZoneFile "1.168.192.in-addr.arpa.dns" -DynamicUpdate None
# Vérifier
Get-DnsServerZone -Name "1.168.192.in-addr.arpa"
6. Ajouter des enregistrements DNS
Enregistrements A (Host)
# Serveur de noms
Add-DnsServerResourceRecordA -ZoneName "example.lan" -Name "ns1" -IPv4Address "192.168.1.10" -CreatePtr
# Serveurs applicatifs
Add-DnsServerResourceRecordA -ZoneName "example.lan" -Name "srv-web" -IPv4Address "192.168.1.20" -CreatePtr
Add-DnsServerResourceRecordA -ZoneName "example.lan" -Name "srv-db" -IPv4Address "192.168.1.21" -CreatePtr
Add-DnsServerResourceRecordA -ZoneName "example.lan" -Name "srv-mail" -IPv4Address "192.168.1.22" -CreatePtr
# Vérifier les enregistrements
Get-DnsServerResourceRecord -ZoneName "example.lan" -RRType A
Enregistrements CNAME (Alias)
# Créer des alias
Add-DnsServerResourceRecordCName -ZoneName "example.lan" -Name "www" -HostNameAlias "srv-web.example.lan"
Add-DnsServerResourceRecordCName -ZoneName "example.lan" -Name "mysql" -HostNameAlias "srv-db.example.lan"
Add-DnsServerResourceRecordCName -ZoneName "example.lan" -Name "mail" -HostNameAlias "srv-mail.example.lan"
# Vérifier
Get-DnsServerResourceRecord -ZoneName "example.lan" -RRType CName
Enregistrement MX (Mail)
# Ajouter l'enregistrement MX
Add-DnsServerResourceRecordMX -ZoneName "example.lan" -Name "." -MailExchange "srv-mail.example.lan" -Preference 10
# Vérifier
Get-DnsServerResourceRecord -ZoneName "example.lan" -RRType MX
Enregistrement NS
# Le NS @ est créé automatiquement, mais pour en ajouter un secondaire :
Add-DnsServerResourceRecord -ZoneName "example.lan" -NS -Name "." -NameServer "ns2.example.lan"
7. Configurer les enregistrements PTR
# Si -CreatePtr n'a pas été utilisé, ajouter manuellement
Add-DnsServerResourceRecordPtr -ZoneName "1.168.192.in-addr.arpa" -Name "10" -PtrDomainName "ns1.example.lan"
Add-DnsServerResourceRecordPtr -ZoneName "1.168.192.in-addr.arpa" -Name "20" -PtrDomainName "srv-web.example.lan"
# Vérifier
Get-DnsServerResourceRecord -ZoneName "1.168.192.in-addr.arpa" -RRType PTR
8. Tests DNS
Depuis le serveur
# Test résolution forward
Resolve-DnsName -Name srv-web.example.lan -Server localhost
# Test résolution reverse
Resolve-DnsName -Name 192.168.1.20 -Server localhost
# Test CNAME
Resolve-DnsName -Name www.example.lan -Server localhost
# Test MX
Resolve-DnsName -Name example.lan -Type MX -Server localhost
# Avec nslookup
nslookup srv-web.example.lan localhost
nslookup -type=mx example.lan localhost
Configurer un client Windows
# Configurer le DNS sur une interface
$adapter = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
Set-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex -ServerAddresses "192.168.1.10"
# Vérifier
Get-DnsClientServerAddress -InterfaceIndex $adapter.ifIndex
# Tester
Resolve-DnsName srv-web.example.lan
9. Commandes de gestion
Gestion des zones
# Lister toutes les zones
Get-DnsServerZone
# Exporter une zone
Export-DnsServerZone -Name "example.lan" -FileName "example.lan.backup.dns"
# Recharger une zone
Sync-DnsServerZone -Name "example.lan"
# Supprimer une zone
# Remove-DnsServerZone -Name "example.lan" -Force
Gestion des enregistrements
# Lister tous les enregistrements d'une zone
Get-DnsServerResourceRecord -ZoneName "example.lan"
# Modifier un enregistrement A
$old = Get-DnsServerResourceRecord -ZoneName "example.lan" -Name "srv-web" -RRType A
$new = $old.Clone()
$new.RecordData.IPv4Address = [System.Net.IPAddress]::Parse("192.168.1.25")
Set-DnsServerResourceRecord -ZoneName "example.lan" -OldInputObject $old -NewInputObject $new
# Supprimer un enregistrement
Remove-DnsServerResourceRecord -ZoneName "example.lan" -Name "old-server" -RRType A -Force
Cache et statistiques
# Vider le cache DNS du serveur
Clear-DnsServerCache
# Voir les statistiques
Get-DnsServerStatistics
# Voir le cache
Show-DnsServerCache
10. Logging et diagnostic
Activer le logging DNS
# Activer le debug logging
Set-DnsServerDiagnostics -All $true
# Ou sélectivement
Set-DnsServerDiagnostics -Queries $true -Answers $true -LogFilePath "C:\Windows\System32\dns\dns.log" -MaxMBFileSize 50
# Vérifier
Get-DnsServerDiagnostics
Event Viewer
# Voir les événements DNS récents
Get-WinEvent -LogName "DNS Server" -MaxEvents 50 | Format-Table TimeCreated, Message -Wrap
11. Zone secondaire (optionnel)
Autoriser le transfert sur le primaire
# Autoriser le transfert vers le serveur secondaire
Set-DnsServerPrimaryZone -Name "example.lan" -SecureSecondaries TransferToSecureServers -SecondaryServers "192.168.1.11"
Créer la zone secondaire
# Sur le serveur secondaire
Add-DnsServerSecondaryZone -Name "example.lan" -ZoneFile "example.lan.dns" -MasterServers "192.168.1.10"
# Forcer le transfert
Start-DnsServerZoneTransfer -Name "example.lan" -FullTransfer
12. Intégration Active Directory
Convertir une zone en zone intégrée AD
# Convertir une zone existante
ConvertTo-DnsServerPrimaryZone -Name "example.lan" -ReplicationScope Domain -PassThru
# Activer les mises à jour dynamiques sécurisées
Set-DnsServerPrimaryZone -Name "example.lan" -DynamicUpdate Secure
Vérifier la réplication
# Vérifier l'étendue de réplication
Get-DnsServerZone -Name "example.lan" | Select-Object ZoneName, ZoneType, IsDsIntegrated, ReplicationScope
Dépannage
Le service DNS ne démarre pas
# Vérifier les événements
Get-WinEvent -LogName "DNS Server" -MaxEvents 20
# Vérifier les dépendances
Get-Service -Name DNS -DependentServices
Résolution échoue
# Tester la connectivité
Test-NetConnection -ComputerName 192.168.1.10 -Port 53
# Vérifier que le DNS écoute
Get-NetTCPConnection -LocalPort 53
Get-NetUDPEndpoint -LocalPort 53
# Vérifier les forwarders
Test-DnsServer -IPAddress 8.8.8.8
Zone non répliquée (AD)
# Forcer la réplication AD
repadmin /syncall /AeD
# Vérifier la réplication
Get-DnsServerZone -Name "example.lan" | Select-Object *
Script complet de déploiement
# Script de déploiement DNS complet
$domain = "example.lan"
$network = "192.168.1"
$dnsServer = "192.168.1.10"
# Installer le rôle
Install-WindowsFeature -Name DNS -IncludeManagementTools
# Configurer les forwarders
Add-DnsServerForwarder -IPAddress 8.8.8.8
Add-DnsServerForwarder -IPAddress 8.8.4.4
# Créer les zones
Add-DnsServerPrimaryZone -Name $domain -ZoneFile "$domain.dns"
Add-DnsServerPrimaryZone -NetworkId "$network.0/24" -ZoneFile "$network.in-addr.arpa.dns"
# Ajouter les enregistrements
Add-DnsServerResourceRecordA -ZoneName $domain -Name "ns1" -IPv4Address $dnsServer -CreatePtr
Add-DnsServerResourceRecordA -ZoneName $domain -Name "srv-web" -IPv4Address "$network.20" -CreatePtr
Add-DnsServerResourceRecordA -ZoneName $domain -Name "srv-db" -IPv4Address "$network.21" -CreatePtr
Add-DnsServerResourceRecordCName -ZoneName $domain -Name "www" -HostNameAlias "srv-web.$domain"
Add-DnsServerResourceRecordCName -ZoneName $domain -Name "mysql" -HostNameAlias "srv-db.$domain"
Write-Host "DNS Server configured successfully!" -ForegroundColor Green
Pour aller plus loin
Changelog
| Date | Modification |
|---|---|
| 2024-12 | Création initiale - Windows Server 2022 DNS |