Windows Server 2022 : corriger les VLAN qui repassent en Public au redémarrage (NLA, GPO, pare‑feu)

Sur Windows Server 2022, il arrive que des interfaces VLAN repassent en Public après un redémarrage, cassant des règles de pare‑feu créées pour Domaine/Privé. Voici une méthode éprouvée, pas à pas, pour corriger durablement le problème tout en sécurisant l’hôte de sauvegarde.

Sommaire

Les profils réseau VLAN repassent en Public après chaque redémarrage (Windows Server 2022)

Vue d’ensemble de la question

Un serveur de sauvegarde utilise le NIC Teaming (LBFO ou SET) et expose plusieurs interfaces VLAN taguées. Le logiciel de backup déploie des règles de pare‑feu Windows qui n’autorisent les flux entrants que sur les profils Domain/Private. Après chaque reboot, toutes (ou une partie) des interfaces VLAN basculent de Privé à Public. Les corrections appliquées manuellement via PowerShell ou en modifiant le Registre ne tiennent pas : au prochain démarrage, le profil redevient Public.

Pourquoi cela arrive-t-il ?

La cause la plus fréquente est le service Network Location Awareness (NLA), chargé de classifier chaque connexion en DomainAuthenticated, Private ou Public. Lors du boot, si un VLAN est vu comme réseau non identifié (pas de passerelle, pas de résolution DNS, impossibilité de joindre un contrôleur de domaine, etc.), NLA lui attribue par défaut le profil Public. À cela s’ajoute parfois un agent de sécurité (EDR/AV) qui force un profil réseau, ou qui retarde la pile réseau à l’initialisation, ce qui conduit NLA à trancher en Public.

Signes typiques

  • Get-NetConnectionProfile montre NetworkCategory = Public sur les interfaces VLAN.
  • Le journal de votre backup signale « port fermé » ou « connexion refusée » au démarrage, puis OK après une intervention manuelle.
  • Le changement en Privé via PowerShell fonctionne jusqu’au prochain redémarrage.

Comprendre la logique de NLA en environnement VLAN

NLA détermine le profil en combinant des signaux (présence d’un domaine AD, signature de passerelle, network signature, etc.). Sur des VLAN « sans Internet » ni passerelle (typiques en SAN, iSCSI, ou VLAN d’administration de baies), ces signaux manquent ; le réseau est alors classé Unidentified et retombe sur la règle par défaut : Public. De plus, au boot, l’ordre d’initialisation (teaming, pilotes, filtres NDIS, agent EDR, services AD/DNS) rend la détection encore plus fragile.

Solutions pérennes (recommandées)

Forcer le type pour les réseaux non identifiés (stratégie locale/GPO)

La manière la plus propre d’indiquer à NLA « considère mes réseaux non identifiés comme Privés » :

  1. Ouvrez secpol.mscParamètres de sécuritéNetwork List Manager PoliciesUnidentified Networks.
  2. Définissez :
    • Location type = Private
    • User permissions = User cannot change location

En environnement AD, appliquez la même politique via GPO :
Configuration ordinateur → Paramètres Windows → Paramètres de sécurité → Network List Manager Policies → Unidentified Networks.

Effet : à chaque démarrage, tout VLAN non identifiable sera classé Privé, éliminant le retour en Public.

Vérifier/neutraliser les overrides d’un antivirus/EDR

Certains agents apportent leur propre moteur de pare‑feu/profil. Si activé, il peut écraser le profil déterminé par NLA ou empêcher l’application de la politique précédente. Pour trancher :

  1. Désactivez temporairement la fonction « Firewall/Network protection » de l’EDR sur ce serveur (ou basculez en mode observation).
  2. Redémarrez et observez si le profil reste Privé sur les VLAN.
  3. Si confirmé, désactivez durablement la gestion de profil par l’agent sur ce serveur ou créez une règle d’exclusion.

Mesures complémentaires (au besoin)

PowerShell : utile pour corriger, moins pour la persistance

Pour rebasculer rapidement tous les VLAN en Privé :

Get-NetConnectionProfile | Where-Object InterfaceAlias -like 'VLAN*' |
  Set-NetConnectionProfile -NetworkCategory Private

Cela ne résiste pas à NLA/GPO à l’amorçage ; utilisez‑le comme outil de remédiation, pas comme solution durable.

Règles de pare‑feu de secours ciblées

Pour garantir la continuité du backup même si un VLAN repasse brièvement en Public, ajoutez des règles Public étroitement bornées :

# Exemple : autoriser le port 2500 TCP uniquement depuis les sous-réseaux des VLAN
New-NetFirewallRule -DisplayName "Backup - VLAN100 (Public)" -Direction Inbound -Action Allow `
  -Protocol TCP -LocalPort 2500 -Profile Public -RemoteAddress 10.100.0.0/24 `
  -InterfaceAlias "VLAN100"

