Stoppen Sie, dass Windows NLA das lokale Netzwerk wiederholt als neues, nicht identifiziertes Netzwerk erkennt

3005
PaulH

Ich verwalte ein kleines Unternehmensnetzwerk mit mehreren Windows 10- und 7-PCs. Die Benutzer beschweren sich gelegentlich, aber häufig, dass sie mit anderen Kollegen nicht mehr auf freigegebene Ordner zugreifen können. Bei der schnellen Problembehandlung wird festgestellt, dass das Problem auf das berüchtigte "Unidentifizierte Netzwerk erkannt" zurückzuführen ist, das dann das "öffentliche" Netzwerkprofil anstelle des "privaten" Netzwerkprofils anwendet. Daher funktioniert die Heimnetzgruppe / Dateifreigabe usw. nicht. Bei meiner Suche ist dies ein häufiges Problem für viele Benutzer. Ich sehe keine Lösungsvorschläge, die funktionieren.

Umgebung:

  • Alle Windows-PCs sind über kabelgebundenes Ethernet verbunden (möglicherweise verfügen sie jedoch über eine WLAN-Netzwerkkarte)
  • Sie sind alle mit einem verwalteten Avaya L2-Switch mit 48 Ports verbunden, die sich alle im selben Subnetz 10.10.10.x befinden
  • Der Switch ist an einen Asus RTN-66U-Heimrouter angeschlossen
  • Der Asus-Router stellt eine Verbindung zum Kabelmodem her
  • Der Asus-Router stellt Windows-Computern DHCP zur Verfügung
  • Ich habe den Router für jeden Windows-PC mit DHCP-Reservierungen konfiguriert, dh PCs erhalten beim Booten immer die gleiche IP-Adresse
  • Kein Domänencontroller

Problem:

Obwohl ich alle aktiven Windows-Computer als aktive Netzwerkprofile konfiguriert habe = Private, werden sie häufig (alle paar Wochen oder so) auf Public zurückgesetzt, wodurch die gemeinsame Nutzung von Dateien usw. verhindert wird.

Versuchte Korrekturen:

Auf jedem Windows-PC habe ich die lokale Gruppenrichtlinie geändert Computer Configuration->Security Settings->Network List Manager Policies:

  • Nicht identifizierte Netzwerke = privat
  • Identifiating Networks = Privat

Beobachtungen:

Ich glaube, das Problem ist, dass der NLA-Dienst (Windows Network Location Awareness) ein neues Netzwerk erkennt, wodurch ein neues Netzwerkprofil erstellt wird, das dann standardmäßig auf "Öffentlich" gesetzt ist (obwohl ich die lokalen Gruppenrichtlinien oben als "Privat" festgelegt habe). . Viele der Computer zeigen, dass Windows ein neues nicht identifiziertes Netzwerk mehrfach erkannt hat, dh sie zeigen "Netzwerk 14" an, dh es gibt 14 verschiedene Netzwerkprofile. Ich sehe diese mehrere Profile, wenn die Profile hier in der Kanzlei bewerten: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Bei allen 14 Profilen war der Computer tatsächlich mit dem oben beschriebenen Netzwerk verbunden.

Ich konnte keine Ressource finden, die genau beschreibt, wie NLA einen eindeutigen Bezeichner für ein Netzwerk generiert und aus diesem Grund erkennt, warum ein neues Netzwerk entdeckt wurde.

Frage:

Wie kann ich verhindern, dass Windows mein lokales Netzwerk falsch als neues Netzwerk erkennt? Vielleicht wäre es hilfreich, wenn ich wüsste, wie NLA eine eindeutige Kennung für ein Netzwerk generiert.

