Ein bombiger Titel, ich weiß 😛 Schätzungsweise nahezu jeder Windows-Administrator hat sich schon einmal damit herumschlagen dürfen, das nach einem Neustart, meist nach den aktuellen Windows Updates, als Netzwerkkategorie “Öffentliches Netzwerk” statt “Privates Netzwerk” oder “Domänennetzwerk” angezeigt bzw. angewendet wird.
Im Domänennetzwerk sieht man des Öfteren auch “Privates Netzwerk” statt eben “Domänennetzwerk”. Dieses Verhalten tritt nicht überall auf und die Server-Version oder -Edition spielt ebenfalls keine Rolle. Auf Clients habe ich dieses “Fehlverhalten” nicht allzu oft bislang gesehen.
Im Laufe der Jahre gab es zu diesem Thema bereits mehrere Beiträge in diesem Blog, unter anderem wie man die Netzwerkkategorie via Powershell ändert. An der zugrundeliegenden Problematik hat sich (leider) selbst unter Windows Server 2019 nichts geändert.
In der Regel reicht es aus den Dienst
NLA (Network Location Awareness)“ (Dienstname: "NlaSvc")
neu zu starten. Damit man dies nicht immer manuell tun muss, kann man das Ganze als Aufgabe hinterlegen. Es hat sich bis hierhin gezeigt, das eine Verzögerung bevor die Aufgabe “Beim Start” ausgeführt wird nicht verkehrt ist:
Zudem ist eine kurze Pause zwischen Dienst-Stopp und -Start hilfreich um erfolgreich ans Ziel zu gelangen. Die notwendigen Befehle packt man in ein simples Batch-Skript, das die Aufgabe dann ausführt:
@echo off rem Netzwerklistendienst und NLA beenden net stop netprofm net stop NlaSvc rem Kurze Pause ping 127.0.0.1 -n 10 > nul rem Dienste erneut starten net start netprofm net start NlaSvc
Als neues Phänomen ist unter Windows Server 2019 hinzugekommen, das ein installierter DHCP-Server nach dem Wechsel der Netzwerkkategorie von “Öffentlich” oder “Privat” zu “Domänennetzwerk” dennoch nicht erreichbar ist und folglich keine IP-Adressen verteilen kann. Hier hilft ebenfalls ein Dienst-Neustart. Als Gesamtkunstwerk kann das so aussehen:
@echo off rem DHCP-Server, Netzwerklistendienst und NLA beenden net stop DHCPServer net stop netprofm net stop NlaSvc rem Kurze Pause ping 127.0.0.1 -n 10 > nul rem Dienste erneut starten net start netprofm net start NlaSvc net start DHCPServer
Hinweis: Auf “timeout” wurde bewusst verzichtet und stattdessen der klassische Trick mit “ping” als Pause verwendet, da der erstgenannte Befehl in Aufgaben oder Skripten ohne angemeldeten Benutzer und aktiver Sitzung nicht funktioniert.
Update 03.02.2023
In den Kommentaren (Vielen Dank dafür) zu diesem und dem Beitrag
Windows: Nach Neustart bei Netzwerkkategorie kein Domänennetzwerk mehr
wurde vielfach vorgeschlagen eine Abhängigkeit vom DNS-Dienst zu erstellen. Dies geht in der Eingabeaufforderung wie folgt:
sc config nlasvc depend= NSI/RpcSs/TcpIp/Dhcp/Eventlog/DNS/NTDS
Update 11.08.2023
Scheinbar greift dieses Thema jetzt wie eine Seuche um sich. Mittlerweile haben wir das Problem bei sehr vielen Windows Server 2022 und leider lässt sich der NLA-Dienst nicht mehr manuell neu starten:
Eine Ursache hierfür kann sein, wenn man IPv6 deaktiviert hat. Aber selbst auf Systemen wo IPv6 aktiv ist funktioniert es nicht (mehr). Der Workaround besteht nun darin die Dienstabhängigkeit zu DNS herzustellen wie es im vorigen Update bereits genannt wurde und oft in den Kommentaren erwähnt wird. Es gibt zwei Wege das zu tun:
In der Registry unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc
beim Eintrag
DependOnService
die weiteren Dienste hinzufügen. Am einfachsten geht es über folgenden Befehl:
sc config nlasvc depend= NSI/RpcSs/TcpIp/Dhcp/Eventlog/DNS/NTDS
Achtung: “DNS” steht für den DNS-Dienst, den es nur auf Domänencontrollern und DNS-Servern gibt. “NTDS” steht für den Verzeichnisdienst, also Active Directory, den es nur auf Domänencontrollern gibt. Folglich darf man nicht auf Systemen die kein DC oder DNS-Server sind diese Abhängigkeit herstellen!
Das bedeutet: Auf Member-Servern und Clients lässt man “NTDS” weg und ersetzt “DNS” durch “Dnscache”:
sc config nlasvc depend= NSI/RpcSs/TcpIp/Dhcp/Eventlog/Dnscache
Diese Änderungen lassen sich wie folgt wieder rückgängig machen:
sc config nlasvc depend= NSI/RpcSs/TcpIp/Dhcp/Eventlog
Update 15.02.2024
Dieter hat mir folgende Info (Vielen Dank dafür) zukommen lassen:
"Und diese Registrierungseinträge setzte ich. Das habe ich aktuell mit einer Server 2022 Std. der PDC spielt getestet, der bei jedem Neustart das NLA-Problem hatte." Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters] "MaxNegativeCacheTtl "=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "NegativeCachePeriod "=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters] "AlwaysExpectDomainController"=dword:00000001
Diese stammen aus folgenden Beitrag
Selbst getestet habe ich Sie noch nicht, aber es sieht vielversprechend aus.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Hallo Andy,
ich habe es bei Windows Server 2022 mit einem einfachen PowerShell-Skript in der Aufgabenplanung geloest.
Als Netzwerkprofil wurde immer privat angezeigt
Auf meinem Mainboard X11SPM-F befinden sich 2 Netzwerkadapter, einer ist deaktiviert (Ethernet).
Der deaktivierte Adapter wird 90 Sekunden nach dem Start aktiviert und nach 2 Sekunden wieder deaktiviert:
Enable-Netadapter -Name “Ethernet”
Start-Sleep -Seconds 2
Disable-Netadapter -Name “Ethernet”
Danach wird das Netzwerkprofil Domaene angezeigt (Adapter Ethernet2).
Das hat den Vorteil, dass es zu keiner Netzwerkunterbrechung kommt und somit keinen Fehler in der Ereignisanzeige erzeugt (Anwendungs- und Dienstprotokolle / DNS-Server)
Gruss
Peter
Hallo,
noch eine kurze Anmerkung zur Mail vom 26.08.2022:
Damit das Skript immer fehlerfrei durchlaeuft, sollte es wie folgt ergaenzt werden:
Enable-NetAdapter -Name “Ethernet” -Confirm:$false
Start-Sleep -Seconds 2
Disable-NetAdapter -Name “Ethernet” -Confirm:$false
Gruss
Peter
Einfachere Lösung als das Script:
sc config nlasvc depend= NSI/RpcSs/TcpIp/Dhcp/Eventlog/DNS/NTDS
das geht nur in der cmd.exe, nicht in Powershell, und setzt eine Dependency für den Network Location Awareness Service auf DNS und Domain Services, d.h. er wird erst gestartet, wenn eine Domain vorhanden ist.
könnte das etwas für euch sein?
>https://github.com/ElectronicElephant/NCSIOverride<
könnte das etwas für euch sein?
https://github.com/ElectronicElephant/NCSIOverride
Danke für dein Kommentar, aber das hat mit dem Thema nichts zu tun.
Bei Member-Servern habe ich die Erfahrung gemacht, dass die Erkennung viel besser funktioniert, wenn man deren IP-Adresse via DHCP zuweist. Ich habe jeden betroffenen Server auf DHCP (mit Reservierung) umgestellt und seitdem ist Ruhe. Geht natürlich nicht bei DCs, aber da hatten wir das Problem zum Glück auch nie. Zu WS2K22 kann ich noch nichts sagen, aber bei WS2K12/16/19 hat das immer geklappt.
… die Powershell-Version für das Setzen der Reg-Key wäre übrigends:
Domaincontroller
Set-ItemProperty -Path “HKLM:SYSTEMCurrentControlSetServicesNlaSvc” -Type MultiString -Name “DependOnService” -Value “NSI”, “RpcSs”, “TcpIp”, “Dhcp”, “Eventlog”, “DNS”, “NTDS”
Non-Domaincontroller
Set-ItemProperty -Path “HKLM:SYSTEMCurrentControlSetServicesNlaSvc” -Type MultiString -Name “DependOnService” -Value “NSI”, “RpcSs”, “TcpIp”, “Dhcp”, “Eventlog”, “Dnscache”