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

14

Ich verwalte ein kleines Unternehmensnetzwerk mit einer Reihe von Windows 10- und 7-PCs. Zeitweise, aber ziemlich häufig beschweren sich Benutzer, dass sie nicht mehr mit anderen Mitarbeitern auf freigegebene Ordner zugreifen können. Durch die schnelle Fehlerbehebung wird festgestellt, dass das Problem auf das berüchtigte "Nicht identifizierte Netzwerk erkannt" zurückzuführen ist, das dann das Netzwerkprofil "Öffentlich" anstelle des Netzwerkprofils "Privat" anwendet, sodass die Gruppen- / Dateifreigabe usw. nicht funktioniert. Nach meiner Suche ist dies ein häufiges Problem für viele Benutzer. Ich sehe keine vorgeschlagenen Lösungen, die funktionieren.

Umgebung:

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

Problem:

Obwohl ich alle aktiven Netzwerkprofile von Windows-Computern = Privat konfiguriert habe, werden sie häufig (etwa alle paar Wochen) auf "Öffentlich" zurückgesetzt, wodurch die gemeinsame Nutzung von Dateien usw. verhindert wird.

Korrekturen versucht:

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

  • Nicht identifizierte Netzwerke = Privat
  • Netzwerke identifizieren = Privat

Beobachtungen:

Ich glaube, das Problem ist, dass der Windows Network Location Awareness (NLA) -Dienst ein neues Netzwerk erkennt, wodurch ein neues Netzwerkprofil erstellt wird, das dann standardmäßig "Öffentlich" ist (obwohl ich oben die lokale Gruppenrichtlinie standardmäßig auf "Privat" konfiguriert habe). . Viele der Computer zeigen an, dass Windows viele Male ein neues nicht identifiziertes Netzwerk erkannt hat, dh "Netzwerk 14", dh es gibt 14 verschiedene Netzwerkprofile. Ich sehe diese mehreren Profile, wenn ich die Profile hier in der Registrierung überprüfe : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Alle 14 Profile sind, als der Computer tatsächlich mit demselben oben beschriebenen Netzwerk verbunden war.

Ich konnte keine Ressource finden, die genau beschreibt, wie NLA eine eindeutige Kennung für ein Netzwerk generiert und warum es möglicherweise erkennt, dass es ein neues Netzwerk entdeckt hat.

Frage:

Wie verhindere ich, dass Windows mein lokales Netzwerk fälschlicherweise als neues Netzwerk identifiziert? Vielleicht würde es helfen, wenn ich wüsste, welche Schritte NLA befolgt, um eine eindeutige Kennung für ein Netzwerk zu generieren?

PaulH
quelle
1
Ich habe Ihre Frage ein wenig bearbeitet, um sie auf die Frage nach der Lösung des eigentlichen Problems zu konzentrieren. Siehe XY-Problem .
Ich sage Reinstate Monica
NLA identifiziert ein Netzwerk basierend auf der MAC-Adresse des für diesen Netzwerkadapter angegebenen Standard-Gateways. Ist es möglich, dass Ihr Router für diese Computer nicht mehr zugänglich ist? Scheint das Problem mehrere Computer in einem kurzen Zeitfenster zu betreffen, oder ist es nur ein Benutzer an einem Tag, dann ein anderer Benutzer zu einer völlig anderen Zeit?
Ich sage Reinstate Monica
Schauen Sie sich vielleicht Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Unmanaged oder zumindest diesen Speicherort in der Registrierung an - und prüfen Sie, ob DefaultGatewayMAC und DNSSuffix Ihren Erwartungen entsprechen
Ross
PaulH - Schauen Sie sich meine Antwort an, wenn Sie einen Moment Zeit haben. Dies habe ich mit ziemlich soliden Erfolgen in einer Produktionsumgebung verwendet, wie ich im Abschnitt Methode 1 angegeben habe, aber ich habe auch den Abschnitt Methode 2 meiner Antwort detaillierter angegeben . Ich hoffe, Sie finden eine dieser Lösungen genauso hilfreich wie ich für dieses Problem.
Pimp Juice IT

Antworten:

5

Methode 1

