Empêchez Windows NLA de détecter à plusieurs reprises le réseau local comme un nouveau réseau non identifié


14

Je gère un réseau de petites entreprises avec un certain nombre de PC Windows 10 et 7. Par intermittence mais assez fréquemment, les utilisateurs se plaignent de ne plus pouvoir accéder aux dossiers partagés avec d'autres collègues. Un dépannage rapide détermine que le problème est dû au fameux "Réseau non identifié détecté" qui applique ensuite le profil de réseau "Public" au lieu du profil de réseau "Privé", donc le partage de groupe résidentiel / fichier, etc. ne fonctionne pas. De ma recherche, c'est un problème commun pour de nombreux utilisateurs. Je ne vois aucune solution proposée qui fonctionne.

Environnement:

  • Tous les PC Windows sont connectés via Ethernet filaire (bien qu'ils puissent avoir une carte réseau Wifi)
  • Ils sont tous connectés à un commutateur géré Avaya L2 à 48 ports, tous sur le même sous-réseau 10.10.10.x
  • Le commutateur est connecté à un routeur domestique Asus RTN-66U
  • Le routeur Asus se connecte au modem câble
  • Le routeur Asus fournit DHCP aux machines Windows
  • J'ai configuré le routeur avec des réservations DHCP pour chaque PC Windows, c'est-à-dire que les PC obtiennent toujours la même adresse IP au démarrage
  • Aucun contrôleur de domaine

Problème:

Même si j'ai configuré tous les profils de réseau actifs de machines Windows = Privé, ils reviennent fréquemment (toutes les deux semaines environ) à Public, ce qui empêche le partage de fichiers, etc.

Correctifs tentés:

Sur chaque PC Windows, j'ai modifié la stratégie de groupe locale Computer Configuration->Security Settings->Network List Manager Policies:

  • Réseaux non identifiés = privés
  • Identifier les réseaux = privés

Observations:

Je crois que le problème est que le service de détection d'emplacement réseau (NLA) de Windows détecte un nouveau réseau qui provoque la création d'un nouveau profil de réseau qui est ensuite défini par défaut sur Public (même si ci-dessus, j'ai configuré la stratégie de groupe locale par défaut sur Privé) . De nombreux ordinateurs montrent que Windows a détecté plusieurs fois un nouveau réseau non identifié, c'est-à-dire qu'ils affichent «Réseau 14», c'est-à-dire qu'il existe 14 profils de réseau différents. Je vois ces profils multiples lors de l' examen des profils ici dans le Registre: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Les 14 profils correspondent au moment où l'ordinateur était réellement connecté au même réseau que celui décrit ci-dessus.

Je n'ai pas été en mesure de trouver une ressource qui décrit exactement comment NLA génère un identifiant unique pour un réseau et donc pourquoi il pourrait détecter qu'il a découvert un nouveau réseau.

Question:

Comment empêcher Windows d'identifier incorrectement mon réseau local en tant que nouveau réseau? Peut-être que cela aiderait si je savais quelles étapes NLA suit pour générer un identifiant unique pour un réseau?


1
J'ai un peu modifié votre question pour l'aider à se concentrer sur la résolution du problème réel. Voir problème XY .
Je dis Rétablir Monica le

NLA identifie un réseau basé sur l'adresse MAC de la passerelle par défaut spécifiée pour cette carte réseau. Est-il possible que votre routeur soit devenu inaccessible à ces ordinateurs? Le problème semble-t-il affecter plusieurs ordinateurs dans un court laps de temps, ou s'agit-il d'un seul utilisateur un jour, puis d'un autre utilisateur à un moment complètement différent?
Je dis Réintégrer Monica le

Regardez peut-être Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Unmanaged ou au moins autour de cet emplacement dans le registre - et voyez si le DefaultGatewayMAC et DNSSuffix correspondent à ce que vous attendez
Ross

PaulH - Consultez ma réponse quand vous avez un moment, c'est ce que j'ai utilisé avec un succès assez solide dans un environnement de production comme je l'ai mis dans la section Méthode 1 , mais j'ai également fourni plus de détails avec la section Méthode 2 de ma réponse. J'espère que vous trouverez l'une de ces solutions aussi utile que moi pour ce problème.
Pimp Juice IT

Réponses:


5

Méthode 1

Une façon dont j'ai résolu ce problème sur un système Windows Server critique dans un environnement que je maintiens était avec un script de commandes qui utilise Set-NetConnectionProfile et netsh , et définissait explicitement chaque NIC / adaptateur de confiance sur la machine comme privé au démarrage du système avec Planificateur de tâches à l' aide de Run whether user is logged on or notet Run with highest privilegesoption.

entrez la description de l'image ici entrez la description de l'image ici

Remarque: Bien que la note de prime indique que " la solution ne doit pas entraîner de perte de connectivité réseau à implémenter ", je voulais mentionner que, puisque lorsque ce problème se produit, vous avez une interruption du réseau de toute façon, que l'exécution de ce script si le problème se produit de manière aléatoire lorsque le système est pas redémarré que le simple fait d'exécuter ce même script résoudra alors rapidement le problème et récupérera l'accès au réseau de la machine OS dans l'ordre de travail et attendu.

En outre, vous pouvez utiliser le Get-NetConnectionProfile pour obtenir les noms d'alias NIC et les numéros d'index à placer dans l'exemple de script de commandes ci-dessous pour vos besoins et / ou systèmes.

Script de lot

@ECHO ON

::: The below PowerShell will set all the nework adapters to private rather than public and unknown as happens.
:DynamicPSScriptBuild
SET PSScript=%temp%\%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Set-NetConnectionProfile -InterfaceIndex 12 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 20 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 22 -NetworkCategory Private>>"%PSScript%" 
ECHO Set-NetConnectionProfile -InterfaceIndex 24 -NetworkCategory Private>>"%PSScript%"

:PowerShell
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"

:: The below will disable and then re-enable each NIC one-by-one so the unidentfied goes away after set to "private" above
:ResetNICs
SET Array="Ethernet", "Ethernet 2", "Ethernet 3", "Ethernet 4"
FOR %%A IN (%Array%) DO (
    netsh int set int "%%~A" admin=disable
    netsh int set int "%%~A" admin=enable
)
EXIT

Vous trouverez ci-dessous quelques autres méthodes, l'une des nombreuses étant ce que vous avez essayé, mais je l'ai laissé là pour d'autres qui rencontrent ce message au cas où cela les aiderait, mais ce sont quelques façons d'empêcher cela peut-être complètement, mais il y a va toujours être à la hausse et à la baisse à toute méthode que vous choisissez d'utiliser, alors choisissez votre poison et testez en conséquence.

Méthode 2 (plusieurs méthodes)

Réseau non identifié - Passer du public au privé ou au domaine

Si NLA ne peut pas déterminer un emplacement de connexion, il le nomme «non identifié» et marque l'emplacement comme public. Il choisit Public car c'est le plus sûr et vous ne voudriez rien de moins si la connexion est sur la DMZ.

Il existe deux façons simples de résoudre ce problème. L'un utilise la stratégie de sécurité locale pour modifier l'emplacement par défaut des réseaux non identifiés. La deuxième méthode utilise une modification des propriétés de connexion réseau pour fournir à NLA les informations dont il a besoin pour placer correctement l'emplacement.

Utilisation de la stratégie de sécurité locale

Attention: Cela ne doit être utilisé que si l'ordinateur n'a jamais de connexion sur le LAN public. Sinon, vous courez le risque d'avoir un profil de pare-feu moins sécurisé appliqué à votre connexion publique.

  1. Ouvrez " Politique de sécurité locale ".

  2. Cliquez sur " Stratégies du gestionnaire de liste réseau " dans le volet gauche. (Cette sélection est enterrée dans les anciennes versions de Windows.)

  3. Double-cliquez sur " Réseaux non identifiés " dans le volet droit.

  4. Pour les ordinateurs qui n'existent que sur le réseau privé, il est OK de définir " Type d'emplacement " sur " privé ".

    entrez la description de l'image ici

Utilisation des propriétés de connexion réseau

Il ne s'agit pas d'ajouter une IP de passerelle car cela ne fonctionne pas correctement sur un serveur multi-hébergé. Au lieu de cela, nous ajouterons un suffixe DNS afin que NLA puisse localiser correctement le contrôleur de domaine, c'est ainsi qu'il sait marquer l'emplacement comme «réseau de domaine».

  1. Accédez à Connexions réseau (à partir du Centre Réseau et partage, cliquez sur "Modifier les paramètres de l'adaptateur".)

  2. Accédez aux propriétés d'une connexion réseau marquée comme " Non identifié " mais sur le LAN privé.

  3. Accédez aux propriétés d'IPv4 .

  4. Cliquez sur le bouton " Avancé ...".

  5. Sélectionnez l' onglet DNS .

  6. Entrez votre nom de domaine dans la zone de texte pour " Suffixe DNS pour cette connexion: ".

Désactivez, puis activez la connexion pour que NLA réidentifie l'emplacement. Après avoir activé la connexion, l'état doit changer pour le nom de domaine et la catégorie de réseau en "Réseau de domaine". Selon votre configuration, il est probable que vous n'ayez besoin que de «réparer» une connexion pour obtenir toutes les connexions associées afin de voir le domaine.

Passer du privé au public

Il existe deux façons courantes de forcer NLA à marquer une connexion comme publique. L'une consiste à utiliser une règle de pare-feu pour bloquer NLA afin qu'il n'ait d'autre choix que d'utiliser l'emplacement par défaut. L'autre consiste à utiliser le registre pour désactiver NLA sur la connexion.

Utilisation du pare-feu

Je n'ai pas testé cela mais la théorie semble solide.

  1. Ouvrez le " Pare-feu Windows avec fonctions avancées de sécurité " (par exemple wf.msc).

  2. Accédez aux règles sortantes .

  3. Cliquez sur " Nouvelle règle …".

  4. Utilisez ces paramètres:

    • Type de règle: personnalisé
    • Programme: Sélectionnez "Tous les programmes" puis cliquez sur "Personnaliser ...". Sélectionnez "Network Location Awareness" (le nom abrégé est NlaSvc).
    • Protocole et ports: Type de protocole = Tout.
    • Portée: IP locales = Entrez toutes vos IP publiques. Vérifiez les connexions avec plusieurs adresses IP.
    • Action: bloquer
    • Profil: Tous
  5. Une fois la règle activée, désactivez puis activez la connexion réseau pour que NLA ré-identifie l'emplacement.

Utilisation du registre

Je n'ai pas eu ce travail pour moi mais ma situation peut être différente de la vôtre. Trouver le bon numéro de connexion est un peu hasardeux car il y a beaucoup plus d'entrées que vous ne le pensez.

  1. Exécutez regedit

  2. Aller à HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. En dessous, vous devriez voir plusieurs clés étiquetées 0000, 0001, 0002 etc… Regardez à travers celles-ci et trouvez les adaptateurs où vous souhaitez désactiver NLA.

  4. Pour chacun des adaptateurs, ajoutez une nouvelle valeur DWORD nommée "* NdisDeviceType" et définissez-la sur 1 (assurez-vous d'obtenir le * au début du nom).

Devenir drastique

Les profils d'emplacement sont hébergés dans le registre et il semble inoffensif de les supprimer et de laisser Windows les reconstruire. Vous voudrez certainement sauvegarder le registre en premier et vous devrez probablement être connecté au serveur via KVM plutôt qu'à distance (RDP). Je ne prendrai aucune responsabilité si vous choisissez cette étape car je la mets principalement ici pour référence.

L'emplacement des profils est:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

la source


La première méthode semble prometteuse. Je ne suis pas sûr des autres méthodes qui impliquent le redémarrage du service NLA car cela résout toujours le problème de toute façon, ce qui rend difficile de savoir si le redémarrage du service était la solution ou l'autre action. Maintenant, j'ai juste besoin d'une machine qui fait ça mal pour tester sur ...
Je dis Réintégrer Monica

@TwistyImpersonator Oui, la méthode 1 est la méthode que j'ai utilisée et il suffit de l'exécuter en tant que démarrage. Dans ce cas, il s'agit d'un serveur hôte virtuel Hyper-V avec 4 cartes réseau et s'assurer qu'il fonctionne au démarrage a jusqu'à présent résolu le problème pour moi avec ce système particulier. Je pense qu'il s'est produit une autre fois en raison d'un redémarrage du commutateur réseau ou du routeur et plutôt que de redémarrer le serveur hôte virtuel, j'ai simplement exécuté le script manuellement et cela a résolu le problème. J'ai remarqué la question et publié la solution que j'ai utilisée et l'autre ressource citée qui semblait pertinente et potentiellement utile.
Pimp Juice IT

J'ai remarqué que vous avez mis la prime, mais je suppose que je ne savais pas que c'était pour votre besoin plutôt que d'essayer simplement d'obtenir une réponse du PO. C'est bon à savoir également.
Pimp Juice IT

0

J'ai eu ce problème sans fin sur un seul système spécifique. Cela casserait tout à chaque redémarrage. J'ai essayé toutes les solutions que vous avez mentionnées. Après avoir épuisé tout le reste, j'ai eu recours à la désactivation du service "Network Location Awareness". D'après ce que je peux dire, ce n'est pas nécessaire. Cela a définitivement résolu mon problème. Le seul effet secondaire que j'ai remarqué est que la fenêtre "Centre Réseau et partage" a l'air drôle. Ce service n'existait pas avant Windows 7 et ne m'est d'aucune utilité.

Services.msc

"Sensibilisation à l'emplacement réseau", Type de démarrage = "Désactivé"


Hmmm, je ne suis pas sûr que ce soit une bonne idée dans un environnement de domaine ... ou lors de la prise d'un ordinateur portable entre des réseaux approuvés et non approuvés. Des commentaires sur l'un de ces scénarios?
Je dis Réintégrer Monica le

Je fais cela dans mon environnement de domaine. Fonctionne très bien. Si vous utilisez votre ordinateur portable dans un environnement non fiable, vous devez disposer d'autres protections. NLA ne vous sauvera pas. Tout ce qu'il pouvait faire était de désactiver automatiquement les partages. Je suggère de ne pas autoriser de partages sur les ordinateurs portables.
HackSlash

Sans NLA, comment vos systèmes basculent-ils entre le domaine et les profils privés, par exemple lorsqu'un employé ramène un ordinateur portable à la maison?
Je dis Réintégrer Monica le

Sans NLA, il n'y a aucun profil. Pourquoi utilisez-vous ces profils?
HackSlash

De nombreux systèmes que je gère autorisent le trafic entrant lorsqu'ils sont connectés au réseau de domaine, mais ce trafic est bloqué lorsque les systèmes quittent le domaine. C'est ainsi que nous implémentons la défense en profondeur ... les ports ne sont ouverts qu'en cas de besoin et fermés partout ailleurs.
Je dis Réintégrer Monica le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.