Почему OpenConnect, а не WireGuard или L2TP/IPsec
Классические VPN-протоколы — WireGuard, OpenVPN, L2TP/IPsec — давно изучены системами глубокого анализа пакетов (DPI). Их сигнатуры легко распознать, поэтому провайдеры и регуляторы могут блокировать такие соединения. OpenConnect, напротив, маскирует трафик под обычное HTTPS-подключение к веб-серверу. Это делает его практически неотличимым от легитимного веб-сёрфинга.
Протокол OpenConnect — это открытая реализация проприетарного протокола Cisco AnyConnect. Он использует TLS (HTTPS) для установки соединения и может дополнительно задействовать DTLS поверх UDP для повышения скорости. Внешне такой трафик выглядит как обычный защищённый веб-запрос, что затрудняет его детектирование.
В отличие от WireGuard, который передаёт случайные байты без характерных сигнатур, OpenConnect имитирует структуру HTTP-запроса. Это критично в условиях, когда блокируются все «неопознанные» протоколы. Например, в некоторых регионах уже были случаи, когда DPI блокировал весь неизвестный TCP-трафик, оставляя только стандартные порты и протоколы. OpenConnect в такой ситуации продолжает работать, так как выглядит как HTTPS.
Ещё одно преимущество — встроенная защита от active probing. Это метод, при котором злоумышленник или регулятор пытается подключиться к серверу, имитируя клиента, чтобы определить, является ли сервис VPN. OpenConnect поддерживает режим camouflage: если клиент не передаёт секретное слово, сервер отвечает ошибкой, как обычный веб-сервер, не раскрывая своей истинной природы.
Для MikroTik OpenConnect интересен тем, что RouterOS поддерживает его в качестве клиента, но не как сервер. Это означает, что вы можете использовать MikroTik для подключения к внешнему OpenConnect-серверу, например, размещённому на VPS. Такой подход позволяет обойти блокировки и обеспечить доступ к корпоративным ресурсам через замаскированный туннель.
Сравнение OpenConnect с другими протоколами на MikroTik
Чтобы понять, когда выбирать OpenConnect, полезно сравнить его с альтернативами, которые поддерживает RouterOS.
WireGuard — современный протокол с высокой скоростью и минимальным кодом (около 4000 строк). Он прост в настройке, но его трафик легко идентифицировать по характерным паттернам. WireGuard не маскируется под другие протоколы, поэтому при жёстком DPI он может быть заблокирован. На MikroTik WireGuard доступен с версии 7.1.
L2TP/IPsec — стандарт для корпоративных сетей, встроен во все ОС. Однако двойная инкапсуляция снижает скорость, а IPsec-трафик часто блокируется провайдерами. Настройка требует открытия портов UDP 500, 4500 и ESP, что делает его уязвимым для фильтрации.
IKEv2 — отлично подходит для мобильных клиентов, так как сохраняет соединение при смене сети. Требует настройки сертификатов, что усложняет развёртывание. Трафик IKEv2 также может быть распознан DPI.
SSTP — работает поверх HTTPS (порт 443), но нативно поддерживается только Windows. На MikroTik SSTP доступен, но его маскировка менее эффективна, чем у OpenConnect, и он не имеет защиты от active probing.
OpenConnect — сочетает маскировку под HTTPS, защиту от active probing и поддержку DTLS для скорости. Он не требует установки клиентов на большинстве платформ (есть клиенты для Windows, Linux, macOS, Android, iOS). На MikroTik он доступен как клиент, что позволяет использовать его для подключения к внешним серверам.
Таким образом, если ваша задача — обход DPI и блокировок, OpenConnect — оптимальный выбор. Если же нужна максимальная скорость и простота, и блокировки не критичны, можно использовать WireGuard.
Как работает маскировка OpenConnect и защита от active probing
OpenConnect использует механизм camouflage, который делает сервер неотличимым от обычного веб-сервера. При подключении клиент должен передать секретное слово в URL, например, https://myserver.com/?secret. Если слово верное, сервер устанавливает VPN-соединение. Если нет — возвращает стандартную ошибку HTTP, как будто это обычный сайт.
Эта защита работает на уровне TLS: сервер не отвечает на запросы без секрета, что предотвращает активное сканирование. Active probing — это метод, когда регулятор или злоумышленник пытается подключиться к серверу, имитируя клиента VPN, чтобы определить его тип. Без camouflage сервер отвечает характерным для VPN образом, что позволяет его заблокировать. С camouflage — ответ неотличим от веб-сервера.
Важно отметить, что маскировка работает только при использовании клиента OpenConnect, который поддерживает передачу секрета. Если вы используете стандартный клиент Cisco AnyConnect, он не сможет передать секрет, и сервер будет вести себя как обычный веб-сервер, отказывая в подключении. Поэтому для работы с camouflage необходимо использовать клиент OpenConnect (например, openconnect для Linux или официальное приложение для Windows).
Настройка маскировки на сервере OCserv включает параметры camouflage = true и camouflage_secret = ваш_секрет. Эти опции доступны в версиях OCserv 1.2.0 и выше. Если вы используете MikroTik как клиент, он также должен поддерживать передачу секрета — в RouterOS эта возможность появилась в последних версиях.
Подготовка MikroTik к настройке OpenConnect-клиента
Прежде чем настраивать OpenConnect на MikroTik, убедитесь, что ваше устройство соответствует требованиям.
Версия RouterOS: OpenConnect-клиент доступен в RouterOS начиная с версии 7.1. Проверить версию можно командой /system resource print. Если у вас более старая версия, обновитесь через /system package update install.
Белый IP-адрес: Если вы планируете использовать MikroTik как сервер VPN, вам нужен публичный IP. Но для OpenConnect-клиента это не обязательно — MikroTik может подключаться к внешнему серверу, находясь за NAT. Однако если вы хотите, чтобы клиенты подключались к MikroTik через OpenConnect, нужен белый IP или настройка проброса портов.
Доступ к CLI: Настройка выполняется через терминал WinBox или SSH. Убедитесь, что у вас есть права администратора.
Сервер OpenConnect: Вам понадобится внешний сервер с установленным OCserv. Это может быть VPS с Linux. На сервере должен быть настроен домен и TLS-сертификат (например, от Let's Encrypt).
Секретное слово: Если сервер использует camouflage, вам нужно знать секретное слово для подключения.
Также проверьте, что на MikroTik включён IP forwarding, если вы планируете маршрутизировать трафик клиентов: /ip settings set ip-forward=yes.
Пошаговая настройка OpenConnect-клиента на MikroTik
Настройка OpenConnect-клиента на MikroTik в RouterOS 7.x выполняется через интерфейс interface openconnect. Вот основные шаги.
Шаг 1: Создание интерфейса
/interface openconnect add name=oc1 connect-url=https://vpn.example.com user=myuser password=mypasswordЗамените vpn.example.com на адрес вашего сервера, myuser и mypassword — на учётные данные. Если сервер использует camouflage, добавьте параметр secret:
/interface openconnect add name=oc1 connect-url=https://vpn.example.com user=myuser password=mypassword secret=mysecretШаг 2: Настройка IP-адреса После создания интерфейса ему нужно назначить IP-адрес. Обычно сервер выдаёт адрес автоматически, но для маршрутизации может потребоваться указать его вручную:
/ip address add address=10.10.10.2/24 interface=oc1Шаг 3: Настройка маршрутов Если вы хотите направлять весь трафик через VPN, добавьте маршрут по умолчанию:
/ip route add dst-address=0.0.0.0/0 gateway=10.10.10.1Для split-tunnel (только определённые подсети) укажите конкретные маршруты, например:
/ip route add dst-address=192.168.88.0/24 gateway=10.10.10.1Шаг 4: Включение интерфейса
/interface openconnect enable oc1Шаг 5: Проверка подключения Проверьте статус интерфейса:
/interface openconnect monitor oc1Если всё настроено правильно, вы увидите статус connected.
Обратите внимание, что в зависимости от версии RouterOS синтаксис может немного отличаться. В некоторых версиях параметр secret называется camouflage-secret. Проверьте документацию для вашей версии.
Настройка сервера OCserv для работы с MikroTik
Если вы хотите использовать MikroTik в качестве клиента для подключения к собственному серверу OpenConnect, вам нужно правильно настроить OCserv на сервере. Вот ключевые моменты.
Установка OCserv: На Debian/Ubuntu установите пакет ocserv через apt install ocserv. Убедитесь, что версия не ниже 1.2.0, чтобы поддерживался camouflage.
Основной конфиг (/etc/ocserv/ocserv.conf):
tcp-port = 443— порт для HTTPS.udp-port = 443— порт для DTLS (опционально).server-certиserver-key— пути к TLS-сертификатам.- `auth =