Skip to content

SolverNA/OmniGate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Техническое задание: Проект "OmniGate"

1. Концепция и Философия

OmniGate — это гибридная система управления трафиком, объединяющая в себе функции прозрачного прокси-сервера, DPI-инструмента (обход блокировок без VPN) и селективного маршрутизатора.

  • Zero-Touch: Пользователь один раз настраивает списки, дальше система сама решает, как эффективнее доставить пакет.
  • Multi-Layer: Трафик делится не на «вкл/выкл», а на три качественных уровня (VPN, WARP, Direct).
  • On-the-fly Control: Управление маршрутизацией конкретного домена в реальном времени через мобильное приложение (iOS Shortcuts/API).

2. Архитектура системы (Слои)

Уровень 1: Ядро (Core Engine)

В качестве движка предлагается использовать Sing-box. Это наиболее современное, быстрое и гибкое ядро на языке Go.

  • Inbounds: Принимает трафик через TPROXY (прозрачное проксирование на уровне ядра Linux) и SOCKS5/HTTP.
  • Outbounds:
    • AmneziaWG/VLESS+Reality: Для тяжелой артиллерии (AI, заблокированные соцсети с жестким ГЕО).
    • WARP (WireGuard/Masque): Для YouTube и стриминга (высокая скорость, скрытие IP).
    • Direct: Для локального трафика.
  • Routing: Мощный движок правил на основе доменов, IP-адресов и даже гео-данных.

Уровень 2: Управляющий слой (The Controller)

Docker-контейнер на Python/Go, который:

  1. Генерирует и обновляет конфиги для Sing-box.
  2. Следит за состоянием туннелей (Healthcheck).
  3. Предоставляет REST API для внешних команд.
  4. Взаимодействует с системным файрволом роутера (nftables).

Уровень 3: Интерфейс (The Web Dashboard)

Современная SPA-веб-панель, оптимизированная под мобильные устройства.

  • Dashboard: Статус подключений, пинг до AI-сервисов, нагрузка на CPU.
  • Rules Manager: Таблица с тремя колонками (VPN / WARP / Direct), куда можно просто перетаскивать домены.
  • Log Viewer: Просмотр запросов в реальном времени, чтобы быстро понять, какой домен заблокирован.

3. Функциональные требования

3.1. Трехуровневая маршрутизация

Система должна автоматически распределять трафик по следующим правилам:

  • Уровень "Strict Privacy" (VPN): * Назначение: Сервисы, требующие чистый зарубежный IP (ChatGPT, Claude, Midjourney, банковские приложения вне РФ).
    • Протоколы: AmneziaWG, VLESS (Reality/gRPC).
  • Уровень "Fast & Free" (WARP/DPI):
    • Назначение: YouTube (обход замедления), Discord, Instagram, Twitter.
    • Механика: Если ресурс в списке WARP — пакет идет через Cloudflare. Если ресурс заблокирован по SNI, но доступен с РФ-IP — применяются методы SniShaper (фрагментация пакетов, подмена Host).
  • Уровень "Local" (Direct):
    • Назначение: Госуслуги, банки РФ, Яндекс, локальные ресурсы провайдера.
    • Механика: Полный байпас, исключение из любых цепочек проксирования.

3.2. Динамическое управление (The "iOS Magic Button")

Реализация API для команд Apple Shortcuts:

  • Endpoint /quick-add: Принимает домен и категорию.
  • Сценарий: Ты заходишь на сайт, он не грузится. Ты жмешь кнопку в виджете iPhone -> Команда берет URL из браузера -> Отправляет на роутер -> Роутер добавляет домен в список "VPN" -> Перезагружает правила -> Сайт начинает работать через 2 секунды.

3.3. DPI Movements & Shapers

Интеграция логики SniShaper/GoodbyeDPI:

  • TLS Fragment: Разбиение ClientHello.
  • SNI Scrambling: Запутывание заголовка для обхода систем DPI провайдера.
  • Fake Packets: Отправка мусорных пакетов перед реальным запросом.

4. Технические спецификации реализации

