Открытый код · написан на Rust

VPN, который не выглядит как VPN

qeli — это полноценный VPN (а не прокси) для размещения на собственном сервере. Он использует собственный сетевой протокол и встроенную маскировку трафика поверх соединений TCP или UDP. Цель — пройти там, где блокируют обычные VPN, и при этом защитить всё устройство целиком — со встроенной панелью управления через браузер.

Современное шифрование Маскировка под HTTPS Маскировка под WebSocket Перенаправление на сайт Маскировка под QUIC
сервер — qeli
# одна служба — несколько профилей сразу
$ qeli server --config /etc/qeli/server.conf
[ ok ] Профиль 'tcp'    tcp://0.0.0.0:443    под HTTPS
[ ok ] Профиль 'obfs'   tcp://0.0.0.0:8443   под WebSocket
[ ok ] Профиль 'real'   tcp://0.0.0.0:8444   REALITY
[ ok ] Профиль 'udp'    udp://0.0.0.0:4443   под QUIC
[ ok ] панель управления → https://0.0.0.0:8080
[ ok ] все профили запущены
0
Скорость, Мбит/с (на 2 ядрах)
0
Дополнительная задержка
0
Режима маскировки
0
Платформы клиента
Важное отличие

Полноценный VPN, а не прокси

VLESS, V2Ray, Shadowsocks и большинство популярных инструментов обхода блокировок — это прокси: они перенаправляют трафик только тех приложений, которые специально настроены. qeli создаёт настоящий сетевой туннель и защищает всё устройство целиком.

Прокси VLESS · V2Ray · Shadowsocks · Xray
  • Работает только для приложений, настроенных на прокси
  • Каждую программу нужно настраивать отдельно
  • Часть трафика — DNS, системные процессы, сторонние приложения — идёт мимо
  • Обычно это SOCKS/HTTP — для браузера и пары программ
  • Если приложение не умеет прокси, его трафик «утекает» напрямую
Полноценный VPN qeli
  • Создаёт сетевой туннель на уровне всего устройства
  • Весь трафик идёт через VPN автоматически, без настройки приложений
  • Работает для любых программ и игр — даже тех, что не знают про прокси
  • Единые маршруты и DNS под контролем — без утечек трафика
  • Можно пустить через туннель весь трафик или только выбранные подсети
💡
Что это даёт на практике: настроили один раз — и защищён весь интернет на устройстве: браузер, мессенджеры, игры, обновления системы. Не нужно прописывать прокси в каждом приложении и переживать, что что-то пойдёт в обход.
О продукте

Зачем нужен qeli

Обычный VPN отлично работает — пока его не начинают блокировать. qeli создан для случаев, когда это важно: пройти сквозь фильтрацию и при этом держать всё под собственным контролем.

Проблема

Современные системы фильтрации трафика — в том числе государственные — распознают WireGuard и OpenVPN по характерным признакам и блокируют их за секунды. Готовые коммерческие VPN тоже попадают в списки блокировок, а ваши данные при этом проходят через чужие серверы.

Ответ qeli

qeli маскирует трафик под обычные сайты и протоколы — HTTPS, WebSocket, QUIC, — поэтому фильтры не отличают его от повседневного интернета. А работает он на вашем собственном сервере: без посредников, подписок и слежки.

Принципы проекта

Правила, которым qeli следует по умолчанию, — его «конституция».

01

Контроль у вас

qeli работает на вашем сервере. Никаких чужих узлов, аккаунтов и подписок — данные не покидают вашу инфраструктуру.

02

Маскировка — основа, а не надстройка

Устойчивость к блокировкам встроена в сам протокол, а не добавлена отдельным плагином поверх.

03

Честность вместо обещаний

Мы прямо пишем, от чего защищаемся, а от чего нет. Без маркетинговых обещаний полной невидимости.

04

Открытый код

Протокол и все клиенты открыты — можно проверить, что именно происходит внутри.

05

Без слежки и телеметрии

Программа ничего не собирает о вас и никуда не отправляет данные о вашем использовании.

06

Один инструмент вместо набора костылей

Туннель, маскировка, управление и клиенты — в одном решении, без связки из нескольких отдельных программ.

Почему именно qeli