Ein Weg , ich mit diesem Problem auf einem wichtigen Windows - Server - System in einer Umgebung behandelt habe ich beibehalten wurde mit einem Batch - Skript , das verwendet Set-NetConnectionProfile und netsh und explizit jede NIC vertraute / Adapter an der Maschine privat bei Systemstart mit Taskplaner mit Run whether user is logged on or notund Run with highest privilegesOption.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Hinweis: Während in der Kopfgeldnotiz angegeben ist: " Die Lösung darf nicht zu einem Verlust der Netzwerkkonnektivität führen ", wollte ich erwähnen, dass bei Auftreten dieses Problems ohnehin eine Netzwerkstörung auftritt und dieses Skript ausgeführt wird, wenn das Problem zufällig auf dem System auftritt Wenn Sie nicht neu gestartet werden, wird das Problem durch einfaches Ausführen desselben Skripts schnell behoben und der Netzwerkzugriff des Betriebssystems wird wieder in der funktionierenden und erwarteten Reihenfolge ausgeführt.

Darüber hinaus können Sie das Get-NetConnectionProfile verwenden , um die NIC-Aliasnamen und Indexnummern abzurufen, die für Ihre Anforderungen und / oder Systeme in das folgende Beispiel-Batch-Skript eingefügt werden sollen.

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

Im Folgenden sind einige andere Methoden aufgeführt, von denen eine die vielen ist, die Sie ausprobiert haben, aber ich habe sie für andere belassen, die auf diesen Beitrag stoßen, falls er ihnen hilft, aber dies sind einige Möglichkeiten, dies möglicherweise vollständig zu verhindern, aber es gibt sie Bei jeder Methode, die Sie verwenden, wird es immer Vor- und Nachteile geben. Wählen Sie also Ihr Gift aus und testen Sie es entsprechend.

Methode 2 (mehrere Methoden)

Nicht identifiziertes Netzwerk - Wechseln Sie von öffentlich zu privat oder Domain

Wenn NLA einen Verbindungsspeicherort nicht ermitteln kann, nennt er ihn "Nicht identifiziert" und markiert den Speicherort als "Öffentlich". Es wählt Öffentlich, weil dies am sichersten ist und Sie nicht 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 ordnungsgemäßen Platzieren des Standorts erforderlich sind.

Lokale Sicherheitsrichtlinie verwenden

Achtung: Dies sollte nur verwendet werden, wenn der Computer niemals Verbindungen im öffentlichen LAN hat. Andernfalls besteht die Gefahr, 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 Bereich auf " Nicht identifizierte Netzwerke ".

  4. Für Computer, die nur im privaten Netzwerk vorhanden sind, ist es in Ordnung, " Standorttyp " auf " privat " zu setzen.

    Geben Sie hier die Bildbeschreibung ein

Verwenden der Eigenschaften der Netzwerkverbindung

Hier geht es nicht darum, eine Gateway-IP hinzuzufügen, da dies auf einem Multi-Homed-Server nicht ordnungsgemäß funktioniert. Stattdessen werden wir ein DNS-Suffix hinzufügen, damit NLA den Domänencontroller ordnungsgemäß lokalisieren kann, wodurch bekannt ist, dass der Standort als "Domänennetzwerk" markiert wird.

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

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

  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 und aktivieren Sie die Verbindung, damit NLA den Standort erneut identifiziert. Nach dem Aktivieren der Verbindung sollte sich der Status in Domänenname und Netzwerkkategorie in "Domänennetzwerk" ändern. Abhängig von Ihrem Setup ist es wahrscheinlich, dass Sie nur eine Verbindung "reparieren" müssen, um alle zugehörigen Verbindungen zu erhalten, damit die Domäne angezeigt wird.

Wechseln Sie von privat zu öffentlich

Es gibt zwei gängige Methoden, um NLA zu zwingen, eine Verbindung als öffentlich zu markieren. Eine besteht darin, eine Firewall-Regel zu verwenden, um NLA zu blockieren, sodass keine andere Wahl bleibt, als den Standardspeicherort zu verwenden. Die andere Möglichkeit besteht darin, die Registrierung zu verwenden, um NLA für die Verbindung zu deaktivieren.

Verwenden der Firewall

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

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

  2. Gehen Sie zu Ausgehende Regeln .

  3. Klicken Sie auf " Neue Regel ...".

  4. Verwenden Sie diese Einstellungen:

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

Verwenden der Registrierung

