Je gère un réseau de petite entreprise avec un certain nombre de PC Windows 10 et 7. De temps en temps, 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 tristement célèbre "réseau non identifié détecté" qui applique ensuite le profil de réseau "public" au lieu du profil de réseau "privé". Par conséquent, le partage de groupes de maison/fichiers, etc. D'après mes recherches, c'est un problème commun à de nombreux utilisateurs. Je ne vois aucune solution proposée qui fonctionne.
Environnement:
Problème:
Même si j'ai configuré tous les profils réseau actifs des machines Windows = Privé, ils reviennent souvent (toutes les deux semaines environ) sur Public, ce qui empêche le partage de fichiers, etc.
Corrections tentées:
Sur chaque PC Windows, j'ai modifié la stratégie de groupe locale Computer Configuration->Security Settings->Network List Manager Policies
:
Observations:
Je pense que le problème est que le service Windows Network Location Awareness (NLA) détecte un nouveau réseau, ce qui entraîne la création d'un nouveau profil de réseau qui passe ensuite à Public (même si j'ai précédemment configuré la stratégie de groupe locale 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
.
Tous les 14 profils correspondent au moment où l’ordinateur était réellement connecté au même réseau que décrit ci-dessus.
Je n'ai pas été en mesure de trouver une ressource décrivant exactement comment NLA génère un identificateur unique pour un réseau et, par conséquent, pourquoi elle pourrait détecter la découverte d'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 la NLA suit pour générer un identifiant unique pour un réseau?
Dans un environnement que j’ai maintenu, j’ai traité ce problème sur un système Windows Server critique au moyen d’un script de traitement par lots qui utilise Set-NetConnectionProfile et netsh et configurez explicitement chaque carte réseau/adaptateur approuvé de la machine sur privé à démarrage du système avec planificateur de tâches à l'aide de l'option Run whether user is logged on or not
et Run with highest privileges
.
Remarque: Alors que la note de prime indique ", la solution ne doit pas entraîner la perte de la connectivité réseau à implémenter ". Je voulais mentionner En cas d’interruption du réseau, le fait d’exécuter ce script si le problème se produit aléatoirement lorsque le système n’est pas redémarré consiste à exécuter le même script, puis à résoudre rapidement le problème et à rétablir l'accès au réseau de la machine OS dans les conditions de travail attendues. ordre.
De plus, vous pouvez utiliser Get-NetConnectionProfile pour obtenir les noms d'alias et les numéros d'index NIC à insérer dans l'exemple de script de traitement par lots ci-dessous. pour vos besoins et/ou systèmes.
@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 de ces méthodes étant celle que vous avez essayée, mais je l'ai laissée là pour les autres qui rencontrent ce message au cas où cela les aiderait, mais voici quelques moyens d'éviter ce problème, peut-être, mais il existe Il y aura toujours des avantages et des inconvénients par rapport à la méthode que vous choisirez, choisissez votre poison et testez-le en conséquence.
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 il est le plus sécurisé et vous ne voudriez rien de moins si la connexion est établie sur la zone démilitarisée.
Il existe deux manières simples de résoudre ce problème. L'une utilise la stratégie de sécurité locale pour modifier l'emplacement par défaut de réseaux non identifiés. La deuxième méthode utilise une modification des propriétés de la connexion réseau pour fournir à NLA les informations nécessaires pour placer correctement l'emplacement.
Utilisation de la stratégie de sécurité locale
Attention: Ceci ne devrait être utilisé que si l'ordinateur n'a jamais de connexion sur le réseau local public. Sinon, vous courez le risque de voir un profil de pare-feu moins sécurisé appliqué à votre connexion publique.
Ouvrez " la politique de sécurité locale ".
Cliquez sur " Stratégies du gestionnaire de liste de réseau " dans le volet de gauche. (Cette sélection est enterrée dans les anciennes versions de Windows.)
Double-cliquez sur " Réseaux non identifiés " dans le volet de droite.
Pour les ordinateurs qui n'existent que sur le réseau privé, il est correct de définir " type d'emplacement " sur " privé ".
Utilisation des propriétés de la connexion réseau
Il ne s’agit pas d’ajouter une adresse 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, ce qui lui permet de marquer l'emplacement en tant que "réseau de domaine".
Allez à Connexions réseau (à partir du Centre réseau et partage, cliquez sur "Modifier les paramètres de la carte".)
Accédez à la propriété d'une connexion réseau marquée " non identifiée " mais sur le réseau local privé.
Accédez aux propriétés pour IPv4 .
Cliquez sur le bouton " Advanced ...".
Sélectionnez l'onglet DNS.
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 identifie à nouveau l'emplacement. Après avoir activé la connexion, le statut doit passer au nom de domaine et la catégorie de réseau à "Réseau de domaine". Selon votre configuration, il est probable que vous n’ayez besoin que de "réparer" une connexion pour que toutes les connexions associées voient le domaine.
Passer du privé au public
Il existe deux méthodes courantes pour obliger NLA à marquer une connexion comme publique. La première consiste à utiliser une règle de pare-feu pour bloquer la NLA afin qu’elle n’ait pas d’autre choix que d’utiliser l’emplacement par défaut. L'autre consiste à utiliser le registre pour désactiver NLA sur la connexion.
Utiliser le pare-feu
Je n’ai pas testé cela, mais la théorie semble bonne.
Ouvrez " Pare-feu Windows avec sécurité avancée " (i.e
wf.msc
).Allez à Règles sortantes .
Cliquez sur " Nouvelle règle …".
Utilisez ces paramètres:
- Type de règle: Personnalisé
- Programme: Sélectionnez "Tous les programmes" puis cliquez sur "Personnaliser ...". Sélectionnez "Network Location Awareness" (nom abrégé: NlaSvc).
- Protocole et ports: Type de protocole = N'importe lequel.
- Portée: IPs locales = Entrez toutes vos adresses IP publiques. Vérifiez deux fois pour les connexions avec plusieurs IP.
- Action: Bloquer
- Profil: Tous
Une fois la règle activée, désactivez puis activez la connexion réseau pour que NLA identifie à nouveau l'emplacement.
Utiliser le 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 prévu.
Exécuter regedit
Aller au
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
Au-dessous de vous, vous devriez voir plusieurs clés intitulées 0000, 0001, 0002, etc.… Parcourez-les et recherchez les adaptateurs pour lesquels vous souhaitez désactiver la NLA.
Pour chacun des adaptateurs, ajoutez une nouvelle valeur DWORD nommée "* NdisDeviceType" et définissez-la sur 1 (assurez-vous que vous obtenez 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 tout d’abord sauvegarder le registre 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
J'ai eu ce problème sans fin sur un seul système spécifique. Cela briserait tout à chaque redémarrage. J'ai essayé toutes les solutions que vous avez mentionnées. Après avoir épuisé tout le reste, j’ai décidé de désactiver le 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" est amusante. Ce service n'existait pas avant Windows 7 et ne m’est d'aucune utilité.
Services.msc
"Connaissance de l'emplacement du réseau", Type de démarrage = "Désactivé"