Несколько видов маскировкиПод каждый тип блокировки — свой режим, переключается одной настройкой.
Несколько профилей сразуРаздавайте доступ разным людям с разными настройками из одной службы.
Управление через браузерСсылки и QR-коды для подключения — без ручной правки файлов.
Клиенты под три платформыLinux, Android и Windows — настройки переносятся одной ссылкой.
Что это

Одна программа на вашем сервере — и VPN, и маскировка трафика

По возможностям qeli близок к известным инструментам маскировки под HTTPS, но использует собственный сетевой протокол, встроенный туннель и панель управления. Не нужны дополнительные программы-посредники — всё работает в одной службе.

Собственный сетевой протокол

Современное шифрование X25519 и ChaCha20-Poly1305. Каждый пакет шифруется отдельно, а в передаваемых данных нет открытого счётчика — частого признака самодельных VPN.

🛡️

Маскировка трафика по умолчанию

Маскировка под HTTPS, полная маскировка под WebSocket и перенаправление на настоящий сайт (REALITY) — без сторонних программ. Несколько режимов на выбор, переключаются одной настройкой.

🎛️

Несколько профилей сразу

TCP, UDP и REALITY одновременно в одной службе. У каждого профиля свой ключ, свои пользователи и раздельный доступ. WireGuard и OpenVPN так не умеют.

🖥️

Встроенная веб-панель

Управление через браузер с защитой входа. Создание ссылок для подключения и QR-кодов для клиентов — прямо из панели, без правки файлов.

Возможности

Что умеет протокол

Защита ключа сервера, раздельный доступ для пользователей, защита от подбора пароля и устойчивость к сбоям — всё собрано в одной программе.

🔑

Закрепление ключа сервера

У каждого профиля свой постоянный ключ. Клиент закрепляет его у себя; при несовпадении соединение разрывается — защита от подмены сервера.

🤝

Привязка к рукопожатию

Подлинность подключения привязана к отпечатку всего рукопожатия. Любая подмена данных в канале разрывает соединение — защита от перехвата посредником.

🚫

Обязательная проверка ключа

Клиенты без закреплённого ключа отклоняются, а ключ сервера не раскрывается тем, кто сканирует сеть. Строгий режим против посторонних.

🧱

Раздельный доступ

Пользователь одного профиля не подключится к другому даже с верным паролем. Профили полностью изолированы друг от друга.

Защита от подбора пароля

Блокировка по паре «пользователь и адрес» с настраиваемым порогом. Пароли защищены стойким к перебору алгоритмом Argon2id.

📡

Защита от усиления атак

Сервер отклоняет слишком короткие запросы — его нельзя использовать как усилитель для DDoS-атак на третьи стороны.

🔁

Автопереподключение

Связь восстанавливается сама, с нарастающими интервалами. Недоступность сервера определяется за десятки секунд. Смена Wi-Fi и мобильной сети не разрывает сессию.

🧬

Устойчивый к сбоям DNS

Настройки DNS восстанавливаются после сбоя или некорректного завершения — интернет не пропадает даже после аварийной остановки программы.

🌀

Скрытый счётчик пакетов

В передаваемых данных нет открытого растущего счётчика пакетов — частого признака, по которому распознают и блокируют самодельные VPN.

Как работает соединение

Установка соединения шаг за шагом

Сервер подтверждает свою подлинность до того, как клиент отправит пароль, — перехватить пароль посреднику не удастся. Порядок шагов важен для безопасности.

1

Знакомство

Клиент ⇄ Сервер

Клиент начинает соединение так же, как обычный браузер при заходе на сайт по HTTPS, и обменивается с сервером временными ключами. Внешне это неотличимо от захода на обычный сайт.

клиент: приветствие (как браузер) → сервер: ответ и сертификат
2

Отпечаток рукопожатия

внутри

Подлинность подключения привязывается к отпечатку всего обмена. Если кто-то посередине подменит хотя бы одно сообщение — отпечаток не сойдётся, и соединение прервётся.

отпечаток = хеш всех сообщений рукопожатия
3

Сервер доказывает подлинность

Сервер → Клиент

Сервер доказывает, что владеет своим постоянным ключом, а клиент сверяет этот ключ с закреплённым у себя. Это происходит до отправки пароля — поэтому подменный сервер пароль не получит.

проверка: ключ сервера = закреплённый ключ?
4

Клиент входит

Клиент → Сервер

Только теперь по уже защищённому каналу клиент отправляет логин и пароль. Пароль проверяется стойким алгоритмом, а доступ выдаётся согласно профилю пользователя.

