Powstrzymaj system Windows NLA przed wielokrotnym wykrywaniem sieci lokalnej jako nowej, niezidentyfikowanej sieci

14

Zarządzam siecią małych firm z wieloma komputerami z systemem Windows 10 i 7. Z przerwami, ale dość często użytkownicy narzekają, że nie mogą już uzyskiwać dostępu do folderów współdzielonych z innymi współpracownikami. Szybkie rozwiązywanie problemów określa, że ​​przyczyną problemu jest niesławna „Wykryto niezidentyfikowaną sieć”, która następnie stosuje profil sieci „Publiczny” zamiast profilu „Prywatnego”, dlatego udostępnianie grupy domowej / plików itp. Nie działa. Z moich poszukiwań jest to częsty problem wielu użytkowników. Nie widzę żadnych proponowanych rozwiązań, które działałyby.

Środowisko:

  • Wszystkie komputery z systemem Windows są podłączone za pośrednictwem przewodowej sieci Ethernet (chociaż mogą mieć kartę sieciową Wi-Fi)
  • Wszystkie są podłączone do 48-portowego przełącznika zarządzanego Avaya L2, wszystkie w tej samej podsieci 10.10.10.x.
  • Przełącznik jest podłączony do domowego routera Asus RTN-66U
  • Router Asus łączy się z modemem kablowym
  • Router Asus zapewnia DHCP dla komputerów z systemem Windows
  • Skonfigurowałem router z rezerwacją DHCP dla każdego komputera z systemem Windows, tzn. Komputery zawsze otrzymują ten sam adres IP podczas uruchamiania
  • Brak kontrolera domeny

Problem:

Mimo że skonfigurowałem wszystkie aktywne profile sieciowe maszyn Windows = Prywatne, często (co kilka tygodni) wracają z powrotem do Publicznych, co uniemożliwia udostępnianie plików itp.

Próbowano naprawić:

Na każdym komputerze z systemem Windows zmodyfikowałem lokalne zasady grupy Computer Configuration->Security Settings->Network List Manager Policies:

  • Niezidentyfikowane sieci = prywatne
  • Identyfikacja sieci = prywatna

Obserwacje:

Uważam, że problem polega na tym, że usługa Windows Network Location Awareness (NLA) wykrywa nową sieć, co powoduje utworzenie nowego profilu sieci, który następnie przyjmuje wartość domyślną Publiczną (mimo że powyżej skonfigurowałem Lokalne zasady grupy jako domyślne na Prywatne) . Wiele komputerów pokazuje, że Windows wielokrotnie wykrywał nowe niezidentyfikowane sieci, tzn. Pokazuje „Sieć 14”, tj. Istnieje 14 różnych profili sieciowych. Widzę te wiele profili przy przeglądaniu profili tutaj w Rejestrze: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles.

Wszystkie 14 profili ma miejsce, gdy komputer był faktycznie podłączony do tej samej sieci opisanej powyżej.

Nie udało mi się znaleźć zasobu, który dokładnie opisuje, w jaki sposób NLA generuje unikalny identyfikator sieci, a zatem dlaczego może wykryć, że odkrył nową sieć.

Pytanie:

Jak uchronić system Windows przed nieprawidłowym identyfikowaniem mojej sieci lokalnej jako nowej sieci? Być może pomogłoby to, gdybym wiedział, jakie kroki NLA wykonuje, aby wygenerować unikalny identyfikator sieci?

PaulH
źródło
1
Zredagowałem trochę twoje pytanie, aby skupić się na pytaniu o rozwiązanie rzeczywistego problemu. Zobacz problem XY .
Mówię: Przywróć Monikę
NLA identyfikuje sieć na podstawie adresu MAC domyślnej bramy określonej dla tej karty sieciowej. Czy to możliwe, że twój router stał się niedostępny dla tych komputerów? Czy wydaje się, że problem dotyczy wielu komputerów w krótkim okresie czasu, czy może jest to tylko jeden użytkownik jednego dnia, a następnie inny użytkownik w zupełnie innym czasie?
Mówię: Przywróć Monikę
Być może spójrz na Computer \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ NetworkList \ Signatures \ Unmanaged lub przynajmniej wokół tej lokalizacji w rejestrze - i sprawdź, czy DefaultGatewayMAC i DNSSuffix odpowiadają oczekiwaniom
Ross
PaulH - Sprawdź moją odpowiedź, kiedy dostaniesz chwilę, tego właśnie z powodzeniem użyłem w środowisku produkcyjnym, gdy umieściłem w części Metoda 1, ale podałem również więcej szczegółów w części Metoda 2 mojej odpowiedzi. Mam nadzieję, że którekolwiek z tych rozwiązań okaże się tak pomocne, jak w przypadku tego problemu.
Pimp Juice IT

Odpowiedzi:

5

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 noti Run with highest privilegesopcji.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

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)

