OpenVPN, OpenConnect и Tailscale
Импорт и настройка профилей OpenVPN, OpenConnect и Tailscale, вход с одноразовыми кодами и корпоративный VPN параллельно с прокси.
Throne умеет подключаться к серверам OpenVPN, к Cisco AnyConnect и совместимым VPN (OpenConnect), а также входить в сеть Tailscale. VPN-клиенты встроены в ядро, поэтому устанавливать OpenVPN или OpenConnect не нужно. На этой странице описаны импорт, основные параметры, вход с одноразовыми кодами и запуск корпоративного VPN параллельно с прокси.
OpenVPN
Импортируйте файл .ovpn одним из способов:
Программа(Program) →Добавить профиль из файла(Add profile from File(s)) илиCtrl+O.- Перетащите файл в главное окно.
- Скопируйте текст файла и нажмите
Ctrl+Vв главном окне.
Чтобы создать профиль вручную, выберите Программа → Новый профиль (New profile) и установите Тип (Type) в значение OpenVPN.
Что нужно знать об импорте:
- Работают только клиентские профили для
dev tun. Профили TAP (dev tap) и серверные конфигурации отклоняются. - Контейнеры PKCS#12 (
pkcs12) не поддерживаются. Экспортируйте CA, сертификат и ключ в формате PEM, затем вставьте их вCA Certificate,Сертификат клиента(Client Certificate) иКлюч клиента(Client Key). - Если данные для входа хранятся в отдельном файле (
auth-user-pass <file>), укажитеИмя пользователя(Username) иПароль(Password) в профиле. - Неизвестные или неподдерживаемые параметры перечисляются в логе, в строках, которые начинаются с
OpenVPN:. Параметры, неприменимые к Throne, например скриптыupиdownилиpersist-tun, пропускаются без сообщений. - Если файл направляет весь трафик через VPN (
redirect-gateway), Throne отключает для профиляOnly route advertised network.
В редакторе также есть Сеть (Network; пустое значение означает udp), Static Challenge, MTU, OTP, Tunnel DNS, файлы TLS и Control Channel Wrap для ключей tls-auth и tls-crypt. Кнопка Дополнительно (Advanced) открывает другие параметры.
OpenConnect
Параметр Flavor в профиле выбирает тип сервера:
Flavor |
Тип сервера |
|---|---|
пусто или anyconnect |
Cisco AnyConnect и совместимые серверы |
gp |
Palo Alto GlobalProtect |
fortinet |
Fortinet |
f5 |
F5 BIG-IP |
pulse |
Pulse Connect Secure |
nc |
Juniper Network Connect |
Throne импортирует эти форматы из файла, буфера обмена или подписки:
- XML-профиль AnyConnect. Каждый сервер из его
<ServerList>становится профилем. Серверы с IPsec (IKEv2) и записи без адреса пропускаются с примечанием. - Командная строка
openconnect, напримерopenconnect --protocol=gp --user=alice vpn.example.com. - Конфигурационный файл с одним параметром на строку, в котором есть строка
protocol=, напримерprotocol=fortinet.
Другие основные поля: Имя пользователя, Пароль, Auth Group (заранее выбирает группу, область (realm) или шлюз), Server Path (путь в URL сервера; нужен некоторым порталам GlobalProtect, F5 и Fortinet), MTU, OTP и параметры TLS. В Дополнительно есть и другие, например сессионный Cookie и Software Token.
Параметры для обоих типов VPN
| Параметр | По умолчанию | Назначение |
|---|---|---|
Only route advertised network |
Вкл. | Когда вы запускаете этот профиль, в туннель попадает только трафик к сетям, которые объявляет VPN-сервер. Остальной трафик, дошедший до профиля, блокируется. На правила маршрутизации, в которых указан этот профиль, это не влияет. Выключите параметр для VPN, через который должен идти весь трафик. |
Tunnel DNS |
Prefer |
Как Throne использует DNS-серверы, которые передаёт VPN-сервер. Нет (None): игнорировать их. Prefer: разрешать через них только имена, которые сервер заявляет своими (его домены split-DNS). Strict: также отправлять им все удалённые DNS-запросы, а для имён, на которые они не могут ответить, возвращать ошибку. |
Имя пользователя, Пароль |
пусто | Данные для входа. {otp} в этих полях заменяется одноразовым кодом, см. Использование кода в VPN-профиле. |
Для конечной точки профиля маршрутизации и Prefer, и Strict разрешают только имена, которые сервер заявляет своими.
Вход
Throne входит, используя сохранённые Имя пользователя и Пароль. Когда сервер запрашивает что-то ещё, открывается окно VPN Authentication:
- Вопрос или форма, например второй пароль: заполните и нажмите
Submit. У некоторых запросов показывается ограничение по времени («Expires in …» — истекает через …). - Страница входа: окно показывает адрес и кнопку
Open in Browser. Войдите в браузере, затем закройте окно. Подключение продолжится, как только сервер примет вход. - Единый вход (SSO), который работает только внутри браузера, пока не поддерживается. Используйте вход по имени пользователя и паролю или, для OpenConnect, укажите сессионный
Cookieв дополнительных настройках профиля (Дополнительно).
Если сервер отклоняет сохранённые данные для входа, Throne запрашивает имя пользователя и пароль для этого сеанса и предлагает Reconnect. Они не сохраняются в профиле, и Throne забывает их, когда вы сами останавливаете профиль. Throne спрашивает до трёх раз.
На вкладке Статистика выполнения (Runtime Stats) внизу главного окна перечислены все VPN-подключения с их состоянием и кнопкой Подробности (Details).
Менеджер OTP
Многие корпоративные VPN запрашивают одноразовый код из приложения-аутентификатора. Начиная с версии 1.3.0, в Throne есть собственный аутентификатор: Утилиты (Tools) → Менеджер OTP (OTP Manager).
Добавление записей:
Импорт(Import) →Добавить вручную...(Add manually...): введитеНазвание(Name) иСекрет(Secret; в Base32). ПараметрыТип(Type;TOTP (на основе времени)илиHOTP (на основе счетчика)),Алгоритм(Algorithm),Цифры(Digits; от 4 до 10, по умолчанию 6) иПериод (секунды)(Period (seconds); по умолчанию 30) меняйте, только если так требует ваш провайдер. Окно показывает текущий код, чтобы вы могли сравнить его с кодом в другом аутентификаторе.Импорт→Из ссылки или из текста...(From link or text...): вставьте ссылкиotpauth://, ссылкуotpauth-migration://(формат экспорта Google Authenticator), экспорт в JSON или просто секрет в Base32.Импорт→Из буфера обмена(From clipboard) илиCtrl+Vв окне, а такжеИмпорт→Из файла с изображением QR-кода...(From QR image file...).Сканировать QR-код(Scan QR Code) находит QR-код на экране.
Работа с записями:
- Щёлкните запись, чтобы скопировать её текущий код.
- Перетаскивайте записи, чтобы изменить их порядок.
Экспорт(Export) у записи предлагаетThis one as otpauth:// link and QR,All as otpauth-migration:// link and QRиAll as JSON file....Удалить(Delete) удаляет запись. Её секрет восстановить нельзя.- В меню трея есть
Коды OTP(OTP Codes) — список всех кодов с поиском. Щёлкните код, чтобы скопировать его.
Записи OTP входят в резервные копии: пункт OTP профили (OTP profiles) в Настройки (Settings) → Основные настройки (Basic Settings) → Резервное копирование и восстановление (Backup and Restore). Не передавайте файлы резервных копий посторонним.
Использование кода в VPN-профиле
- Откройте профиль OpenVPN или OpenConnect.
- В поле
OTPвыберите запись. - Если сервер ожидает код как часть пароля, поставьте
{otp}туда, где должен быть код, напримерMyPassword{otp}. Для OpenConnect{otp}работает также в поле программного токена (software token) и в полях форм. - Нажмите
OK.
Теперь Throne подставляет свежий код при каждом подключении. Он также сам отвечает на запросы кода от сервера: на запрос OpenVPN (если сервер использует статический запрос, введите его текст в Static Challenge) и на формы входа OpenConnect. Если сервер отклоняет код, Throne пробует новый, до трёх раз. Если сервер отклоняет весь вход, Throne не спрашивает вас, а перезапускает профиль с новым кодом, тоже до трёх раз.
Раздельное туннелирование: корпоративный VPN рядом с прокси
Начиная с версии 1.3.0, профиль маршрутизации может запускать профили OpenVPN или OpenConnect параллельно с запущенным вами профилем. Трафик к сетям, которые объявляет VPN-сервер, идёт через VPN. Всё остальное следует профилю маршрутизации, например идёт через ваш прокси.
- Импортируйте или создайте VPN-профиль.
- Откройте
Маршруты(Routing) →Настройки маршрутизации(Routing Settings) → вкладкуМаршрут(Route). - Выберите используемый профиль маршрутизации и нажмите
Редактировать(Edit). - Откройте вкладку
Конечные точки(Endpoints). Она появляется, только если у вас есть профиль OpenVPN или OpenConnect либо цепочка, которая заканчивается таким профилем. - Выберите VPN-профиль в списке и нажмите
Добавить(Add). - Нажмите
OKи убедитесь, что этот профиль маршрутизации активен (он отмечен галочкой внизу менюМаршруты). - Запустите свой обычный профиль. VPN запустится вместе с ним.
Каждая конечная точка добавляет на вкладку Дополнительно (Advanced) правило с именем <name> route prefer, где <name> — название VPN-профиля. Изменить это правило нельзя, но его можно перемещать среди своих правил: правила выше него проверяются первыми. При удалении правила Throne спросит, удалить ли и конечную точку.
Ограничения:
- Профиль, используемый как конечная точка, не может одновременно быть запускаемым профилем или его звеном.
- Конечной точкой может быть цепочка, выход которой (нижняя строка цепочки) — профиль OpenVPN или OpenConnect. Отметьте
Allow routing to inner hops, чтобы правило создавалось и для каждого звена OpenVPN или OpenConnect внутри цепочки. - Звенья конечной точки не могут работать на Xray и не могут быть профилями дополнительного ядра (Extra Core) или профилями с полной конфигурацией.
Полный пример см. на странице Рецепты.
Tailscale
Профиль Tailscale подключается к вашей сети tailnet, так что вы можете обращаться к своим устройствам Tailscale или использовать одно из них как выходной узел. Профили Tailscale доступны только в версии для компьютера.
- Откройте
Программа→Новый профиль. - Установите
Типв значениеTailscale. - Заполните поля, описанные ниже.
Ключ авторизации(Auth key) создаётся в консоли администратора Tailscale. - Нажмите
OKи запустите профиль.
| Поле | По умолчанию | Назначение |
|---|---|---|
Директория состояния (State directory) |
$HOME/.tailscale |
Где хранится состояние входа. |
Ключ авторизации |
пусто | Ключ для входа в вашу сеть tailnet. |
Контролирующий URL (Control URL) |
https://controlplane.tailscale.com |
Сервер координации. Меняйте его только для собственного управляющего сервера. |
Имя хоста (Hostname) |
пусто | Имя этого устройства в tailnet. |
Приём маршрутов (Accept routes) |
выкл. | Использовать маршруты подсетей, которые объявляют другие устройства. |
Эфемерный узел (Ephemeral) |
выкл. | Зарегистрироваться как эфемерное устройство, которое tailnet удаляет после того, как оно уходит из сети. |
Выходной узел (Exit node) |
пусто | Направлять интернет-трафик через это устройство tailnet. |
Выходной узел: разрешить доступ к LAN (Exit node allow lan access) |
выкл. | Сохранять доступ к локальной сети при использовании выходного узла. |
Объявлять выходной узел (Advertise exit node) |
выкл. | Предлагать этот компьютер в качестве выходного узла. |
Объявлять маршруты (Advertise routes) |
пусто | Подсети, которые предлагаются tailnet, через запятую. |
Глобальный DNS (Global DNS) |
выкл. | Разрешить DNS Tailscale также использовать глобальные серверы имён tailnet. |
Имена устройств вашей сети tailnet (в зоне ts.net) Throne разрешает через DNS Tailscale. Для остальных имён используются ваши обычные настройки DNS. Тесты задержки и автовыбор пропускают профили Tailscale.
Android
- Профили OpenVPN и OpenConnect работают на Android с теми же форматами импорта. В редакторе меньше параметров: нет привязки OTP, нет
Only route advertised networkиTunnel DNS. - Нет менеджера OTP и окна
VPN Authentication. Профиль должен входить с сохранёнными именем пользователя и паролем. Записи OTP из резервной копии с компьютера не восстанавливаются. - Конечные точки профилей маршрутизации (раздельное туннелирование) на Android не работают. Профиль маршрутизации из резервной копии с компьютера сохраняет свои конечные точки, но Android их не запускает.
- Профили Tailscale не поддерживаются.
- На обеих платформах автовыбор пропускает профили OpenVPN, OpenConnect и Tailscale.