логин и пароль → проверка Argon2id → доступ по профилю

Передача данных

Клиент ⇄ Сервер

Каждый пакет шифруется, дополняется до нужного размера и отправляется в выбранном виде маскировки — под HTTPS, WebSocket или QUIC.

пакет → шифрование → маскировка (HTTPS · WebSocket · QUIC)
Режимы маскировки

Четыре способа выглядеть «не как VPN»

Режим определяет, как соединение выглядит «на проводе» для систем фильтрации. Выбирается одной настройкой, одинаково на сервере и клиенте. Ниже — что именно уходит в сеть и против какого уровня фильтрации работает каждый режим.

по умолчаниюTCP · уровень 1

Маскировка под HTTPS

fake-tls · мимикрия TLS 1.3

Соединение начинается с псевдо-рукопожатия TLS 1.3: клиент шлёт ClientHello с именем сайта (SNI), обменом ключами X25519 (key_share) и GREASE-значениями. Порядок TLS-расширений рандомизируется, поэтому отпечаток JA3/JA4 меняется при каждом подключении. Дальше данные идут в TLS-записях типа Application Data — как у настоящего HTTPS.

на проводе ClientHello · SNI · x25519 · GREASE порядок расширений рандомизирован данные → TLS record 0x17 (application_data)
  • Цель: пассивный сигнатурный DPI (уровень 1)
  • Отпечаток JA3 уникален для каждого соединения
  • Минимальная структура — почти нет накладных расходов
Нагрузка от маскировки ≈ 0%
защита от проверкиTCP · уровень 3

Перенаправление на сайт (REALITY)

reality · проксирование чужих хендшейков

На каждом TCP-подключении сервер делает один «подсмотр» (peek) первого ClientHello. Если это не клиент qeli — определяется по наличию расширения ALPN (у qeli-клиента его нет), — соединение целиком и прозрачно проксируется на настоящий сайт (например, cloudflare:443). Активный пробер, который сам достучится до сервера (openssl s_client), увидит реальный сайт с действующим сертификатом, а не VPN. Решение принимается один раз на accept.

на проводе peek ClientHello на TCP accept есть ALPN → проксируем на реальный сайт :443 нет ALPN → это qeli-клиент, обычный сеанс
  • Цель: активный пробинг сервера (уровень 3)
  • Один peek на подключение — в передаче данных не участвует
  • Скорость передачи — как без маскировки
Нагрузка на процессор ≈ 0%
UDPUDP · уровень 2

Маскировка под QUIC

quic · форма QUIC v1 short-header

Для UDP датаграммы оформляются под заголовок QUIC версии 1. Зашифрованная датаграмма принимает форму QUIC short-header: первый байт — в диапазоне с установленным fixed-битом QUIC, затем 12-байтовый nonce играет роль connection-id, далее защищённые данные — а не равномерный шум с первого байта. Начальная датаграмма добивается до ≥1200 байт (защита от усиления атак), сервер отбрасывает слишком короткие.

на проводе [flag 0x40|x][nonce:12 как conn-id][protected] initial ≥ 1200 байт (анти-амплификация)
  • Цель: DPI, ожидающий QUIC/HTTP3 (уровень 2)
  • Первый байт — в диапазоне QUIC, а не случайный
  • Глубокий разбор QUIC всё же отличит — полная мимикрия в планах
Точка насыщения ~400 → ~350 Мбит/с
Скорость

Измерено, а не обещано

Замеры на двух одинаковых серверах: по 2 ядра процессора, канал около 1 Гбит/с. Версия 2.0.0, июнь 2026 года.

Скорость по протоколу TCP в разных режимах

отдача (Мбит/с) загрузка (Мбит/с)
под HTTPSобычный
выравнивание
дробление
маскировка
REALITY

Все режимы стабильно держат ~410–560 Мбит/с без обрывов. Маскировка под HTTPS почти не снижает скорость, REALITY — наравне с обычным режимом, полная маскировка теряет 10–13% из-за двойного шифрования.

Протокол UDP: потери при росте скорости

обычный выравнивание под QUIC

По UDP передача без потерь до 300 Мбит/с, держит ~400 Мбит/с при потерях менее 3%, насыщается около 500 Мбит/с — расшифровка не успевает на одном ядре процессора.