New-NetFirewallRule -DisplayName "Backup - VLAN200 (Public)" -Direction Inbound -Action Allow `  -Protocol TCP -LocalPort 2500 -Profile Public -RemoteAddress 10.200.0.0/24`
-InterfaceAlias "VLAN200" 

Astuce : combinez -Profile Public avec -InterfaceAlias et -RemoteAddress pour limiter strictement la surface d’exposition.

Registre : à connaître mais à éviter pour la persistance

Chemin : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{GUID}\Category
Valeurs : 0 = Public, 1 = Private, 2 = DomainAuthenticated

Problème : NLA peut réécrire cette valeur au démarrage. Préférez la politique (Unidentified Networks = Private) plutôt que de verrouiller les ACL du Registre, qui peut provoquer des effets de bord et gêner d’autres services.

Procédure pas à pas recommandée

  1. Établissez la cartographie des interfaces. Get-NetAdapter | Sort-Object Name | Format-Table Name, InterfaceDescription, ifIndex, Status Get-NetIPConfiguration | Format-Table InterfaceAlias, IPv4Address, IPv4DefaultGateway, DNSServer Get-NetConnectionProfile | Format-Table Name, InterfaceAlias, NetworkCategory
  2. Confirmez l’absence de passerelle/DNS sur les VLAN concernés. Les VLAN d’administration/stockage n’ont souvent ni passerelle ni DNS ; attendez‑vous donc à l’état « non identifié ».
  3. Appliquez la politique NLA. Unidentified Networks → Private + User cannot change location (via secpol.msc ou GPO).
  4. Contrôlez les agents de sécurité. Désactivez toute prise en main des profils pare‑feu par l’EDR pour ce serveur.
  5. Redémarrez. Vérifiez que Get-NetConnectionProfile retourne Private pour chaque VLAN.
  6. Ajoutez des règles « sauvegarde » de secours côté Public. Ciblez précisément les sous‑réseaux VLAN et, si possible, les IP des pairs de sauvegarde.
  7. Documentez. Notez la configuration GPO et les interfaces couvertes, pour faciliter les audits ultérieurs.

Tableaux récapitulatifs utiles

Symptômes vs. causes probables

SymptômeCause la plus probableAction recommandée
VLAN retourne en Public à chaque bootNLA voit un réseau non identifiéGPO/Local Policy : Unidentified = Private
Profil change malgré la GPOAgent EDR impose un profilDésactiver la gestion de profil par l’EDR
Règles de backup inactives au démarrageOrdre d’initialisation, profil temporaire PublicRègles Public de secours ciblées
Modif Registre non persistanteNLA réécrit CategoryÉviter le Registre, préférer politique

Valeurs de Category dans le Registre

ValeurSignificationRemarques
0PublicPar défaut si réseau non identifié
1PrivateÀ privilégier pour VLAN internes
2DomainAuthenticatedAttribué quand le domaine est joignable

Cas particuliers et bonnes pratiques

Serveur membre d’un domaine mais VLAN sans accès au DC

Un même hôte peut avoir :

  • Un NIC « management » avec profil DomainAuthenticated.
  • Des VLAN de données/stockage sans route vers un DC → Unidentified.

Ce n’est pas un problème si vous forcer Unidentified = Private. Évitez d’essayer de faire joindre le DC à ces VLAN juste pour « gagner » un profil Domain ; ce serait un anti‑pattern réseau et sécurité.

NIC Teaming (LBFO/SET) et ordre d’initialisation

Le teaming crée un adaptateur logique parent ; les VLAN sont des adaptateurs virtuels qui en dépendent. Au démarrage, si le parent ou un filtre (QoS, EDR, capture) n’est pas prêt, NLA évalue « réseau non identifié ». D’où l’intérêt d’une politique Unidentified = Private pour éliminer les aléas d’ordre d’initialisation.

Politique « Attendre la connexion réseau à l’ouverture de session »

Dans certains contextes, activer Toujours attendre le réseau lors du démarrage et de l’ouverture de session de l’ordinateur (stratégie de groupe) améliore la cohérence de l’application GPO au boot. Ce n’est pas une solution au profil VLAN, mais cela évite des décalages d’application de stratégies.

IPv6, DNS suffix et signatures réseau

La présence d’IPv6 ou d’un suffixe DNS n’est pas, à elle seule, une garantie de profil Privé. L’important est d’indiquer à NLA ce qu’il doit faire des réseaux non identifiés. Gardez la pile IPv6 activée si vos sauvegardes l’exigent ; la politique NLA s’applique de façon identique.

Diagnostics et validation

Après configuration, vérifiez :

