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 not
et Run with highest privileges
option.
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)
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.
Ouvrez " Politique de sécurité locale ".
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.)
Double-cliquez sur " Réseaux non identifiés " dans le volet droit.
Pour les ordinateurs qui n'existent que sur le réseau privé, il est OK de définir " Type d'emplacement " sur " privé ".
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».
Accédez à Connexions réseau (à partir du Centre Réseau et partage, cliquez sur "Modifier les paramètres de l'adaptateur".)
Accédez aux propriétés d'une connexion réseau marquée comme " Non identifié " mais sur le LAN privé.
Accédez aux propriétés d'IPv4 .
Cliquez sur le bouton " Avancé ...".
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 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.
Ouvrez le " Pare-feu Windows avec fonctions avancées de sécurité " (par exemple wf.msc
).
Accédez aux 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" (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
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.
Exécutez regedit
Aller à HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
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.
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