~475 / ~560
Скорость TCP (отдача / загрузка), Мбит/с
~400
Скорость UDP при потерях <3%, Мбит/с
~1.5 мс
Дополнительная задержка (без VPN <0.3)
~20%
Загрузка одного ядра процессора

Ограничение — расшифровка выполняется на одном ядре процессора. На более мощном оборудовании или с аппаратным ускорением шифрования скорость будет выше. Для сравнения, без VPN на том же стенде: TCP около 20 Гбит/с, UDP около 1 Гбит/с.

Сравнение

qeli рядом с другими решениями

Без маркетинга. Показатели qeli измерены на нашем тестовом стенде; данные других решений — типовые опубликованные значения на сопоставимом оборудовании (2 ядра процессора, канал около 1 Гбит/с). В сравнение включены и инструменты обхода блокировок, и обычные VPN — для ориентира.

⚠️
Чистый WireGuard и OpenVPN не маскируют трафик. Там, где соединения фильтруют, их распознают по характерным признакам и блокируют — поэтому напрямую сравнивать их с qeli по устойчивости к блокировкам некорректно. Здесь они приведены как ориентир по скорости. Обфускацию для WireGuard добавляет отдельный проект — AmneziaWG, он и включён в сравнение наравне с другими инструментами обхода блокировок.

Профиль возможностей

qeli WireGuard V2Ray

Скорость передачи (TCP, 2 ядра)

WireGuardбез маскировки
AmneziaWG
Hysteria 2QUIC
qeli
Shadowsocks
OpenVPNбез маскировки
V2Ray

WireGuard быстрее всех, но только без маскировки — под блокировками он не работает. Среди инструментов обхода блокировок qeli держит около 475 Мбит/с стабильно — выше типового V2Ray и наравне с другими.

Сравнение возможностей

Возможность WireGuard AmneziaWG OpenVPN Shadowsocks V2Ray Hysteria 2 qeli
Полноценный VPN (а не прокси)дададапроксипроксипроксида
Скорость★★★★★★★★★★★★★★★★★★★★★★★★★★
Маскировка трафиканет★★★нет★★★★★★★★★★★★★★★
Несколько режимов маскировкинетодиннетплагины★★★★частично★★★ HTTPS / WebSocket / REALITY
Маскировка под HTTPS / HTTP3нетнетTLSчерез плагинTLS + REALITYпод HTTP/3под HTTPS + REALITY
Встроенная панель управлениянетприложениенетнетнетнетда
Защита от подбора паролянетнетплагиннетнетнетда
Закрепление ключа сервераключ узлаключ узласертификатпарольдасертификатда
Раздельный доступ по профилямнетнетнетнетчастичнонетда
Несколько профилей в одной службенетнетнетнетданетда
Работа в ядре системыдаданетнетнетнетнет
Независимый аудит безопасности★★★★★★★★★★★★★★★нет
Постквантовая криптографиянетнетнетнетнетнетв планах

✅ Когда выбрать qeli

VPN на своём сервере для себя или небольшой команды, где важны: маскировка трафика под HTTPS или под WebSocket, встроенная панель управления, несколько профилей, закрепление ключа и пароль, раздельный доступ для пользователей.

❌ Когда лучше другое

Нужна максимальная скорость — берите WireGuard. Нужна защита от государственной активной проверки с настоящим сертификатом — Xray REALITY. Нужен код, прошедший независимый аудит, — OpenVPN или WireGuard. Постквантовая криптография — пока нет ни у кого из списка.

Безопасность

Шифрование и честная модель угроз

Что защищено, а что нет. qeli открыто описывает свои ограничения вместо маркетинговых обещаний полной невидимости.

Криптография

  • Обмен ключамиX25519, новый ключ на каждую сессию
  • Шифрование данныхChaCha20-Poly1305, с проверкой целостности
  • Формирование ключейHKDF-SHA256, отдельно по направлениям
  • ПаролиArgon2id, стойкий к перебору
  • Защита от повтораскользящее окно по пакетам
  • Ключ серверапостоянный, свой для каждого профиля
  • Сравнение секретовза постоянное время (защита от атак по времени)

Уровни систем фильтрации трафика

1
Поиск по сигнатурам — сопоставление с известными шаблонами. Полностью закрыто
2
Статистический анализ — случайность данных, размеры и тайминги пакетов (госфильтры в Китае и России). Маскировка под WebSocket и QUIC закрывает анализ случайности
3
Активная проверка — система сама подключается к серверу и проверяет его. Закрывает режим REALITY; настоящий TLS-сертификат — в планах

