OpenVPN, OpenConnect и Tailscale

Импорт и настройка профилей OpenVPN, OpenConnect и Tailscale, вход с одноразовыми кодами и корпоративный VPN параллельно с прокси.

Throne подключается к серверам OpenVPN, к Cisco AnyConnect и совместимым VPN (OpenConnect), а также входит в сети Tailscale. VPN-клиенты встроены в ядро, поэтому устанавливать OpenVPN или OpenConnect не нужно.

OpenVPN

Импортируйте файл .ovpn через Программа (Program) → Добавить профиль из файла (Add profile from File(s)) (Ctrl+O) или перетащите его в главное окно.

  • Работают только клиентские профили с dev tun. Профили TAP и серверные конфигурации отклоняются.
  • Контейнеры PKCS#12 не поддерживаются. Экспортируйте CA, сертификат и ключ в формате PEM и вставьте их в Сертификат CA (CA Certificate), Сертификат клиента (Client Certificate) и Ключ клиента (Client Key).
  • Если файл берёт данные для входа из отдельного файла (auth-user-pass), укажите Имя пользователя (Username) и Пароль (Password) в профиле.
  • Параметры, которые Throne не может использовать, перечисляются в логе.

OpenConnect

Протокол (Flavor) выбирает тип сервера: пусто или anyconnect (Cisco AnyConnect и совместимые), gp (Palo Alto GlobalProtect), fortinet, f5 (F5 BIG-IP), pulse (Pulse Connect Secure) или nc (Juniper Network Connect).

Throne импортирует XML-профили AnyConnect (по профилю на сервер), командные строки openconnect, например openconnect --protocol=gp --user=alice vpn.example.com, и конфигурационные файлы со строкой protocol= — из файла, буфера обмена или подписки.

Группа аутентификации (Auth Group) заранее выбирает группу, область (realm) или шлюз. Некоторым порталам GlobalProtect, F5 и Fortinet нужен путь из их URL в Путь на сервере (Server Path).

Параметры для обоих типов VPN

  • Только объявленные сервером сети (Only route advertised network, по умолчанию включено): в туннель попадает только трафик к сетям, которые объявляет VPN-сервер; остальной трафик, дошедший до профиля, блокируется. Выключите параметр для VPN, через который должен идти весь трафик. Файл .ovpn с redirect-gateway выключает его при импорте.
  • DNS туннеля (Tunnel DNS): Предпочитать (Prefer, по умолчанию) разрешает через DNS-серверы VPN только имена, которые сервер заявляет своими (его домены split-DNS). Строго (Strict) также отправляет им все удалённые DNS-запросы, поэтому имена, на которые они не могут ответить, не разрешаются. Нет (None) игнорирует их.

Вход

Throne входит, используя сохранённые Имя пользователя и Пароль. Когда сервер запрашивает что-то ещё, открывается окно Аутентификация VPN (VPN Authentication):

  • Вопрос или форма, например второй пароль: заполните и нажмите Отправить (Submit).
  • Страница входа: нажмите Открыть в браузере (Open in Browser), войдите там, затем закройте окно.
  • Единый вход (SSO), который работает только внутри браузера, пока не поддерживается. Используйте имя пользователя и пароль или, для OpenConnect, сессионный Cookie в дополнительных настройках профиля (Дополнительно (Advanced)).

Если сервер отклоняет сохранённые данные для входа, Throne запрашивает их только для этого сеанса. Вкладка Статистика (Runtime Stats; только в расширенном режиме, см. Простой и расширенный режим) показывает состояние каждого VPN-подключения.

Менеджер OTP

