Dwie osoby są zalogowane, jedna z nich łączy się z tunelem firmowym, a przeglądarka drugiego konta przestaje wczytywać strony, które jeszcze minutę temu działały. Na tej samej maszynie z ekranu logowania zniknął też wpis Przełącz użytkownika, więc druga osoba nie może wrócić do własnej sesji. Prześledzenie tego od drugiej sesji na zewnątrz to najszybszy sposób zrozumienia, bo w połączeniu pierwszego użytkownika nie ma nic ukrytego, a w problemie drugiego użytkownika nie zostaje nic tajemniczego, gdy zobaczysz, które obiekty są współdzielone.

Zacznij od sesji, która się zepsuła

Przejdź do pulpitu drugiego konta, nie pierwszego. Otwórz tam terminal i, gdy druga sesja jest połączona, obejrzyj tabelę tras oraz listę resolverów. Wszystko, co widzisz, należy do maszyny, a nie do drugiego użytkownika, i to jest pierwsza wskazówka.

Get-NetRoute -AddressFamily IPv4 | Sort-Object RouteMetric | Select-Object -First 12 DestinationPrefix,NextHop,InterfaceAlias
Get-DnsClientServerAddress -AddressFamily IPv4 | Select-Object InterfaceAlias,ServerAddresses
Get-NetConnectionProfile | Select-Object Name,NetworkCategory,IPv4Connectivity

Jeśli trasa domyślna wskazuje teraz interfejs tunelu, ruch drugiego użytkownika też za nią podąża. Jeśli na liście resolverów pojawił się prywatny serwer, ich zapytania trafiają teraz tam, gdzie po zerwaniu tunelu nie dotrą. Żadne z tych zjawisk nie jest błędem klienta; to skutki jednego wspólnego stosu sieciowego.

Trzecie polecenie wyjaśnia drugą klasę skarg. Gdy adapter przełącza maszynę z kategorii sieci publicznej na prywatną, reguły zapory przypisane do profilu zmieniają się dla wszystkich kont naraz, więc aplikacje dozwolone rano mogą zostać zablokowane po południu, choć nikt nie dotknął żadnej reguły.

Połączenie jest na użytkownika, sieć nie

Windows trzyma obiekt połączenia w profilu użytkownika, który je utworzył. Tworzony przez nie adapter wirtualny, instalowane trasy i rejestrowane serwery DNS są w skali całej maszyny. Ten podział jest źródłem obu objawów z tytułu.

To wyjaśnia też, dlaczego wylogowanie pierwszego użytkownika zwykle naprawia drugiego. Usunięcie połączenia usuwa adapter i trasy razem z nim, a stan w skali maszyny wraca do tego sprzed czyjegokolwiek połączenia. To przydatna diagnostyka: jeśli wylogowanie naprawia drugie konto, patrzysz na współdzielony stan, a nie na uszkodzony profil.

Czego nie możesz zrobić, to dać drugiej sesji innej tabeli tras. Tabela jest jedna i dowolne dwie sesje ją dzielą. To właściwość systemu operacyjnego, a nie ograniczenie konkretnego klienta. Oznacza to również, że każdy projekt zakładający inaczej będzie nadal zawodził, a te awarie będą wyglądać jak niepowiązane błędy aplikacji.

Znajdź, co usunęło wpis Przełącz użytkownika, w tej kolejności

Szybkie przełączanie użytkowników zniknęło z zupełnie innego powodu, a rozwiązanie nie ma nic wspólnego z routingiem. Przejdź przez czterech kandydatów po kolei, bo pierwsze dwa cofa się w sekundach, a kolejne mają swoją cenę.

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name HideFastUserSwitching
gpresult /h $env:TEMP\gp.html
Get-Service | Where-Object { $_.DisplayName -match 'Logon|Access|Credential' } | Select-Object Status,Name,DisplayName