🛡️ Что реализовано

  • Закрепление ключа сервера и обязательная проверка
  • Привязка к рукопожатию — защита от перехвата посредником
  • Раздельный доступ по профилям, блокировка при подборе пароля
  • Защита от усиления атак и от повтора пакетов
  • Устойчивый к сбоям DNS, проверка ответов от провайдера
  • Стирание ключей из памяти сразу после использования

⚠️ Чего qeli не делает (честно)

  • Маскировка под HTTPS — это не настоящий TLS, сертификат не подлинный
  • От активной проверки защищает только режим REALITY
  • Пока нет постквантовой криптографии (в планах)
  • По умолчанию — доверие при первом подключении, если ключ не закреплён
  • Код не проходил независимый внешний аудит безопасности
Клиенты

Три платформы — один протокол

Все клиенты полностью совместимы с сервером. Ссылка для подключения и QR-код переносят все настройки в любой клиент одним нажатием.

🐧

Linux — сервер и клиент

Написан на Rust

  • Сетевой туннель встроен в программу
  • Сервер и клиент — в одной программе
  • Запуск как системная служба, пакет .deb
  • Команды управления ключами и добавления клиентов
🪟

Windows

Приложение

  • Встроенный сетевой драйвер, отдельная установка не нужна
  • Работает как служба Windows — ещё до входа в систему
  • Значок в трее, уведомления, тема системы, русский и английский язык
  • Один файл около 7,5 МБ

Настройка — единый текстовый формат

Один формат настроек для сервера, клиента и списка пользователей. Настройки клиента — это та же ссылка для подключения и QR-код.

настройки клиента
# минимальный набор настроек
[qeli]
server = vpn.example.com:443
proto  = tcp
mode   = obfs
front  = websocket
obfs   = ОБЩИЙ-СЕКРЕТНЫЙ-КЛЮЧ
user   = alice
pass   = ••••••••
key    = 33f399e6…d532450 # закреплённый ключ сервера
ссылка для подключения
# одна ссылка → QR-код → импорт в клиент
qeli://alice:pass@vpn.example.com:443
  ?proto=tcp
  &mode=obfs
  &front=websocket
  &obfs=ОБЩИЙ-СЕКРЕТНЫЙ-КЛЮЧ
  &sni=www.google.com
  &key=33f399e6…d532450

# создаётся в панели управления или командой:
$ qeli add-client alice
Открытый код

Проект на GitHub

Весь код открыт — протокол, сервер и три клиента. Изучайте, собирайте сами, сообщайте о проблемах и предлагайте улучшения.

Полноценный self-host VPN с собственным сетевым протоколом и встроенной маскировкой трафика — под HTTPS, WebSocket, QUIC и REALITY.

vpnrustanti-censorshipobfuscationtunreality
Rust ★ 1 248 ⑂ 86 ⚖ MIT ● обновлён сегодня
$ git clone https://github.com/qeli-vpn/qeli.git
Развитие

Что сделано и что впереди

✅ Сделано

  • Привязка к рукопожатию — защита от перехвата
  • Отдельный ключ сервера для каждого профиля и его смена
  • Режим полной маскировки и перенаправление REALITY
  • Маскировка под WebSocket — обход блокировки зашифрованного трафика
  • Маскировка UDP под QUIC
  • Единый текстовый формат настроек
  • Автопереподключение, устойчивый к сбоям DNS, освобождение неактивных подключений
  • Три клиента с индикатором скорости
  • Два раунда усиления безопасности, развёртывание на боевом сервере

🚧 В работе

  • Настоящий TLS-сертификат под реальным доменом — защита от фильтрации на уровне Xray REALITY, без собственной маскировки под HTTPS

🔭 В планах

  • Постквантовая криптография (X25519 + ML-KEM)
  • Формирование трафика под профиль HTTP/3
  • Многоканальность и ускорение передачи

Свой VPN, который проходит там, где не проходят другие

Соберите программу, задайте настройки и раздайте ссылки для подключения. Одна служба — TCP, UDP, REALITY и панель управления через браузер.

$ cargo build --release          # собрать программу
$ qeli server --config server.conf  # запустить сервер
$ qeli add-client alice           # выдать ссылку клиенту