Многие корпоративные VPN запрашивают одноразовый код из приложения-аутентификатора. В Throne есть собственный: Утилиты (Tools) → Менеджер OTP (OTP Manager) (только в расширенном режиме).

  • Добавьте запись через Импорт (Import) → Из ссылки или из текста... (From link or text...) (ссылки otpauth://, экспорт otpauth-migration:// из Google Authenticator, JSON или секрет в Base32), Добавить вручную... (Add manually...), Из буфера обмена (From clipboard) или Из файла с изображением QR-кода... (From QR image file...). Сканировать QR-код (Scan QR Code) находит QR-код на экране.
  • Скопируйте код, щёлкнув запись, или через Коды OTP (OTP Codes) в меню трея.
  • Удалить (Delete) удаляет запись безвозвратно.

Записи OTP входят в резервные копии (OTP-профили (OTP profiles)), поэтому не передавайте файлы резервных копий посторонним.

Использование кода в VPN-профиле

  1. Откройте профиль OpenVPN или OpenConnect и выберите запись в поле OTP.
  2. Если сервер ожидает код как часть пароля, поставьте {otp} туда, где должен быть код, например MyPassword{otp}. Для OpenConnect {otp} работает также в поле программного токена (software token) и в полях форм.
  3. Нажмите OK.

Теперь Throne подставляет свежий код при каждом подключении и сам отвечает на запросы кода от сервера. Для статического запроса OpenVPN введите его текст в Статический запрос (Static Challenge).

Раздельное туннелирование: корпоративный VPN рядом с прокси

Профиль маршрутизации может запускать профили OpenVPN или OpenConnect параллельно с запущенным вами профилем. Трафик к сетям, которые объявляет VPN, идёт через VPN; всё остальное следует профилю маршрутизации.

  1. Откройте Маршрутизация (Routing) → Настройки маршрутизации (Routing Settings) → Маршрутизация (Route), выберите используемый профиль маршрутизации и нажмите Редактировать (Edit).
  2. На вкладке Конечные точки (Endpoints; только в расширенном режиме) выберите VPN-профиль и нажмите Добавить (Add), затем OK. Вкладка появляется, когда у вас есть профиль OpenVPN или OpenConnect.
  3. Убедитесь, что этот профиль маршрутизации активен, и запустите свой обычный профиль. VPN запустится вместе с ним.

Каждая конечная точка добавляет на вкладку Дополнительно (Advanced) правило … route prefer. Его можно только перемещать: правила выше него проверяются первыми.

  • Профиль, используемый как конечная точка, не может одновременно быть запускаемым профилем или его звеном.
  • Конечной точкой может быть цепочка, выход которой — профиль OpenVPN или OpenConnect. Разрешить маршрутизацию на внутренние звенья (Allow routing to inner hops) направляет трафик и на такие звенья внутри цепочки.
  • Звенья конечной точки не могут работать на Xray и не могут быть профилями дополнительного ядра (Extra Core) или профилями с полной конфигурацией.

Полный пример см. на странице Рецепты.

Tailscale

Профиль Tailscale подключается к вашей сети tailnet, так что вы можете обращаться к своим устройствам Tailscale или использовать одно из них как выходной узел. Создайте его через Программа → Новый профиль (New profile) → Тип (Type) Tailscale:

Поле Назначение
Auth Key Ключ для входа в вашу сеть tailnet, из консоли администратора Tailscale.
Control URL Меняйте только для собственного управляющего сервера.
Имя хоста (Hostname) Имя этого устройства в tailnet.
Выходной узел (Exit node) Устройство tailnet, через которое идёт интернет-трафик. Выходной узел: разрешить доступ к LAN (Exit node allow lan access) сохраняет доступ к локальной сети.
Принимать маршруты (Accept routes) Использовать маршруты подсетей, которые объявляют другие устройства.
Объявлять выходной узел (Advertise exit node), Объявлять маршруты (Advertise routes) Предлагать этот компьютер как выходной узел или предлагать подсети (через запятую).
Эфемерный узел (Ephemeral) Tailnet удаляет это устройство после того, как оно уходит из сети.
Директория состояния (State directory), Глобальный DNS (Global DNS) Где хранится состояние входа ($HOME/.tailscale) и использует ли DNS Tailscale также глобальные серверы имён tailnet.

Имена tailnet (в зоне ts.net) разрешаются через DNS Tailscale, остальные — через ваши обычные настройки DNS. Тесты задержки и автовыбор пропускают профили Tailscale.

Android

  • Профили OpenVPN и OpenConnect работают с теми же форматами импорта, но без OTP, Только объявленные сервером сети и DNS туннеля. Они должны входить с сохранёнными именем пользователя и паролем. Записи OTP из резервной копии с компьютера не восстанавливаются.
  • Конечные точки профилей маршрутизации (раздельное туннелирование) не работают. Профиль маршрутизации из резервной копии с компьютера сохраняет их, но Android их не запускает.
  • Профили Tailscale не поддерживаются. На обеих платформах автовыбор пропускает профили OpenVPN и OpenConnect.