# 1) État du service NLA
Get-Service NlaSvc | Format-Table Name, Status, StartType

# 2) Profils actuels

Get-NetConnectionProfile |
Sort-Object InterfaceAlias |
Format-Table InterfaceAlias, Name, NetworkCategory, IPv4Connectivity

# 3) Règles actives (extraits)

netsh advfirewall firewall show rule name=all dir=in profile=public | findstr /I "Backup VLAN" 

Vous pouvez également consulter le journal Applications and Services Logs → Microsoft → Windows → NlaSvc → Operational pour suivre la chronologie de classification au démarrage.

Exemples concrets de règles de continuité

Si votre solution de sauvegarde utilise plusieurs ports, créez des groupes de règles. Exemple pour Veeam/logiciel générique TCP :

$ports = 2500, 6180, 9401
$vlans = @(
  @{Alias='VLAN100'; Subnet='10.100.0.0/24'},
  @{Alias='VLAN200'; Subnet='10.200.0.0/24'}
)

foreach (\$v in \$vlans) {
foreach (\$p in \$ports) {
New-NetFirewallRule -DisplayName "Backup \$(\$v.Alias) P\$p (Public)" `      -Direction Inbound -Action Allow -Protocol TCP -LocalPort $p`
-Profile Public -RemoteAddress \$v.Subnet -InterfaceAlias \$v.Alias | Out-Null
}
}

Ajoutez des règles sortantes si nécessaire, de façon symétrique, et n’oubliez pas de documenter les exceptions.

Checklist de durcissement et de pérennité

ContrôleObjectifCommande/Emplacement
Unidentified = PrivateEmpêcher le basculement en Publicsecpol.msc / GPO → Network List Manager Policies
User cannot change locationÉviter un changement manuel maladroitMême emplacement de stratégie
Désactiver override EDREmpêcher l’imposition d’un mauvais profilConsole EDR/AV (politique par machine)
Règles Public de secoursContinuité de sauvegarde au bootNew-NetFirewallRule ... -Profile Public
Validation post‑rebootConfirmer la correctionGet-NetConnectionProfile

Questions fréquentes

Et si je force le profil via le Registre ?
Vous pouvez, mais NLA réécrira souvent la valeur au prochain boot. La solution robuste est la stratégie Unidentified = Private.

Peut‑on créer des règles valables sur tous les profils ?
Oui : -Profile Any. Si le logiciel de sauvegarde ne le propose pas, ajoutez vos propres règles Public étroitement bornées (interfaces + sous‑réseaux).

Pourquoi certaines interfaces restent en DomainAuthenticated ?
Parce qu’elles peuvent joindre le domaine (DC, DNS). Les VLAN sans route vers l’AD resteront « non identifiés » et donc soumis à la politique Unidentified.

Le teaming SET/LBFO change‑t‑il la donne ?
Il change la chronologie d’initialisation. C’est précisément pourquoi une politique NLA claire supprime l’aléa.

Plan d’action en une page

  1. Identifier les interfaces impactées (Get-NetConnectionProfile).
  2. Déployer la stratégie Unidentified Networks = Private (Local Policy ou GPO).
  3. Empêcher les overrides EDR/AV.
  4. Redémarrer et valider.
  5. Ajouter des règles Public de secours limitées aux VLAN.
  6. Documenter et surveiller.

En résumé

  • Le NLA (et parfois un EDR/AV) reclassifie les VLAN en Public au démarrage si le réseau est non identifié.
  • La solution durable est de forcer « Unidentified Networks = Private » via secpol.msc ou GPO, et de bloquer tout override tiers.
  • Ajoutez des règles Public restreintes aux sous‑réseaux VLAN pour garantir la continuité des sauvegardes pendant la fenêtre de boot.

Annexes : commandes rapides

# Voir les profils et la connectivité IPv4/IPv6
Get-NetConnectionProfile | Format-Table InterfaceAlias, NetworkCategory, IPv4Connectivity, IPv6Connectivity

# Basculer un VLAN spécifique en Privé (temporaire si NLA/GPO le réimpose)

Set-NetConnectionProfile -InterfaceAlias "VLAN100" -NetworkCategory Private

# Créer une règle de test Public très ciblée (ping depuis l’appliance de sauvegarde)

New-NetFirewallRule -DisplayName "Ping Backup VLAN100 (Public)" -Direction Inbound -Action Allow \`
-Protocol ICMPv4 -IcmpType 8 -Profile Public -RemoteAddress 10.100.0.10 -InterfaceAlias "VLAN100" 

Avec cette approche, vous obtiendrez un comportement prévisible et durable du profil réseau de vos VLAN sur Windows Server 2022, tout en minimisant l’exposition et en garantissant la disponibilité de votre solution de sauvegarde.

Sommaire