Dans un réseau isolé, Windows Server 2022 peut saturer les journaux avec des Event 1014 lors de résolutions de noms vers des domaines Microsoft. Ce guide propose une méthode éprouvée (GPO, DNS « blackhole », WSUS, NCSI, Defender, KMS/NTP) pour bloquer ces sorties et obtenir des échecs immédiats.
Vue d’ensemble de la question
Dans un environnement sans accès Internet, il est fréquent d’observer de multiples avertissements DNS Client Events 1014 tels que :
“Name resolution for the name
login.live.com
timed out after none of the configured DNS servers responded.”
Les noms concernés appartiennent presque toujours à des domaines Microsoft (login.live.com
, microsoft.com
, windows.net
, msftconnecttest.com
, etc.). En l’absence d’Internet, le DNS local tente de résoudre ces noms via la racine publique et finit par expirer, ce qui déclenche l’Event 1014. L’objectif est double :
- Empêcher les composants Windows d’initier ces connexions (traiter les causes).
- Lorsque des requêtes persistent, faire échouer immédiatement la résolution pour supprimer le bruit dans les journaux.
La stratégie gagnante combine des GPO ciblées, un WSUS interne, la neutralisation de NCSI et des zones DNS « blackhole » qui renvoient une réponse locale (NXDOMAIN) au lieu de laisser expirer les requêtes.
Approche recommandée
Procédez en deux temps : d’abord réduire à la source les sorties réseau système (Windows Update, télémétrie, Defender cloud, NCSI, activation, NTP), puis traiter le résiduel côté DNS pour forcer une réponse immédiate. Un contrôle au périmètre (pare-feu/proxy) complète le dispositif, mais le plus gros du gain vient des GPO et du DNS interne.
Traiter les causes principales avec GPO et services
Les paramètres ci-dessous sont adaptés à Windows Server 2022. Appliquez-les via GPO au niveau des OU qui contiennent vos serveurs (ou par rôle si nécessaire). Lorsque pertinent, les chemins de registre sont fournis pour vérification et automatisation.
Windows Update : basculer vers WSUS et couper l’accès Internet
Chemin GPO : Configuration ordinateur → Modèles d’administration → Composants Windows → Windows Update
Paramètre | Valeur recommandée | Remarque / Registre |
---|---|---|
Spécifier l’emplacement du service de mise à jour Microsoft sur l’intranet | Activé (URL WSUS : http(s)://<wsus>:8530/8531) | HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\WUServer/WUStatusServer |
Ne pas se connecter à des emplacements Windows Update sur Internet | Activé | HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\DoNotConnectToWindowsUpdateInternetLocations=1 (DWORD) |
Supprimer l’accès à toutes les fonctionnalités de Windows Update (optionnel) | Activé si vous administrez tout via WSUS | HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\SetDisableUXWUAccess=1 |
Optimisation de la distribution (Delivery Optimization)
- Chemin : Composants Windows → Optimisation de la distribution
- Mode de téléchargement : Bypass (99)
- Autoriser les téléchargements depuis d’autres PC : Désactivé
Registre : HKLM\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization\DODownloadMode=99 (DWORD)
Télémétrie & Windows Error Reporting
Chemin GPO : Windows Components → Data Collection and Preview Builds
- Allow Telemetry : 0 – Security (niveau minimal pris en charge sur Windows Server).
Registre : HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection\AllowTelemetry=0
Chemin GPO : Windows Components → Windows Error Reporting
- Disable Windows Error Reporting : Activé
Registre : HKLM\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting\Disabled=1
Microsoft Defender : désactiver MAPS / Cloud sur serveurs isolés
Chemin GPO : Windows Components → Microsoft Defender Antivirus → MAPS
- Join Microsoft MAPS : Désactivé
- Cloud-delivered protection : Désactivé
- Send file samples : Désactivé
Automatisation PowerShell (à exécuter sur un serveur isolé) :
Set-MpPreference -MAPSReporting Disabled -SubmitSamplesConsent NeverSend -CloudBlockLevel 0 -DisableRealtimeMonitoring:$false
# Vérifier
Get-MpPreference | Select-Object MAPSReporting, SubmitSamplesConsent, CloudBlockLevel
Détection de connectivité Internet (NCSI)
NCSI déclenche des requêtes vers www.msftconnecttest.com
et dns.msftncsi.com
. Dans un réseau isolé, coupez ces sondes.
- Chemin GPO : Network → Network Connectivity Status Indicator (NCSI)
- Turn off Active Probes : Activé
- Turn off Passive Polling : Activé
Registre (vérification) :
# Active probes
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator' |
Select-Object NoActiveProbe,DisablePassivePolling
# Paramètre au niveau service NLA
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet' |
Select-Object EnableActiveProbing
Activation & licences : KMS/AVMA
Les tentatives d’activation vers activation.sls.microsoft.com
finissent en timeout. Orientez vos serveurs vers un KMS interne (ou AVMA sur hôte Hyper‑V isolé).
slmgr /ipk <GVLK-Server-2022>
slmgr /skms <kms-serveur:1688>
slmgr /ato
slmgr /dlv
Service de temps (NTP)
Alignez tous les serveurs sur une source NTP interne (souvent le PDC Emulator). GPO : System → Windows Time Service. Exemple CLI :
w32tm /config /manualpeerlist:"ntp-interne.contoso.local" /syncfromflags:manual /update
net stop w32time & net start w32time
w32tm /resync
w32tm /query /status
Rendre les requêtes DNS « sans sortie » et immédiates
Même après durcissement, des composants applicatifs ou services tiers peuvent émettre des résolutions vers des domaines Microsoft. Le vrai bruit vient des timeouts : au lieu de laisser la requête sortir (et expirer), faites répondre votre DNS localement — immédiatement.
Principe : créer des zones primaires « blackhole » (intégrées à AD de préférence) sur vos serveurs DNS pour les domaines observés. Sans enregistrements, la zone renvoie NXDOMAIN instantanément. Optionnellement, ajoutez un enregistrement générique *
pointant vers 0.0.0.0
(A) / ::
(AAAA) si vous préférez un retour « réussi » vers un non‑routable plutôt qu’un NXDOMAIN.
Domaines typiquement utiles à blackholer
Domaine | Pourquoi | Option wildcard |
---|---|---|
msftconnecttest.com | NCSI (sondes actives HTTP) | * -> 0.0.0.0 (facultatif) |
msftncsi.com | NCSI (sondes DNS) | NXDOMAIN suffit |
windowsupdate.com , update.microsoft.com , download.windowsupdate.com , ctldl.windowsupdate.com | Windows Update / catalogue / payloads | NXDOMAIN (WSUS remplace) |
live.com (p.ex. login.live.com ) | S’authentifier aux services Microsoft | NXDOMAIN |
windows.net | Points de terminaison Azure / AAD | NXDOMAIN |
sls.microsoft.com | Activation / licences | NXDOMAIN (KMS interne) |
settings-win.data.microsoft.com , v10.events.data.microsoft.com | Télémétrie | NXDOMAIN |
Important : évitez de blackholer microsoft.com
en bloc si vous avez des besoins de validation de certificats (CRL/OCSP) ou des produits dépendants de certains sous‑domaines. Ciblez d’abord ce que vous observez dans les journaux.
Création via console DNS Manager
- Ouvrez DNS Manager → clic droit Forward Lookup Zones → New Zone…
- Primary zone → Store the zone in Active Directory (si AD DNS)
- Choisissez le niveau de réplication (domaine ou forêt selon vos besoins)
- Indiquez le nom de zone (ex.
msftconnecttest.com
) - Terminez sans créer d’enregistrements. La résolution renverra NXDOMAIN.
- (Option) Créez un enregistrement A nommé
*
vers0.0.0.0
et un AAAA vers::
.
Création en PowerShell pour plusieurs zones
$zones = @(
'msftconnecttest.com','msftncsi.com','windowsupdate.com','update.microsoft.com',
'download.windowsupdate.com','ctldl.windowsupdate.com','live.com',
'windows.net','sls.microsoft.com','settings-win.data.microsoft.com','v10.events.data.microsoft.com'
)
foreach (\$z in \$zones) {
if (-not (Get-DnsServerZone -Name \$z -ErrorAction SilentlyContinue)) {
Add-DnsServerPrimaryZone -Name \$z -ReplicationScope Forest -PassThru | Out-Null
\# Option Wildcard A/AAAA commentée par défaut :
\# Add-DnsServerResourceRecordA -ZoneName \$z -Name '*' -IPv4Address '0.0.0.0' -AllowUpdateAny
\# Add-DnsServerResourceRecordAAAA -ZoneName \$z -Name '*' -IPv6Address '::' -AllowUpdateAny
}
}
# Vérification rapide : renvoi immédiat NXDOMAIN ou 0.0.0.0
'login.live.com','[www.msftconnecttest.com](http://www.msftconnecttest.com)' | ForEach-Object {
try { Resolve-DnsName $\_ -Server (Get-DnsServer).IPAddress } catch { $\_ + ' -> ' + $\_.Exception.Message }
}
Tests et validation côté client
# Journal DNS client : ne doit plus afficher d’expirations après mise en place des zones blackhole
Get-WinEvent -LogName 'Microsoft-Windows-DNS-Client/Operational' |
Where-Object Id -eq 1014 |
Select-Object TimeCreated, Message | Format-Table -AutoSize
# Résolution : échec immédiat
nslookup login.live.com \
Pare-feu et proxy : complément utile
Préférez le blocage au périmètre (pare-feu/proxy) avec filtrage FQDN/URL. Le pare-feu Windows gère mal les FQDN dynamiques en règles sortantes ; un blocage par adresses IP est fragile (changements fréquents). Utilisez‑le à la marge pour des cas précis ou des segments sans proxy.
Si vous disposez d’un proxy applicatif interne, refusez les domaines listés ci‑dessus et retournez une réponse immédiate (HTTP 403/407) pour éviter les délais côté client.
Tâches planifiées « bavardes » à auditer
Selon les rôles installés, certaines tâches planifiées contactent des services Microsoft. Désactivez‑les si elles n’apportent pas de valeur dans votre contexte isolé.
- Customer Experience Improvement Program :
\Microsoft\Windows\Customer Experience Improvement Program\Consolidator
,UsbCeip
- Windows Error Reporting :
\Microsoft\Windows\Windows Error Reporting\QueueReporting
- Application Experience :
\Microsoft\Windows\Application Experience\ProgramDataUpdater
Inventaire rapide en PowerShell :
Get-ScheduledTask -TaskPath '\Microsoft\Windows\Customer Experience Improvement Program\' |
Select-Object TaskName,State,Triggers
Get-ScheduledTask -TaskPath '\Microsoft\Windows\Windows Error Reporting\' |
Select-Object TaskName,State,Triggers
Get-ScheduledTask -TaskPath '\Microsoft\Windows\Application Experience\' |
Select-Object TaskName,State,Triggers
Diagnostic et vérification
Si des Event 1014 persistent, identifiez précisément l’origine (processus, service, rôle) et le nom demandé.
- Capture réseau (natif) :
pktmon
pktmon start --etw -c
REM Reproduire le problème
pktmon stop
pktmon format PktMon.etl -o trace.txt
- Traces Windows (ETL) :
netsh trace
netsh trace start capture=yes tracefile=c:\trace.etl
REM Reproduire, puis :
netsh trace stop
- Journal DNS Client : filtrer les 1014 et lister les noms
wevtutil set-log 'Microsoft-Windows-DNS-Client/Operational' /enabled:true
Get-WinEvent -LogName 'Microsoft-Windows-DNS-Client/Operational' |
Where-Object Id -eq 1014 |
ForEach-Object {
if ($_.Message -match 'name\s+([^\s]+)\s+timed out') { $matches[1] }
} | Group-Object | Sort-Object Count -Descending | Select-Object Count,Name
Procédure rapide (ordre recommandé)
- WSUS + GPO Windows Update (intranet WSUS et “Do not connect…” activé).
- NCSI : désactiver sondes actives/passives.
- Télémétrie minimale + WER désactivé + Defender cloud off.
- Configurer KMS/AVMA et NTP internes.
- DNS : zones « blackhole » pour les domaines observés (au minimum
msftconnecttest.com
,msftncsi.com
,download.windowsupdate.com
,ctldl.windowsupdate.com
,live.com
). - Pare-feu périmétrique (option) pour bloquer les sorties restantes.
- Audit des tâches planifiées et nettoyage.
- Vérifier : disparition des Event 1014 et échecs DNS instantanés.
Modèle d’automatisation PowerShell (exemple)
Ce script applique les réglages clés sur un serveur cible (à adapter à votre politique : exécuter via GPO Startup, Desired State Configuration, ou outil d’orchestration). Testez en pré‑production.
#region Windows Update / DO
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate' -Name 'DoNotConnectToWindowsUpdateInternetLocations' -Type DWord -Value 1
# Renseignez WUServer/WUStatusServer si WSUS en place
# Set-ItemProperty -Path ... -Name WUServer -Value 'http://wsus.contoso.local:8530'
# Set-ItemProperty -Path ... -Name WUStatusServer -Value 'http://wsus.contoso.local:8530'
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization' -Name 'DODownloadMode' -Type DWord -Value 99
\#endregion
\#region Telemetry / WER
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection' -Name 'AllowTelemetry' -Type DWord -Value 0
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting' -Name 'Disabled' -Type DWord -Value 1
\#endregion
\#region NCSI
New-Item -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator' -Force | Out-Null
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator' -Name 'NoActiveProbe' -Type DWord -Value 1
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator' -Name 'DisablePassivePolling' -Type DWord -Value 1
\#endregion
\#region Defender (MAPS/Cloud)
Set-MpPreference -MAPSReporting Disabled -SubmitSamplesConsent NeverSend -CloudBlockLevel 0 -Force
\#endregion
\#region DNS blackhole zones (exemple)
\$zones = @('msftconnecttest.com','msftncsi.com','windowsupdate.com',
'update.microsoft.com','download.windowsupdate.com','ctldl.windowsupdate.com',
'live.com','windows.net','sls.microsoft.com','settings-win.data.microsoft.com','v10.events.data.microsoft.com')
foreach (\$z in \$zones) {
if (-not (Get-DnsServerZone -Name \$z -ErrorAction SilentlyContinue)) {
Add-DnsServerPrimaryZone -Name \$z -ReplicationScope Domain -PassThru | Out-Null
}
}
\#endregion
Write-Host 'Durcissement terminé. Redémarrage recommandé des services concernés.'
Table de mappage GPO ⇄ Registre (référence rapide)
Composant | Paramètre GPO | Clé de Registre | Valeur |
---|---|---|---|
Windows Update | Do not connect to any Windows Update Internet locations | HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\DoNotConnectToWindowsUpdateInternetLocations | 1 (DWORD) |
Delivery Optimization | Download Mode | HKLM\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization\DODownloadMode | 99 (Bypass) |
Télémétrie | Allow Telemetry | HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection\AllowTelemetry | 0 (Security) |
Windows Error Reporting | Disable WER | HKLM\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting\Disabled | 1 |
NCSI | Turn off Active Probes | HKLM\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator\NoActiveProbe | 1 |
NCSI | Turn off Passive Polling | HKLM\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator\DisablePassivePolling | 1 |
Defender | Cloud/MAPS désactivés | Set-MpPreference (cmdlet) | Voir section Defender |
Mesures de succès et contrôle continu
- J+0 : après application des GPO et création des zones blackhole, plus aucun Event 1014 lorsque vous résolvez un domaine Microsoft ciblé. Les tests
nslookup
/Resolve-DnsName
répondent immédiatement (NXDOMAIN ou0.0.0.0
). - J+7 : vérifiez via un script planifié que le volume des 1014 reste à zéro et qu’aucun nouveau domaine n’apparaît. Ajoutez-le à la liste des zones si besoin.
- Audit : conservez des rapports périodiques du journal DNS Client/Operational et des traces de résolution pour justifier du bon cloisonnement.
FAQ et cas particuliers
Que faire si certaines applications ont besoin d’OCSP/CRL Microsoft ?
Dans ce cas, ne blackholez pas microsoft.com
globalement. Identifiez les CDP/AIA/OCSP réellement utilisés par vos certificats et autorisez uniquement ces FQDN au périmètre, tout en conservant l’isolement pour le reste.
Et si j’utilise un DNS non‑Microsoft (Infoblox/BIND) ?
Le principe est identique. Employez des Response Policy Zones (RPZ) pour répondre NXDOMAIN ou réécrire vers 0.0.0.0
. C’est souvent encore plus rapide à déployer à large échelle.
Fichier hosts vs zones DNS ?
Le fichier %SystemRoot%\System32\drivers\etc\hosts
n’est pas scalable et ne gère pas les sous‑domaines de manière souple. Préférez les zones DNS « blackhole », centralisées et répliquées via AD.
Pourquoi pas un blocage IP sur le pare‑feu Windows ?
Les IP publiques de Microsoft changent fréquemment et sont massivement anycast. Les règles IP deviennent vite obsolètes. Le DNS côté serveur est plus robuste et sans délai.
Quid des postes d’admin qui se connectent brièvement à Internet ?
Isolez vos jump hosts dans une OU distincte, avec GPO adaptées. Les contrôles DNS « blackhole » doivent résider dans la couche DNS du segment isolé, pas sur les postes qui sortent temporairement.
Les Event 1014 peuvent‑ils venir d’un nom interne mal résolu ?
Oui. Le 1014 signale un timeout DNS, pas nécessairement un domaine Microsoft. Vérifiez vos suffixes de recherche (search list) et zones internes, surtout si des renvois vers l’Internet sont encore actifs sur certains DNS.
Peut‑on réduire les délais d’attente côté résolveur ?
Il est possible d’ajuster certains paramètres avancés du client DNS et du serveur (timeouts, négatif TTL). Toutefois, la meilleure pratique reste de répondre localement via blackhole pour éviter les expirations.
Checklist d’implémentation prête à l’emploi
- Déployer un WSUS interne et appliquer les GPO Windows Update correspondantes.
- Fixer Delivery Optimization en mode Bypass (99).
- Mettre la télémétrie au minimum, désactiver WER et Defender Cloud/MAPS.
- Désactiver les sondes NCSI actives et passives.
- Configurer KMS/AVMA et un NTP interne.
- Créer des zones DNS blackhole pour les domaines observés (voir liste).
- Renforcer le périmètre (proxy/pare‑feu) avec blocage FQDN.
- Auditer et désactiver les tâches planifiées bavardes.
- Mesurer : plus d’Event 1014, résolutions instantanées, aucune latence côté services.
Exemples de commandes utiles (référence)
# Lister rapidement les 1014 sur 24h
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-DNS-Client/Operational'; StartTime=(Get-Date).AddDays(-1)} |
Where-Object Id -eq 1014 |
Select-Object TimeCreated, Message
# Tester une série de noms observés
\$names = 'login.live.com','[www.msftconnecttest.com','sls.microsoft.com','v10.events.data.microsoft.com](http://www.msftconnecttest.com','sls.microsoft.com','v10.events.data.microsoft.com)'
\$dns = (Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object {\$*.ServerAddresses}).ServerAddresses\[0]
\$names | ForEach-Object {
try { Resolve-DnsName \$* -Server \$dns -ErrorAction Stop | Select-Object Name, Type, IPAddress }
catch { \[PSCustomObject]@{ Name=\$*; Result='Fail (expected)'; Detail=\$*.Exception.Message } }
}
# Vérifier l’état Defender (sur un serveur qui doit rester protégé localement)
Get-MpComputerStatus | Select AMServiceEnabled, AntispywareEnabled, AntimalwareEnabled, RealTimeProtectionEnabled
Remarques finales
- La neutralisation agressive de la télémétrie, de WER et du Defender Cloud réduit la visibilité centralisée et certaines protections temps réel. C’est un compromis logique dans un réseau air‑gapped, mais à arbitrer selon vos exigences.
- Documentez et appliquez ces réglages par GPO afin d’homogénéiser l’ensemble des serveurs. Conservez des modèles (backups GPO/Starter GPO) pour faciliter l’audit et le réemploi.
- Surveillez vos journaux après chaque Patch Tuesday ou ajout de rôle/feature : de nouveaux domaines peuvent apparaître. Ajoutez‑les aux zones blackhole si nécessaire.
Résumé opérationnel
Pour supprimer les DNS Client Events 1014 dans un environnement isolé : redirigez Windows Update vers WSUS et coupez toute sortie Internet via GPO, désactivez NCSI, mettez la télémétrie au strict minimum, neutralisez les rapports d’erreur et la partie cloud de Defender, utilisez KMS/NTP internes, puis créez des zones DNS « blackhole » pour les domaines Microsoft observés (msftconnecttest.com
, msftncsi.com
, *.windowsupdate.com
, login.live.com
, etc.). Les requêtes échouent alors immédiatement, les journaux se taisent et vos serveurs gagnent en stabilité.
Avec cette combinaison GPO + DNS, vous éliminez la cause et l’effet : plus de tentatives de connexion inutiles, et plus d’expirations lentes qui polluent l’observabilité.