11
Ich habe Ihre Frage ein wenig editiert, um mich darauf zu konzentrieren, das Problem zu lösen. Siehe [XY-Problem] (https://meta.stackexchange.com/a/66378/271445). Twisty Impersonator vor 6 Jahren 1
NLA identifiziert ein Netzwerk anhand der MAC-Adresse des Standard-Gateways, das für diesen Netzwerkadapter angegeben ist. Ist es möglich, dass Ihr Router für diese Computer nicht mehr erreichbar ist? Scheint das Problem in einem kurzen Zeitfenster mehrere Computer zu betreffen, oder ist es nur ein Benutzer eines Tages und dann ein anderer Benutzer zu einem völlig anderen Zeitpunkt? Twisty Impersonator vor 6 Jahren 0
Schauen Sie sich beispielsweise Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Unmanaged oder zumindest um diesen Speicherort in der Registrierung an und prüfen Sie, ob der DefaultGatewayMAC und der DNSSuffix Ihren Erwartungen entsprechen Ross vor 6 Jahren 0
PaulH - Schauen Sie sich meine Antwort an, wenn Sie einen Moment Zeit haben. Dies ist, was ich in einer Produktionsumgebung mit recht soliden Erfolgen verwendet habe, wie ich es in die ** Methode 1 ** einstelle, aber ich habe auch die ** Methode ausführlicher beschrieben 2 ** Abschnitt meiner Antwort. Ich hoffe, Sie finden eine dieser Lösungen so hilfreich wie ich für dieses Problem. Pimp Juice IT vor 6 Jahren 0

2 Antworten auf die Frage

4
Pimp Juice IT

Methode 1

Ich habe dieses Problem auf einem kritischen Windows Server-System in einer Umgebung behandelt, die ich betreue, mit einem Batch-Skript, das Set-NetConnectionProfile und netsh verwendet, und jeden vertrauenswürdigen NIC / Adapter auf dem Computer beim Systemstart mit privat festlegen Taskplaner mit und Option.Run whether user is logged on or notRun with highest privileges

Hinweis: Während der Kopfgeld-Hinweis lautet: " Die Lösung darf nicht dazu führen, dass die Netzwerkkonnektivität nicht implementiert wird ", wollte ich erwähnen, dass seit dem Auftreten dieses Problems ohnehin eine Netzwerkunterbrechung vorliegt, wenn dieses Skript ausgeführt wird, wenn das Problem zufällig beim System auftritt Nicht neu gestartet, dass das gleiche Skript einfach ausgeführt wird, um das Problem dennoch schnell zu beheben und den Netzwerkzugriff des Betriebssystems in der betriebsbereiten und erwarteten Reihenfolge wiederherzustellen.

Darüber hinaus können Sie das Get-NetConnectionProfile verwenden, um die Aliasnamen der NICs und die Indexnummern zu erhalten, die in das nachstehende Batch-Skript für Ihre Anforderungen und / oder Systeme eingefügt werden.

Batch-Skript

@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 

Hier sind ein paar andere Methoden, mit einer der vielen Möglichkeiten, die Sie ausprobiert haben, aber ich habe es für andere übrig gelassen, die auf diesen Beitrag stoßen, falls es ihnen hilft. Dies sind jedoch einige Möglichkeiten, dies vollständig zu verhindern, aber es gibt einige Möglichkeiten Die Methode, die Sie verwenden, wird immer Vor- und Nachteile, wählen Sie Ihr Gift und testen Sie es entsprechend.

Methode 2 (mehrere Methoden)

Nicht identifiziertes Netzwerk - Wechseln Sie von öffentlich zu privat oder Domäne

Wenn NLA keinen Verbindungsstandort ermitteln kann, wird dieser als "Nicht identifiziert" bezeichnet und der Speicherort als "Öffentlich" gekennzeichnet. Es wählt Public, weil dies am sichersten ist und Sie weniger wollen, wenn die Verbindung in der DMZ besteht.

Es gibt zwei einfache Möglichkeiten, dies zu beheben. Man verwendet die lokale Sicherheitsrichtlinie, um den Standardspeicherort nicht identifizierter Netzwerke zu ändern. Die zweite Methode verwendet eine Änderung der Netzwerkverbindungseigenschaften, um NLA die Informationen zu geben, die zum korrekten Platzieren des Standorts erforderlich sind.

Lokale Sicherheitsrichtlinie verwenden

Achtung: Dies sollte nur verwendet werden, wenn der Computer niemals Verbindungen zum öffentlichen LAN hat. Andernfalls besteht das Risiko, dass ein weniger sicheres Firewall-Profil auf Ihre öffentliche Verbindung angewendet wird.

  1. Öffnen Sie " Lokale Sicherheitsrichtlinie ".

  2. Klicken Sie im linken Bereich auf " Network List Manager Policies ". (Diese Auswahl ist in älteren Windows-Versionen enthalten.)

  3. Doppelklicken Sie im rechten Fensterbereich auf " Unidentified Networks ".

  4. Für Computer, die nur im privaten Netzwerk vorhanden sind, können Sie " Location type " auf " private " setzen.

Eigenschaften der Netzwerkverbindung verwenden

Es geht nicht darum, eine Gateway-IP hinzuzufügen, da dies auf einem mehrfach vernetzten Server nicht ordnungsgemäß funktioniert. Stattdessen fügen wir ein DNS-Suffix hinzu, damit NLA den Domänencontroller ordnungsgemäß finden kann. Auf diese Weise kann der Standort als "Domänennetzwerk" gekennzeichnet werden.

  1. Gehen Sie zu Netzwerkverbindungen (klicken Sie im Netzwerk- und Freigabecenter auf "Adaptereinstellungen ändern".)

  2. Gehen Sie zu den Eigenschaften einer Netzwerkverbindung, die als " Nicht identifiziert " gekennzeichnet ist, jedoch im privaten LAN.

  3. Wechseln Sie zu den Eigenschaften für IPv4 .

  4. Klicken Sie auf die Schaltfläche " Erweitert ".

  5. Wählen Sie die Registerkarte DNS .

  6. Geben Sie Ihren Domainnamen in das Textfeld für " DNS-Suffix für diese Verbindung: " ein.

Deaktivieren Sie und aktivieren Sie die Verbindung, damit NLA den Standort erneut identifiziert. Nach dem Aktivieren der Verbindung sollte der Status in den Domänennamen und die Netzwerkkategorie in "Domänennetzwerk" geändert werden. Abhängig von Ihrem Setup müssen Sie wahrscheinlich nur eine Verbindung "reparieren", damit alle zugehörigen Verbindungen die Domäne sehen können.

Wechseln Sie von privat zu öffentlich

Es gibt zwei Möglichkeiten, die NLA dazu zu zwingen, eine Verbindung als öffentlich zu kennzeichnen. Eine besteht darin, eine Firewall-Regel zu verwenden, um NLA zu blockieren, so dass es keine andere Wahl gibt, als den Standardspeicherort zu verwenden. Zum anderen können Sie die Registrierung verwenden, um NLA für die Verbindung zu deaktivieren.

Verwenden der Firewall

Ich habe das nicht getestet, aber die Theorie scheint gut zu sein.

  1. Öffnen Sie " Windows-Firewall mit erweiterter Sicherheit " (dh wf.msc).

  2. Gehen Sie zu den Regeln für ausgehende Nachrichten .

  3. Klicken Sie auf " Neue Regel …".

  4. Verwenden Sie diese Einstellungen:

    • Regeltyp: Benutzerdefiniert
    • Programm: Wählen Sie "Alle Programme" und klicken Sie auf "Anpassen ...". Wählen Sie "Network Location Awareness" (Kurzname ist NlaSvc).
    • Protokoll und Ports: Protokolltyp = Alle.
    • Geltungsbereich: Lokale IPs = Geben Sie alle Ihre öffentlichen IPs ein. Prüfen Sie, ob Verbindungen mit mehreren IPs vorhanden sind.
    • Aktion: Blockieren
    • Profil: Alle
  5. Wenn die Regel aktiviert ist, deaktivieren und aktivieren Sie die Netzwerkverbindung, damit NLA den Standort erneut identifizieren kann.

Verwendung der Registry

Ich habe diese Arbeit nicht für mich gehabt, aber meine Umstände können sich von Ihren unterscheiden. Das Finden der richtigen Verbindungsnummer ist ein Treffer oder ein Misserfolg, da viel mehr Einträge vorhanden sind, als Sie erwarten würden.

  1. Führen Sie Regedit aus

  2. Gehe zu HKLM\SYSTEM\CurrentControlSet\Control\Class\

  3. Darunter sollten mehrere Schlüssel mit der Bezeichnung 0000, 0001, 0002 usw. angezeigt werden. Durchsuchen Sie diese und finden Sie die Adapter, an denen Sie NLA deaktivieren möchten.

  4. Fügen Sie für jeden Adapter einen neuen DWORD-Wert mit dem Namen "* NdisDeviceType" hinzu, und setzen Sie ihn auf 1 (stellen Sie sicher, dass Sie das * am Anfang des Namens angeben).

Drastisch werden

Die Standortprofile befinden sich in der Registrierung und es scheint harmlos, sie zu löschen und von Windows neu erstellen zu lassen. Sie sollten die Registrierung auf jeden Fall zuerst sichern, und Sie müssen wahrscheinlich über KVM und nicht remote (RDP) mit dem Server verbunden sein. Ich übernehme keine Verantwortung, wenn Sie sich für diesen Schritt entscheiden, da ich dies hier vor allem als Referenz stelle.

Der Ort der Profile ist:

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

Quelle

Die erste Methode sieht vielversprechend aus. Ich bin mir nicht sicher, welche anderen Methoden einen Neustart des NLA-Dienstes beinhalten, da dies das Problem sowieso immer behebt, so dass es schwierig ist zu wissen, ob der Neustart des Dienstes die Lösung oder die andere Aktion war. Jetzt brauche ich nur eine Maschine, die das falsch macht, um sie zu testen. Twisty Impersonator vor 6 Jahren 0
@TwistyImpersonator Ja, Methode 1 ist die Methode, die ich verwendet habe, und es muss nur als Startup ausgeführt werden. In diesem Fall handelt es sich um einen virtuellen Hyper-V-Host-Server mit 4 NICs, der sicherstellt, dass er beim Start ausgeführt wird und das Problem für mich mit diesem bestimmten System bisher gelöst hat. Ich glaube, es gab ein anderes Mal, dass es aufgrund eines Neustarts des Netzwerk-Switches oder Routers aufgetreten ist. Statt den virtuellen Host-Server neu zu starten, habe ich das Skript nur manuell ausgeführt und das Problem behoben. Ich habe die Frage bemerkt und die Lösung, die ich verwendet habe, und die andere zitierte Ressource veröffentlicht, die relevant und möglicherweise hilfreich war. Pimp Juice IT vor 6 Jahren 0
Ich habe gemerkt, dass Sie die Prämie aufbringen, aber ich schätze, ich wusste nicht, dass es für Ihre Bedürfnisse war, anstatt nur zu versuchen, dem OP eine Antwort zu geben. Das ist auch gut zu wissen. Pimp Juice IT vor 6 Jahren 0
0
HackSlash

Ich hatte dieses Problem endlos an nur einem bestimmten System. Bei jedem Neustart würde alles kaputt gehen. Ich habe alle Lösungen ausprobiert, die Sie erwähnt haben. Nachdem ich alles andere ausgeschöpft hatte, habe ich den "Network Location Awareness" -Dienst deaktiviert. Von dem, was ich sagen kann, ist es nicht nötig. Dies hat mein Problem dauerhaft gelöst. Der einzige Nebeneffekt, den ich bemerkt habe, ist, dass das Fenster "Netzwerk- und Freigabecenter" lustig aussieht. Dieser Service gab es vor Windows 7 nicht und ist für mich überhaupt nicht nützlich.

Services.msc

"Network Location Awareness", Starttyp = "Deaktiviert"

Hmmm, nicht sicher, ob dies in einer Domänenumgebung eine gute Idee ist ... oder wenn Sie einen Laptop zwischen vertrauenswürdigen und nicht vertrauenswürdigen Netzwerken verwenden. Irgendein Feedback zu einem dieser Szenarien? Twisty Impersonator vor 6 Jahren 0
Ich mache das in meiner Domain-Umgebung. Funktioniert super. Wenn Sie Ihren Laptop in einer nicht vertrauenswürdigen Umgebung verwenden, müssen Sie andere Schutzvorrichtungen verwenden. NLA wird dich nicht retten. Alles, was es tun könnte, ist, Freigaben automatisch zu deaktivieren. Ich würde vorschlagen, keine Aktien auf Laptops zuzulassen. HackSlash vor 6 Jahren 0
Wie wechseln Ihre Systeme ohne NLA zwischen Domänen- und privaten Profilen, z. B. wenn ein Mitarbeiter einen Laptop mit nach Hause nimmt? Twisty Impersonator vor 6 Jahren 0
Ohne NLA gibt es überhaupt keine Profile. Wofür verwenden Sie diese Profile? HackSlash vor 6 Jahren 0
Viele der von mir verwalteten Systeme lassen eingehenden Datenverkehr zu, wenn sie mit dem Domänennetzwerk verbunden sind. Der Datenverkehr wird jedoch blockiert, wenn die Systeme die Domäne verlassen. So implementieren wir die Tiefenverteidigung ... Ports werden nur dort geöffnet, wo sie benötigt werden, und werden überall geschlossen. Twisty Impersonator vor 6 Jahren 0
NLA ist offensichtlich kein zuverlässiger Weg, um festzustellen, ob es sicher ist, Ports zu öffnen. Ich würde empfehlen, dass Sie das nicht mehr tun, da Sie wissen, dass es unzuverlässig ist. HackSlash vor 6 Jahren 0
Es funktioniert einwandfrei bei etwa 98% meiner Systeme. Die, an denen es nicht funktioniert, sind immer Wiederholungstäter. Das ist das eindeutige Kennzeichen eines umgebungsspezifischen Problems, anstatt dass NLA ein grundlegend fehlerhaftes Merkmal ist. Ich werde Ihre Antwort im Hinterkopf behalten, wo Profile keinen Wert schaffen, aber ich kann nicht zustimmen, dass sie ganz aufgegeben wird, nur aufgrund einiger Randfälle. Twisty Impersonator vor 6 Jahren 0
98% sind nicht fehlerlos. Es ist auch keine effektive Sicherheit. Jedes Netzwerk kann Ihren Laptop dazu bringen, seine Ports zu öffnen. Lesen Sie dies: https://support.microsoft.com/de-de/help/3022777/ms15-005-vulnerability-in-network-location-awareness-service-could-all HackSlash vor 6 Jahren 0