Один VPN, два облікові записи Windows: чому ламається другий сеанс
Маршрути й резолвери діють у масштабі всієї машини, тож тунель одного облікового запису перенаправляє інші. Потім знайдіть, яка політика або модуль входу видалив пункт «Змінити користувача».
Двоє людей увійшли в систему, один із них підключає корпоративний тунель, і браузер іншого облікового запису перестає завантажувати сторінки, які ще хвилину тому працювали. На тій самій машині з екрана входу також зник пункт «Змінити користувача», тож друга людина не може повернутися до власного сеансу. Простежити це від другого сеансу назовні — найшвидший спосіб зрозуміти, бо в підключенні першого користувача нічого не приховано, і в проблемі другого користувача не залишається нічого загадкового, щойно видно, які об'єкти спільні.
Почніть із сеансу, який зламався
Перейдіть на робочий стіл другого облікового запису, а не першого. Відкрийте там термінал і подивіться таблицю маршрутизації та список резолверів, поки інший сеанс підключений. Усе, що ви бачите, належить машині, а не іншому користувачеві, і це перша підказка.
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
Якщо маршрут за замовчуванням тепер указує на інтерфейс тунелю, трафік другого користувача також іде ним. Якщо в списку резолверів з'явився приватний сервер, їхні запити тепер ідуть туди, куди вони не зможуть дістатися після обриву тунелю. Ні те, ні інше не є помилкою клієнта; це наслідки одного спільного мережевого стеку.
Третя команда пояснює другу категорію скарг. Коли адаптер перемикає машину з загальнодоступної категорії мережі на приватну, правила брандмауера, прив'язані до профілю, змінюються для всіх облікових записів одразу, тож застосунки, дозволені зранку, можуть бути заблоковані вдень, хоча ніхто не торкався правила.
Підключення — на користувача, мережа — ні
Windows зберігає об'єкт підключення в профілі користувача, який його створив. Створюваний ним віртуальний адаптер, встановлювані маршрути й реєстровані DNS-сервери діють у масштабі всієї машини. Цей поділ і є джерелом обох симптомів із заголовка.
Це також пояснює, чому вихід першого користувача зазвичай виправляє другого. Видалення підключення видаляє адаптер і маршрути разом із ним, і стан у масштабі машини повертається до того, що був до чийогось підключення. Це корисна діагностика: якщо вихід виправляє інший обліковий запис, ви дивитеся на спільний стан, а не на зламаний профіль.
Чого зробити не можна — це дати другому сеансу іншу таблицю маршрутизації. Таблиця одна, і будь-які два сеанси її ділять. Це властивість операційної системи, а не обмеження конкретного клієнта. Це також означає, що будь-який проєкт, який припускає інше, і далі зазнаватиме збоїв, а ці збої виглядатимуть як не пов'язані помилки застосунків.
Знайдіть, що видалило пункт «Змінити користувача», у цьому порядку
Швидке перемикання користувачів зникло з цілком іншої причини, і виправлення не має нічого спільного з маршрутизацією. Пройдіть чотирьох кандидатів по черзі, бо перші два відкочуються за секунди, а пізніші мають ціну.
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
Значення реєстру — найпростіше пояснення. Якщо воно існує і читається як 1, пункт прихований політикою, а шлях груповий політики: Computer Configuration, Administrative Templates, System, Logon, і параметр, названий для приховування точок швидкого перемикання користувачів. Установіть його як Not Configured і оновіть за допомогою gpupdate /force.
Друга команда каже, чи ця політика доставляється з домену, а не записана локально. Якщо вона з'являється у звіті з переможною GPO, редагування локального значення — тимчасове виправлення, яке відкотиться під час наступного оновлення, і розмова має бути з власником політики.
Третя команда охоплює інший механізм. Постачальник облікових даних або мережевого доступу, який встановлює модуль входу, може придушувати пункт, поки працює, а деякі клієнти також реєструють компонент, що запускається до входу і утримує заявку на екрані входу. Вимкнення цієї служби повертає перемикання, але також прибирає функції перед входом або posture, для яких існує модуль.
| Cause | How to confirm | Cost of the fix |
|---|---|---|
| HideFastUserSwitching policy | Registry value present and set to 1 | None; remove the policy |
| Logon module service | Service running under a vendor name | Loses pre-logon and posture behaviour |
| GINA-era assumption | Only relevant on very old Windows | Nothing to fix; the mechanism is gone |
Змініть це, не заблокувавши себе
Тримайте відкритим один адміністративний сеанс, поки працюєте, і ніколи не змінюйте налаштування екрана входу на машині, до якої дістаєтеся лише через цей екран. Спершу вийдіть з інших сеансів, застосуйте зміну, оновіть, а потім перевіряйте перемиканням користувачів, а не перезавантаженням.
Запишіть, які функції posture ви вимкнули. Оновлення клієнта може перевстановити або знову ввімкнути модуль входу, і симптом повертається без очевидної причини, зазвичай посеред вікна підтримки, коли ніхто не пам'ятає попередньої зміни.
На керованому пристрої припускайте, що параметр доставляється згори. Перевірка звіту про політики спершу економить годину локальних правок, які відкочуються. Вона також підказує, кого питати, коли відповідь «ні». Заявка, що називає переможну політику, вирішується вдвічі швидше за ту, що описує ключ реєстру, який хтось уже змінив.
Перевірте обидва облікові записи та виберіть модель
Перевіряйте результат у тому порядку, у якому його переживають обидва користувачі. Увійдіть під другим обліковим записом, коли перший від'єднаний, підтвердьте звичайний доступ, потім підключіть тунель першого облікового запису і підтвердьте, що очікуваний шлях другого облікового запису досі той, що ви задумали.
qwinsta
Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object InterfaceAlias,NextHop,RouteMetric
Test-NetConnection -ComputerName intranet.example.internal -Port 443
Якщо обом обліковим записам справді потрібні різні мережеві шляхи одночасно, чесна відповідь — дві машини, дві віртуальні машини або політика, де потрібен лише один шлях. Розділений тунель на спільному підключенні може звузити те, що проходить, але не може дати кожному сеансу власну таблицю. Дійти до цього раніше дешевше, ніж виявити після трьох спроб обійти.
Це рішення, яке треба ухвалити явно, а не латати навколо. Одна таблиця маршрутизації, один список резолверів, один профіль брандмауера: усе інше випливає з цього, і виправлення, яке це поважає, працюватиме й наступного місяця.