Wartość rejestru to najprostsze wyjaśnienie. Jeśli istnieje i ma wartość 1, wpis jest ukryty przez zasady, a ścieżka zasad grupy to Computer Configuration, Administrative Templates, System, Logon oraz ustawienie nazwane na potrzeby ukrywania punktów szybkiego przełączania użytkowników. Ustaw je na Not Configured i odśwież za pomocą gpupdate /force.

Drugie polecenie mówi, czy te zasady są dostarczane z domeny, a nie zapisane lokalnie. Jeśli pojawiają się w raporcie z wygrywającym GPO, edycja lokalnej wartości to tymczasowa naprawa, która wróci przy następnym odświeżeniu, a rozmowę należy przeprowadzić z właścicielem zasad.

Trzecie polecenie obejmuje drugi mechanizm. Dostawca poświadczeń lub dostępu sieciowego, który instaluje moduł logowania, może tłumić wpis, gdy działa, a niektórzy klienci rejestrują też komponent startujący przed logowaniem, który utrzymuje roszczenie na ekranie logowania. Wyłączenie tej usługi przywraca przełączanie, ale usuwa też funkcje przed logowaniem lub posture, dla których moduł istnieje.

CauseHow to confirmCost of the fix
HideFastUserSwitching policyRegistry value present and set to 1None; remove the policy
Logon module serviceService running under a vendor nameLoses pre-logon and posture behaviour
GINA-era assumptionOnly relevant on very old WindowsNothing to fix; the mechanism is gone

Zmień to, nie zamykając się na zewnątrz

Trzymaj otwartą jedną sesję administracyjną podczas pracy i nigdy nie zmieniaj ustawień ekranu logowania na maszynie, do której docierasz tylko przez ten ekran. Najpierw wyloguj pozostałe sesje, zastosuj zmianę, odśwież, a potem testuj, przełączając użytkowników, a nie restartując.

Zapisz, które funkcje posture wyłączyłeś. Aktualizacja klienta może ponownie zainstalować lub włączyć moduł logowania, a objaw wraca bez oczywistej przyczyny, zwykle w środku okna wsparcia, gdy nikt nie pamięta wcześniejszej zmiany.

Na urządzeniu zarządzanym zakładaj, że ustawienie jest dostarczane z góry. Sprawdzenie raportu zasad najpierw oszczędza godzinę lokalnych edycji, które wracają. Mówi też, kogo pytać, gdy odpowiedź brzmi nie. Zgłoszenie, które nazywa wygrywające zasady, jest rozwiązywane dwa razy szybciej niż takie, które opisuje klucz rejestru zmieniony już przez kogoś.

Sprawdź oba konta i wybierz model

Testuj wynik w kolejności, w jakiej przeżywają go obaj użytkownicy. Zaloguj się na drugie konto, gdy pierwsze jest odłączone, potwierdź normalny dostęp, następnie podłącz tunel pierwszego konta i potwierdź, że oczekiwana ścieżka drugiego konta wciąż jest taka, jak zamierzałeś.

qwinsta
Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object InterfaceAlias,NextHop,RouteMetric
Test-NetConnection -ComputerName intranet.example.internal -Port 443

Jeśli oba konta naprawdę potrzebują różnych ścieżek sieciowych w tym samym czasie, uczciwą odpowiedzią są dwie maszyny, dwie maszyny wirtualne albo zasady, w których wymagana jest tylko jedna ścieżka. Tunel dzielony na współdzielonym połączeniu może zawęzić to, co przechodzi, ale nie może dać każdej sesji własnej tabeli. Dojście do tego wcześnie jest tańsze niż odkrycie po trzech próbach obejścia.

To decyzja, którą trzeba podjąć jawnie, zamiast łatać wokół. Jedna tabela tras, jedna lista resolverów, jeden profil zapory: wszystko inne z tego wynika, a naprawa, która to szanuje, będzie działać także w przyszłym miesiącu.

Powiązane artykuły