Ich habe diese Arbeit nicht für mich gehabt, aber mein Umstand kann sich von Ihrem unterscheiden. Das Finden der richtigen Verbindungsnummer ist ein Hit oder Miss, da es viel mehr Einträge gibt, als Sie erwarten würden.

  1. Führen Sie regedit aus

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

  3. Darunter sollten sich mehrere Schlüssel mit den Bezeichnungen 0000, 0001, 0002 usw. befinden. Sehen Sie sich diese an und finden Sie die Adapter, an denen Sie NLA deaktivieren möchten.

  4. Fügen Sie für jeden der 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 erhalten).

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 möchten auf jeden Fall zuerst die Registrierung sichern und müssen wahrscheinlich über KVM und nicht über Remote (RDP) mit dem Server verbunden sein. Ich übernehme keine Verantwortung, wenn Sie diesen Schritt wählen, da ich dies hier hauptsächlich als Referenz anführe.

Die Position der Profile ist:

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

Quelle

Zuhälter Saft IT
quelle
Die erste Methode sieht vielversprechend aus. Ich bin mir nicht sicher, welche anderen Methoden den Neustart des NLA-Dienstes beinhalten, da dies das Problem ohnehin immer behebt und es schwierig macht zu wissen, ob ein Neustart des Dienstes die Lösung oder die andere Aktion war. Jetzt brauche ich nur noch eine Maschine, die dies falsch macht, um zu testen ...
Ich sage Reinstate Monica
@TwistyImpersonator Ja, Methode 1 ist die Methode, die ich verwendet habe und die nur als Start ausgeführt wird. In diesem Fall handelt es sich um einen virtuellen Hyper-V-Hostserver mit 4 Netzwerkkarten, und die Sicherstellung, dass er beim Start ausgeführt wird, hat das Problem für mich mit diesem bestimmten System bisher gelöst. Ich glaube, es gab ein anderes Mal, dass es aufgrund eines Netzwerk-Switches oder eines Neustarts des Routers auftrat, und anstatt den virtuellen Host-Server neu zu starten, habe ich das Skript nur manuell ausgeführt und das Problem behoben. Ich bemerkte die Frage und veröffentlichte die von mir verwendete Lösung und die andere zitierte Ressource, die relevant und potenziell hilfreich aussah.
Pimp Juice IT
Ich habe bemerkt, dass Sie das Kopfgeld gezahlt haben, aber ich glaube, ich habe nicht bemerkt, 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
0

Ich hatte dieses Problem endlos auf nur einem bestimmten System. Bei jedem Neustart würde alles kaputt gehen. Ich habe alle von Ihnen genannten Lösungen ausprobiert. Nachdem ich alles andere erschöpft hatte, deaktivierte ich den Dienst "Network Location Awareness". Soweit ich weiß, wird es nicht benötigt. Dies hat mein Problem dauerhaft gelöst. Der einzige Nebeneffekt, den ich bemerkt habe, ist, dass das Fenster "Netzwerk- und Freigabecenter" lustig aussieht. Dieser Dienst gab es vor Windows 7 nicht und ist für mich überhaupt nicht nützlich.

Services.msc

"Network Location Awareness", Starttyp = "Deaktiviert"

HackSlash
quelle
Hmmm, ich bin mir nicht sicher, ob dies eine gute Idee in einer Domänenumgebung ist ... oder wenn Sie einen Laptop zwischen vertrauenswürdigen und nicht vertrauenswürdigen Netzwerken verwenden. Feedback zu einem dieser Szenarien?
Ich sage Reinstate Monica
Ich mache das in meiner Domain-Umgebung. Funktioniert super. Wenn Sie Ihren Laptop in einer nicht vertrauenswürdigen Umgebung verwenden, müssen andere Schutzmaßnahmen vorhanden sein. NLA wird dich nicht retten. Alles, was es tun könnte, ist, Freigaben automatisch zu deaktivieren. Ich würde vorschlagen, keine Freigaben auf Laptops zuzulassen.
HackSlash
Wie wechseln Ihre Systeme ohne NLA zwischen dem Domänen- und dem privaten Profil, z. B. wenn ein Mitarbeiter einen Laptop mit nach Hause nimmt?
Ich sage Reinstate Monica
Ohne NLA gibt es überhaupt keine Profile. Wofür verwenden Sie diese Profile?
HackSlash
Viele der von mir verwalteten Systeme erlauben eingehenden Datenverkehr, wenn sie mit dem Domänennetzwerk verbunden sind. Dieser Datenverkehr wird jedoch blockiert, wenn die Systeme die Domäne verlassen. So implementieren wir Tiefenverteidigung ... Ports werden nur dort geöffnet, wo sie benötigt werden, und überall geschlossen.
Ich sage Reinstate Monica