Сетевой стек (OpenWrt Integration)

  • NFTables: Использование nftables для перехвата трафика на портах 80 и 443 и перенаправления его в Docker-контейнер (TPROXY). Это позволит избежать необходимости настраивать прокси на каждом девайсе вручную.
  • DNS (The Ghost in the Machine): Самый важный момент. OmniGate должен иметь встроенный DNS-сервер (например, mos-dns или встроенный в sing-box).
    • РФ-домены резолвятся через системный DNS провайдера (низкий пинг).
    • AI и заблокированные домены резолвятся через DoH (DNS over HTTPS) за рубежом, чтобы избежать "отравления" DNS.

Docker Container

  • Base Image: Alpine Linux (минимальный вес).
  • Components:
    • Sing-box (бинарник).
    • Python + FastAPI (для API и логики управления).
    • Nginx (для отдачи фронтенда панели).
  • Persistence: Хранение конфигов и списков в /data томе, чтобы настройки не слетали при обновлении контейнера.

5. Пользовательский интерфейс (UI/UX)

Главная страница

  • Крупные переключатели (Killswitch для всей системы).
  • Выбор активного VPN-профиля (Amnezia, WireGuard и т.д.).

Страница "Rules & Lists"

  • Редактор списков: Текстовое поле для массового добавления доменов.
  • Auto-Sync: Возможность подписаться на внешние списки (например, регулярно подтягивать списки заблокированных ресурсов с GitHub).

Страница "Logs & Discovery"

  • Список последних 50 запросов с указанием: Domain -> Resolved IP -> Route (VPN/WARP/Direct) -> Result (Success/Fail).
  • Кнопка "Move to..." рядом с каждым доменом в логе для быстрой перемаршрутизации.

6. Сценарии использования (Use Cases)

Сценарий А: "Новый ИИ-сервис"

  1. Пользователь заходит на новый сайт cool-ai.com.
  2. Сайт выдает "Access Denied" (бан по IP).
  3. Пользователь нажимает кнопку на телефоне.
  4. OmniGate прописывает cool-ai.com в список outbound-vpn.
  5. Страница обновляется, всё работает.

Сценарий Б: "Проблемы с РФ-банком"

  1. При включенном общем VPN банковское приложение тупит.
  2. OmniGate автоматически видит, что запрос идет к домену .ru, который находится в whitelist-direct.
  3. Трафик идет в обход туннелей. Скорость максимальная.

7. План разработки (Roadmap)

  1. Этап 1 (MVP): Сборка Docker-образа с sing-box и ручным конфигом. Настройка nftables на OpenWrt для прозрачного проксирования.
  2. Этап 2 (Backend): Написание API на FastAPI для изменения JSON-конфига sing-box и его перезапуска.
  3. Этап 3 (Frontend): Создание веб-интерфейса для управления списками доменов.
  4. Этап 4 (Automation): Реализация логики автоматического обновления списков и интеграция с iOS Shortcuts.
  5. Этап 5 (Advanced DPI): Интеграция фишек SniShaper (ECH, Fragmentation) для тех случаев, когда даже WARP не спасает.

8. Почему это "взлетит"?

Проблема текущих решений (Amnezia, Nekoray, v2rayN) в том, что они либо работают на одном устройстве, либо требуют от пользователя быть системным администратором для настройки роутера. OmniGate решает это за счет:

  • Централизации: Один роутер защищает весь дом (ТВ, приставки, телефоны).
  • Гранулярности: Мы не гоним весь трафик через медленный VPN, а используем его только там, где это реально нужно.
  • Удобства: Управление через API и кнопки делает опыт использования "бесшовным".

Это проект на стыке сетевых технологий и качественного UX. Если реализовать вебка-панель в стиле "Apple-like" (просто и красиво), это станет золотым стандартом для домашних сетей в текущих реалиях.

About

Цель — создать программный комплекс для OpenWrt (в Docker-контейнере), который превратит роутер в «умный фильтр», где пользователь вообще забывает о существовании кнопок «Вкл/Выкл VPN»

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors