Как выбрать клиент VPN для Mac под уже имеющийся шлюз
SSL VPN — это семейство продуктов, а не один протокол. Спросите у владельца шлюза клиент, профиль и способ входа, затем проверьте маршруты и DNS на Mac.
На странице загрузки появляются шесть приложений VPN для Mac, и ни одно не говорит, какое примет шлюз вашего работодателя. Это не пробел в магазине, а пробел в передаче. Один SSL VPN — это семейство продуктов, а не протокол, поэтому два шлюза с одинаковым экраном входа могут требовать разных клиентов. Вот порядок, которого я придерживаюсь, когда мне передают Mac и адрес сервера: выясните, на чём говорит шлюз, выберите подходящий клиент, а затем проверьте маршруты и DNS, прежде чем доверять туннелю работу.
Начните со шлюза, а не с магазина приложений
Приложение работает на вашем Mac, но соединение должно принять и доступ предоставить что-то другое: шлюз с оператором, адресом, совместимыми настройками и способом авторизовать вас. Бесплатный клиент может быть хорошей программой и всё равно не давать ничего из этого. Доступ к работе, домашний шлюз и коммерческий выход в интернет — три разные отправные точки, которые случайно делят одну страницу загрузки.
Прежде чем что-либо устанавливать или заменять, получите четыре ответа у того, кто обслуживает сервис:
Режим доступа: портал в браузере, доступ к выбранному приложению или полный сетевой туннель. Это решает, нужен ли вам клиент вообще.
Семейство шлюза и поддерживаемый выпуск: продукт, включённая служба и версия клиента, которая всё ещё поддерживает вашу сборку macOS и ваше железо Mac.
Аутентификация: пароль с MFA, вход через браузер, сертификат устройства или проверка состояния. Клиент без одобренного сценария подключится и затем будет отклонён.
Собственность: доверенный источник загрузки или управления, предполагаемый профиль и тот, кто поддерживает его, когда он ломается.
Собственность — тот пункт, который люди пропускают. На управляемом Mac профиль часто приходит через систему управления организации, а конфигурация, собранная вручную, может быть заменена при следующей проверке. Спросите, ждут ли от вас, что вы сами что-то установите, прежде чем искать стороннее приложение.
SSL VPN — это ярлык семейства, а не протокол
TLS может защищать соединение, пока внутренний обмен, специфичный для продукта, обрабатывает вход, выделение сеанса и трафик туннеля. Именно этот внутренний обмен клиент и должен реализовать. Браузер, доходящий до страницы входа HTTPS на шлюзе, доказывает цепочку сертификатов и веб-сервер, но не доказывает, что постороннее приложение VPN сумеет построить туннель к той же машине.
OpenConnect — самый наглядный пример, который я знаю. Его документация вышестоящего проекта перечисляет отдельные режимы протокола для разных семейств шлюзов и отделяет совместимость от официальной поддержки производителя. Если бы каждая SSL VPN говорила на одном протоколе, эти режимы были бы не нужны.
У профиля OpenVPN то же ограничение с другой стороны: это формат импорта для развёртывания, совместимого с OpenVPN. Общий TLS как строительный блок не превращает его в файл конфигурации для произвольного корпоративного шлюза. Поэтому работающий вход через браузер — ложное срабатывание: доступ к порталу может удаться, когда туннеля нет, а поднявшийся туннель позже всё равно может быть отклонён проверкой состояния.
Сопоставьте клиент с тем, на чём говорит шлюз
Когда семейство известно, выбор быстро сужается. Это таблица соответствия, которую я проверяю первой, и последний столбец важнее любого рейтинга приложения.
| Семейство шлюза | Клиент на macOS | На что смотреть |
|---|---|---|
| IKEv2/IPsec, независимо от производителя | Встроенный клиент macOS с профилем .mobileconfig | Идентичность сервера и профиль, которым могут управлять |
| OpenVPN 2.x | Tunnelblick или командная строка openvpn | .ovpn плюс учётные данные; клиент не предоставляет услугу |
| WireGuard | Официальный клиент WireGuard или wireguard-tools | Конфигурация узла; видимость wg show различается от клиента к клиенту |
| SSL VPN производителя (AnyConnect, Pulse, GlobalProtect, F5, Fortinet) | Клиент производителя или OpenConnect с явным --protocol | Неподдерживаемые комбинации, MFA и проверки состояния |
| Только портал в браузере | Клиента нет | Доступ к приложению — не сетевой туннель |
Две строки заслуживают предупреждения. Встроенный клиент macOS — настоящая реализация IKEv2, а не универсальный клиент SSL VPN: служба, рассчитанная на него, требует правильного профиля, ожидаемой идентичности сервера и учётных данных, а на управляемой машине этот профиль может быть заблокирован. OpenConnect покрывает несколько протоколов производителей из одного бинарника, но сам проект не заявляет поддержки производителей; сканирование хоста, правила раздельного туннеля, присылаемые шлюзом, или определённый сценарий SSO могут существовать только в клиенте производителя.
У WireGuard та же форма. Служба даёт узлы, клиент даёт туннель, а профиль OpenVPN не заменяет его. Одна складка macOS: клиент из App Store держит свои туннели внутри сетевого расширения, поэтому wg show из инструментов Homebrew может ничего не показывать, пока интерфейс поднят. Проверяйте вместо этого маршрутами и трафиком.
Настройте, затем проверьте в фиксированном порядке
Установите один клиент и один профиль и запишите, что вы изменили. Перед подключением снимите исходное состояние, чтобы можно было сказать, что меняет туннель:
scutil --nc list
networksetup -listallnetworkservices
netstat -rn | grep -E "^default|utun"
scutil --dns
Подключитесь с выданным профилем и повторите те же команды. При полном туннеле маршрут по умолчанию должен указывать на интерфейс utun; при раздельном туннеле маршрутизироваться должны только внутренние префиксы, а публичный выход должен выглядеть неизменным. DNS — та половина, которая обычно остаётся сломанной: scutil --dns перечисляет резолверы в том порядке, в каком система будет их использовать, и внутренний резолвер ниже публичного отправит внутренние имена не тому серверу.
Для службы OpenVPN Tunnelblick — разумный бесплатный клиент, и его собственное руководство прямо говорит о недостающей половине: он не предоставляет службу VPN. Дважды щёлкните .ovpn, который вам выдали, дайте Tunnelblick установить его, и сверьте выпуск с вашей версией macOS, прежде чем полагаться на него.
Для шлюза производителя я часто проверяю через OpenConnect из командной строки:
brew install openconnect
sudo openconnect --protocol=anyconnect --user=you vpn.example.com
Инструмент печатает полученный сертификат и ждёт, прежде чем доверять незнакомой цепочке; это приглашение — функция, и закрепление через --servercert pin-sha256:... лучше, чем принять предупреждение, которое вы не прочитали. Ctrl-C разрывает туннель, потому что openconnect на переднем плане не имеет ни аварийного переключателя, ни логики переподключения. Это годится для диагностического сеанса и плохо как значение по умолчанию для ежедневной работы.
Когда нет шлюза, под который можно подстроиться
Некоторые приходят с обратной проблемой: нет оператора, нет адреса, нет службы. Бесплатное приложение для Mac не может создать входящую доступность на домашнем роутере. Если вы хотите свою сеть из отеля, кто-то должен держать шлюз дома, ставить на него заплатки, публиковать или разрешать его адрес и решать, какие устройства доступны.
Если вам нужен другой выход в интернет, а не доступ к частной сети, выбирайте службу раньше клиента. Пустой список профилей в отдельном клиенте часто не сломанная бесплатная подписка; может не быть ни подписки, ни подключённого сервера. Держите и расходы раздельно: лицензия клиента, план обслуживания и самостоятельно управляемый шлюз — три разные покупки.
Рабочий Mac добавляет слой политик. Бесплатное приложение может быть неправильным даже когда подключается, потому что одобренный клиент может требовать проверок устройства или сценария аутентификации, которых у альтернативы нет. Просите одобренную альтернативу вместо копирования учётных данных между несвязанными приложениями и не считайте отключение защиты платформы исправлением совместимости.
Просмотр удалённого рабочего стола — тоже другой продукт. Он показывает сеанс на другом компьютере; он не даёт локальным приложениям вашего Mac сетевой путь, который даёт туннель.
Короткий контрольный список перед первым настоящим сеансом
Назовите письменно семейство шлюза и режим доступа, установите только подходящий клиент и запишите использованный профиль. Затем подтвердите три вещи реальным трафиком: маршруты, установленные туннелем, порядок резолверов и одно внутреннее приложение, до которого вы дошли по имени, а не по IP.
Если что-то не работает, меняйте по одной переменной за раз: клиент, профиль, сценарий аутентификации. Портал, который загружается, пока туннель отказывается стартовать, отделяет проблему веб-сервера от проблемы совместимости клиента. Когда рабочая служба отвечает и публичный путь ведёт себя как ожидалось, у вас есть названная, поддерживаемая схема, а не груда догадок.