OpenVPN и OpenConnect
OpenVPN и OpenConnect — это VPN, которые часто уже есть на офисных ноутбуках, роутерах и закрытых устройствах. NX обслуживает оба как эндпоинты: каждый пользователь входит со своим именем учётной записи и паролем, а панель сама пишет для него клиентскую конфигурацию.
Для чего они нужны
- OpenVPN: официальные приложения OpenVPN, роутеры и файрволы со встроенным клиентом, а также любой пользователь, который может импортировать файл
.ovpn. - OpenConnect: Cisco Secure Client (AnyConnect) и клиенты OpenConnect, частые на рабочих устройствах.
Ни один из них нельзя поставить за CDN.
OpenVPN
Эндпоинты → Добавить, тип openvpn-server. Общая форма описана в Эндпоинты. По умолчанию форма предлагает случайный порт, режим tls, udp, пул адресов клиентов и сертификат узла.
| Поле | |
|---|---|
| Listen port | порт, к которому подключаются пользователи |
| Mode | tls (по умолчанию) — режим для клиентов: сервер подтверждает себя сертификатом, а каждый пользователь входит со своим именем и паролем. static_key — туннель точка-точка для одного клиента, см. ниже |
| Network | udp (по умолчанию) или tcp. Один эндпоинт слушает одну из них; для обеих добавьте второй эндпоинт |
| Address (CIDR list) | пул, из которого берутся адреса туннеля пользователей, например 10.9.0.1/24 |
| Сертификат TLS | по умолчанию сертификат узла или сертификат из Сертификаты. Поля сертификата видны, только пока выбран собственный сертификат эндпоинта |
| Verify client certificate (дополнительно) | по умолчанию выключено. Требование клиентских сертификатов убирает эндпоинт из подписок пользователей, потому что панель их не выпускает |
В + Добавить параметр находятся параметры тонкой настройки. Большинство из них начинают со значения, которое узел и так использует без них, поэтому добавление ничего не меняет, пока вы не измените значение. Исключение — Data ciphers fallback: у узла такого значения нет, и добавление пускает клиентов старше OpenVPN 2.4 с указанным в нём шифром.
- Data ciphers, Data ciphers fallback, Auth digest: канал данных. Fallback нужен клиентам старше OpenVPN 2.4.
- Min/Max TLS version, TLS 1.2 cipher suites, TLS key exchange groups, Certificate profile: TLS канала управления.
- MTU, MSS fix (bytes), Replay window (packets), Max clients, Topology.
- Ping interval/restart, Renegotiate every/after, Handshake window: тайминги на стороне сервера.
Защита канала управления
Включите переключатель Защита канала управления, чтобы подписывать (tls_auth) или ещё и шифровать (tls_crypt, tls_crypt_v2) каждый пакет канала управления ключом. Тогда проба без ключа вообще не получает ответа, а с tls_crypt или tls_crypt_v2 рукопожатие TLS и сертификат сервера нельзя прочитать в сети. Ни один из трёх вариантов не скрывает, что это трафик OpenVPN: заголовок пакета остаётся читаемым, и по нему OpenVPN узнаётся при любом выборе.
Ключ создаёт панель, кнопка Сгенерировать заново создаёт новый. Файл .ovpn и подписка каждого пользователя содержат соответствующую клиентскую часть:
tls_cryptиtls_auth: один ключ для всех.tls_crypt_v2: собственный ключ каждого пользователя, обёрнутый ключом сервера. Ключ сервера никогда не покидает эндпоинт. Пользователь всегда получает один и тот же ключ; новый ключ сервера даёт всем пользователям новые ключи, и им нужно скачать файл заново.
Передача клиентам
Передача клиентам — то, что сервер сообщает каждому клиенту после подключения. Выключено — действует значение панели по умолчанию: весь трафик через туннель, пинг каждые 10 секунд, перезапуск через 60. Включено — начинает с того же значения, и можно изменить:
- Route all traffic through the tunnel с флагами и Routes — сети, которые идут через туннель (при выключенном первом — только они);
- DNS servers (dhcp-option), которые читает любой клиент, Search domains и DNS-серверы для клиентов OpenVPN 2.6 (приоритет, раздельный DNS, DNSSEC, DNS поверх TLS или HTTPS);
- Block DNS outside the tunnel (Windows), дополнительные опции DHCP и тайминги пинга клиента.
Клиенты получают всё это от сервера; их файлы не меняются.
Режим статического ключа
Режим static_key — один туннель между этим эндпоинтом и одним клиентом с тем же ключом, без входа. Ему нужны:
- Static key: создаётся автоматически, с кнопкой для нового;
- Cipher;
- Client tunnel address, адрес клиента внутри туннеля (и IPv6-адрес, если в пуле есть IPv6);
- по UDP — Client address и Client port: сервер отвечает только этому адресу.
У такого эндпоинта нет пользователей: нет TLS, ничего не передаётся клиентам, нет файлов .ovpn и записей в подписках. Единственного клиента вы настраиваете сами.
Файл .ovpn
Каждый пользователь шаблона получает файл .ovpn в своём диалоге QR / ссылки, в разделе Клиентские приложения (Сохранить файл), и на своей странице подписки. Файл полный:
- внутри есть сертификат сервера, поэтому самоподписанный сертификат узла работает без настройки на устройстве;
- внутри есть и имя с паролем пользователя, поэтому OpenVPN Connect 3 и OpenVPN 2.6 и новее подключаются без вопросов.
Файл .ovpn с сертификатом внутри обычно слишком велик для QR-кода; тогда диалог предлагает только скопировать и сохранить его. Файл указывает первый адрес для ссылок узла, потому что сохранённый файл не может перечислять альтернативы.
Приложения sing-box тоже получают эндпоинт как запись в своей подписке.
OpenConnect
Эндпоинты → Добавить, тип openconnect-server. По умолчанию форма предлагает случайный порт, пул клиентских адресов и TLS на сертификате узла.
| Поле | |
|---|---|
| Listen port | часто 443, его и ждут клиенты AnyConnect |
| Client IP pool (CIDR) | пул, из которого берутся туннельные адреса пользователей |
| Сертификат TLS | по умолчанию сертификат узла или сертификат из Сертификаты. В данных для входа, которые получают пользователи, нет сертификата, поэтому их клиент проверяет его так же, как браузер: сертификат ACME для настоящего домена избавляет от предупреждения или отказа на устройстве |
| Pushed DNS servers | DNS-серверы, которые должно использовать устройство |
| Search domain, Split-include routes, MTU, DPD/keepalive (seconds) (дополнительные) | как в любом сервере AnyConnect |
Клиенты OpenConnect принимают не файл, а адрес сервера и данные для входа. Вкладка Клиентские приложения пользователя и страница подписки показывают и то и другое. Приложения sing-box тоже получают эндпоинт в своей подписке.
Пользователи
- В OpenVPN у пользователя одно устройство одновременно. Второе устройство, вошедшее под той же учётной записью, забирает сессию, а первое отключается. По TCP оно видит это сразу; по UDP его не предупреждают, и оно замечает это при следующем таймауте пинга. В обоих случаях оно подключается снова и забирает сессию обратно, поэтому два устройства одного пользователя постоянно выталкивают друг друга, и клиент, переподключающийся сразу (приложения sing-box), всегда побеждает. Выдайте каждому устройству свою учётную запись или используйте для второго другой протокол. Allow duplicate CN снимает это правило, но тогда каждое подключение получает новый адрес туннеля, и пользователь с ограничением адресов после переподключения может остаться без доступа на несколько минут.
- Пользователь, который сменил пароль, был удалён или отключён, сразу отключается от OpenVPN; остальные остаются подключёнными.
- Эндпоинт OpenVPN в режиме
tlsили эндпоинт OpenConnect без пользователей в шаблоне не обслуживается вовсе: пустой сервер OpenVPN принял бы любой пароль. Панель отправляет его узлу, как только появляется хотя бы один пользователь. - Учёт трафика, квоты, ограничения скорости и адресов действуют для каждого пользователя, как на любом инбаунде.
Связанные страницы
- Эндпоинты — страница эндпоинтов
- Сертификаты — сертификаты для обоих эндпоинтов
- WireGuard — другой стандартный VPN
