Metoda 1
Jednym ze sposobów rozwiązania tego problemu w krytycznym systemie Windows Server w jednym utrzymywanym przeze mnie środowisku było użycie skryptu wsadowego korzystającego z Set-NetConnectionProfile i netsh oraz jawne ustawienie każdej zaufanej karty sieciowej / karty na prywatnej podczas uruchamiania systemu za pomocą Harmonogram zadań za pomocą Run whether user is logged on or not
i Run with highest privileges
opcji.
Uwaga: Chociaż nota premiowa mówi „ Rozwiązanie nie może powodować utraty łączności z siecią w celu wdrożenia ”, chciałem wspomnieć, że ponieważ kiedy pojawia się ten problem, i tak masz przerwę w sieci, to uruchomienie tego skryptu, jeśli problem występuje losowo, gdy system jest nie zrestartowałem, że samo uruchomienie tego samego skryptu spowoduje szybkie rozwiązanie problemu i przywrócenie dostępu do sieci systemu operacyjnego w kolejności działania i oczekiwanej kolejności.
Ponadto można użyć Get-NetConnectionProfile, aby uzyskać nazwy aliasów i numery indeksów karty sieciowej, aby umieścić je w przykładowym skrypcie wsadowym poniżej dla potrzeb i / lub systemów.
Skrypt wsadowy
@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
Poniżej znajduje się kilka innych metod, jedną z wielu jest to, czego próbowałeś, ale zostawiłem ją tam innym, którzy napotkają ten post, na wypadek, gdyby im to pomogło, ale są to kilka sposobów, aby całkowicie temu zapobiec, ale są zawsze będą plusy i minusy dowolnej metody, którą wybierzesz, więc wybierz swoją truciznę i przetestuj odpowiednio.
Metoda 2 (wiele metod)
Jeśli NLA nie może ustalić lokalizacji połączenia, nazywa ją „Niezidentyfikowana” i oznacza lokalizację jako Publiczną. Wybiera Publiczny, ponieważ jest to najbardziej bezpieczne i nie chcesz niczego mniej, jeśli połączenie jest w strefie DMZ.
Istnieją dwa proste sposoby, aby to naprawić. Jeden używa lokalnych zasad bezpieczeństwa, aby zmienić domyślną lokalizację niezidentyfikowanych sieci. Druga metoda wykorzystuje zmianę właściwości połączenia sieciowego, aby zapewnić NLA informacje potrzebne do prawidłowego umiejscowienia lokalizacji.
Korzystanie z lokalnych zasad bezpieczeństwa
Przestroga: należy tego używać tylko wtedy, gdy komputer nigdy nie będzie miał żadnych połączeń w publicznej sieci LAN. W przeciwnym razie istnieje ryzyko zastosowania mniej bezpiecznego profilu zapory do połączenia publicznego.
Otwórz „ Lokalne zasady bezpieczeństwa ”.
Kliknij „ Zasady menedżera listy sieci ” w lewym okienku. (Ten wybór jest zakopany w starszych wersjach systemu Windows).
Kliknij dwukrotnie „ Niezidentyfikowane sieci ” w prawym okienku.
W przypadku komputerów, które istnieją tylko w sieci prywatnej, można ustawić „ Typ lokalizacji ” na „ prywatny ”.
Korzystanie z właściwości połączenia sieciowego
Nie chodzi o dodanie adresu IP bramy, ponieważ nie działa to poprawnie na serwerze z wieloma serwerami. Zamiast tego dodamy sufiks DNS, aby NLA mógł poprawnie zlokalizować kontroler domeny, dzięki czemu może oznaczyć lokalizację jako „sieć domenową”.
Przejdź do Połączenia sieciowe (w Centrum sieci i udostępniania kliknij „Zmień ustawienia karty”.)
Przejdź do właściwości jednego połączenia sieciowego oznaczonego jako „ Niezidentyfikowany ”, ale w prywatnej sieci LAN.
Przejdź do właściwości dla IPv4 .
Kliknij przycisk „ Zaawansowane ...”.
Wybierz kartę DNS .
Wpisz nazwę domeny w polu tekstowym „ Sufiks DNS dla tego połączenia: ”.
Wyłącz, a następnie włącz połączenie, aby NLA ponownie zidentyfikował lokalizację. Po włączeniu połączenia Status powinien zmienić się na nazwę domeny i kategorię sieci na „Sieć domeny”. W zależności od konfiguracji prawdopodobne jest, że wystarczy „naprawić” jedno połączenie, aby uzyskać wszystkie powiązane połączenia, aby zobaczyć domenę.
Przenieś z prywatnego na publiczny
Istnieją dwa typowe sposoby zmuszenia NLA do oznaczenia połączenia jako publicznego. Jednym z nich jest użycie reguły zapory, aby zablokować NLA, aby nie miała innego wyboru, jak użyć domyślnej lokalizacji. Drugim jest użycie rejestru do wyłączenia NLA dla połączenia.
Korzystanie z zapory
Nie testowałem tego, ale teoria wydaje się solidna.
Otwórz „ Zaporę systemu Windows z zaawansowanymi zabezpieczeniami ” (tj wf.msc
.).
Przejdź do reguł wychodzących .
Kliknij „ Nowa reguła …”.
Użyj tych ustawień:
- Typ reguły: niestandardowy
- Program: Wybierz „Wszystkie programy”, a następnie kliknij „Dostosuj…”. Wybierz „Świadomość lokalizacji sieci” (krótka nazwa to NlaSvc).
- Protokół i porty: Typ protokołu = Dowolny.
- Zakres: Lokalne adresy IP = Wprowadź wszystkie swoje publiczne adresy IP. Sprawdź dwukrotnie połączenia z wieloma adresami IP.
- Działanie: Zablokuj
- Profil: wszystkie
Po włączeniu reguły wyłącz, a następnie włącz połączenie sieciowe, aby NLA ponownie zidentyfikował lokalizację.
Korzystanie z rejestru
Nie miałem dla mnie tej pracy, ale moja okoliczność może być inna niż twoja. Znalezienie prawidłowego numeru połączenia jest trochę trafione lub przegapione, ponieważ jest o wiele więcej wpisów, niż można się spodziewać.
Uruchom regedit
Iść do HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
Poniżej powinieneś zobaczyć kilka kluczy oznaczonych 0000, 0001, 0002 itd. Przejrzyj je i znajdź adaptery, w których chcesz wyłączyć NLA.
Dla każdego adaptera dodaj nową wartość DWORD o nazwie „* NdisDeviceType” i ustaw ją na 1 (upewnij się, że na początku nazwy znajduje się *).
Drastycznie
Profile lokalizacji znajdują się w rejestrze i usunięcie ich i umożliwienie ich odbudowania przez system Windows wydaje się nieszkodliwe. Na pewno zechcesz najpierw wykonać kopię zapasową rejestru i prawdopodobnie będziesz musiał być podłączony do serwera za pomocą KVM, a nie zdalnie (RDP). Nie biorę żadnej odpowiedzialności, jeśli wybierzesz ten krok, ponieważ przede wszystkim umieszczam go tutaj w celach informacyjnych.
Lokalizacja profili to:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
źródło