Ручная раздача пакета Azure «точка — сайт» работает для пяти ноутбуков и разваливается на пятидесяти. В скриптовом пути две ловушки, каждая стоит половины дня: ошибка параметра, которая выглядит как сбой сертификата, и маршрут, который подключение так и не устанавливает, даже когда всё остальное верно. Ни одну из них не исправляет повторная загрузка клиентского пакета. Выполните проверки ниже по порядку и остановитесь на первой неудачной.

Я держу порядок неизменным, потому что каждый шаг предполагает, что предыдущий верен.

1. Исправьте область профиля до первого устройства

Профиль для всех пользователей живёт на машине и появляется в каждом сеансе. Профиль отдельного пользователя следует за одной учётной записью и хранит её учётные данные в контексте этой записи. Выберите один и держитесь его, потому что машина с обоими показывает две записи с одним именем, и пользователи подключаются к той, что появится первой. Изменить область позже означает сначала удалить старый профиль, а не редактировать его на месте.

Профили для всех пользователей подходят для общих устройств и киосков, где никто не входит с личной учётной записью. Это неверное значение по умолчанию, когда сертификат выдаётся на человека, поскольку профиль уровня машины не может предъявить учётные данные, принадлежащие кому-то другому. Запишите выбор в журнал развёртывания до появления второго ноутбука.

2. Передавайте переключатели как переключатели

Add-VpnConnection принимает параметры-переключатели, которые либо присутствуют, либо отсутствуют. Передача им $true вызывает ошибку EapConfigXmlStream, поэтому многие обсуждения этой темы заканчиваются проверкой цепочек сертификатов, которые никогда не были проблемой.

Add-VpnConnection -Name "Contoso P2S" `
  -ServerAddress "azuregateway-00000000-0000-0000-0000-000000000000.cloudapp.net" `
  -AllUserConnection -UseWinLogonCredential -RememberCredential `
  -TunnelType Automatic -EncryptionLevel Required -AuthenticationMethod MSChapv2

Адрес шлюза выше приведён для примера; возьмите настоящий из скачанного пакета и держите его в кавычках. -AllUserConnection требует повышенного сеанса, а создаваемый профиль имеет область машины, даже если вы выполнили команду как администратор. Прочитайте набор параметров с помощью Get-Help Add-VpnConnection -Parameter *, прежде чем добавлять новые переключатели.

3. Добавьте маршрут, который адаптер не добавляет

Адаптер «точка — сайт» устанавливает маршрут для пула адресов клиента и ничего больше.

Префикс виртуальной сети вне этого пула остаётся недоступным, пока туннель всё ещё сообщает Connected, и это самый запутанный сбой в этом рабочем процессе. Добавьте маршрут явно после успешного подключения и направьте его на адрес интерфейса, полученный адаптером, а не на публичное имя шлюза. Этот адрес берётся из ipconfig после подключения и меняется между сеансами.

route add 10.0.0.0 mask 255.255.0.0 10.0.1.5
route print -4 | findstr /c:"10.0.0.0"

Удаляйте маршрут при отключении, чтобы устаревший следующий переход позже не мог отправить трафик в чёрную дыру. Считайте команду задокументированным локальным отклонением: если будущий выпуск клиента сам добавит маршрут, ваша строка станет дубликатом, конкурирующим с собственным следующим переходом пакета.

4. Проверьте как обычный пользователь

Сеанс администратора скрывает ошибки области, потому что повышение иногда даёт учётные данные, которых у настоящего пользователя не было бы.

Войдите как не администратор, подключитесь через профиль и проверьте одну частную службу вместо публичного интернета. Убедитесь, что профиль появляется в Get-VpnConnection -AllUserConnection, состояние достигает Connected, а добавленный маршрут указывает на текущий адрес адаптера. Затем усыпите машину, разбудите её и снова сравните ipconfig.

5. Аккуратно уберите неудачное развёртывание

Remove-VpnConnection с -AllUserConnection и -Force удаляет профиль уровня машины. Force важен, потому что подключённый профиль иначе отказывается удаляться, а наполовину удалённый профиль диагностировать труднее, чем чистую переустановку.

Храните имя профиля, адрес шлюза и добавленные маршруты в заметках о развёртывании. Эти три значения нужны звонку в службу поддержки, прежде чем кто-то откроет заявку, и они же нужны следующему скрипту, когда адрес шлюза изменится. Добавьте версию клиентского пакета в ту же заметку, потому что поведение маршрута принадлежит этому пакету, а не Windows.

Похожие статьи