Niezidentyfikowana sieć - przejście z publicznej do prywatnej lub domeny

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.

  1. Otwórz „ Lokalne zasady bezpieczeństwa ”.

  2. Kliknij „ Zasady menedżera listy sieci ” w lewym okienku. (Ten wybór jest zakopany w starszych wersjach systemu Windows).

  3. Kliknij dwukrotnie „ Niezidentyfikowane sieci ” w prawym okienku.

  4. W przypadku komputerów, które istnieją tylko w sieci prywatnej, można ustawić „ Typ lokalizacji ” na „ prywatny ”.

    wprowadź opis zdjęcia tutaj

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ą”.

  1. Przejdź do Połączenia sieciowe (w Centrum sieci i udostępniania kliknij „Zmień ustawienia karty”.)

  2. Przejdź do właściwości jednego połączenia sieciowego oznaczonego jako „ Niezidentyfikowany ”, ale w prywatnej sieci LAN.

  3. Przejdź do właściwości dla IPv4 .

  4. Kliknij przycisk „ Zaawansowane ...”.

  5. Wybierz kartę DNS .

  6. 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.

  1. Otwórz „ Zaporę systemu Windows z zaawansowanymi zabezpieczeniami ” (tj wf.msc.).

  2. Przejdź do reguł wychodzących .

  3. Kliknij „ Nowa reguła …”.

  4. 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
  5. 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ć.

  1. Uruchom regedit

  2. Iść do HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

  3. Poniżej powinieneś zobaczyć kilka kluczy oznaczonych 0000, 0001, 0002 itd. Przejrzyj je i znajdź adaptery, w których chcesz wyłączyć NLA.

  4. 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

Pimp Juice IT
źródło
Pierwsza metoda wygląda obiecująco. Nie jestem pewien co do innych metod, które wymagają ponownego uruchomienia usługi NLA, ponieważ i tak zawsze to rozwiązuje problem, co utrudnia ustalenie, czy ponowne uruchomienie usługi było rozwiązaniem, czy inną czynnością. Teraz potrzebuję tylko maszyny, która robi to źle, aby przetestować na ...
Mówię: Przywróć Monikę
@TwistyImpersonator Tak, metoda 1 jest metodą, której użyłem i po prostu mam ją uruchomić jako start. W tym przypadku jest to wirtualny serwer hosta Hyper-V z 4 kartami sieciowymi i zapewniający jego działanie, ponieważ jak dotąd uruchomienie rozwiązało problem z tym konkretnym systemem. Wydaje mi się, że zdarzyło się to jeszcze raz z powodu restartu przełącznika sieciowego lub routera i zamiast restartowania wirtualnego serwera hosta, po prostu uruchomiłem skrypt ręcznie i to rozwiązało problem. Zauważyłem pytanie i opublikowałem rozwiązanie, z którego korzystałem, oraz inne cytowane zasoby, które wyglądały na odpowiednie i potencjalnie pomocne.
Pimp Juice IT
Zauważyłem, że wystawiłeś nagrodę, ale chyba nie zdawałem sobie sprawy, że to była twoja potrzeba, a nie tylko próba uzyskania odpowiedzi od OP. Dobrze też to wiedzieć.
Pimp Juice IT
0

Problem ten miałem nieskończenie na jednym konkretnym systemie. Zniszczę wszystko przy każdym ponownym uruchomieniu. Wypróbowałem wszystkie rozwiązania, o których wspomniałeś. Po wyczerpaniu wszystkiego innego, postanowiłem wyłączyć usługę „Network Location Awareness”. Z tego, co mogę powiedzieć, nie jest to potrzebne. To na stałe rozwiązało mój problem. Jedyny efekt uboczny, jaki zauważyłem, to to, że okno „Centrum sieci i udostępniania” wygląda śmiesznie. Ta usługa nie istniała przed Windows 7 i nie jest dla mnie użyteczna.

Services.msc

„Rozpoznawanie lokalizacji w sieci”, typ uruchomienia = „wyłączone”

HackSlash
źródło
Hmmm, nie jestem pewien, czy to dobry pomysł w środowisku domenowym ... lub podczas przenoszenia laptopa między zaufanymi a niezaufanymi sieciami. Wszelkie opinie na temat któregokolwiek z tych scenariuszy?
Mówię: Przywróć Monikę
Robię to w środowisku mojej domeny. Działa świetnie. Jeśli używasz laptopa w niezaufanym środowisku, musisz mieć inne zabezpieczenia. NLA cię nie uratuje. Wszystko, co może zrobić, to automatycznie wyłączyć udostępnianie. Sugerowałbym, aby nie zezwalać na żadne akcje na laptopach.
HackSlash
Bez NLA, w jaki sposób Twoje systemy przełączają się między profilem domeny a profilami prywatnymi, np. Kiedy pracownik zabiera laptopa do domu?
Mówię: Przywróć Monikę
Bez NLA nie ma żadnych profili. Do czego używasz tych profili?
HackSlash
Wiele systemów, którymi zarządzam, zezwala na ruch przychodzący po podłączeniu do sieci domeny, ale taki ruch jest blokowany, gdy systemy opuszczają domenę. W ten sposób wdrażamy obronę dogłębną ... porty są otwierane tylko w razie potrzeby i zamykane wszędzie indziej.
Mówię: Przywróć Monikę