# sdm-xray Собственный анти-DPI туннель: форк [Xray-core](https://github.com/XTLS/Xray-core) с кастомным транспортом **`stealth`**. Клиент → своя VPS, трафик выглядит как обычный HTTPS-запрос к сайту. ## Как это работает Каждая туннельная сессия — один HTTP/2 POST-стрим поверх TLS 1.3. Снаружи выглядит как обычный POST-запрос к API реального сайта. Для зондов/DPI — зеркало реального сайта (по умолчанию iana.org): многостраничный сайт, ссылки переписаны на ваш домен. Ключевые возможности: - **Ротация путей** — каждый запрос идёт по случайному пути из списка - **Ретрай** — при неудаче клиент автоматически пробует другой путь/порт - **Padding/pacing** — маскирует размеры и тайминги под браузер - **Зеркало** — зонд видит настоящий сайт, а не заглушку - **REALITY** — опционально, для полного сокрытия (чужой домен) ## Установка на VPS ### С доменом (рекомендуется) Домен должен указывать A-записью на IP VPS, порт 80 открыт: ```bash bash <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/install.sh) ваш-домен.ru ``` Скрипт установит xray + панель, получит сертификат Let's Encrypt, напечатает клиентский конфиг и пароль панели. ### Без домена (self-signed) Домен не нужен — сервер генерирует самоподписанный сертификат (10 лет), клиенты доверяют по отпечатку: ```bash bash <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/install.sh) --selfsigned ``` Адрес сервера в клиенте — IP VPS. Сертификат не требует домена/ACME. ### Удаление ```bash bash <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/uninstall.sh) ``` Полностью удаляет systemd-юниты, бинари, конфиги, nginx-сайт, LE-сертификат. apt-пакеты не трогает. ## Панель управления Go-бинарник на VPS, слушает `127.0.0.1:8080`. Доступ через SSH-туннель: ```bash ssh -L 8080:127.0.0.1:8080 root@ # затем http://localhost:8080 (login: admin / пароль из вывода install.sh) ``` Возможности: - Статус сервера (активность, версия, сертификат) - Управление клиентами (добавление/удаление/переименование, ротация UUID) - Туннель (зеркало, маскировка, экспертные настройки, TLS/REALITY) - Статистика (трафик по клиентам, онлайн-IP) - Логи, рестарт, бэкап/восстановление конфига - Логин + пароль для входа (по умолчанию admin / генерируется при установке) ## Клиенты ### Windows Скачать `xray-stealth-client-windows-amd64.exe` из [Releases](https://git.my-handbook.ru/ded_ikar/sdm-xray/releases), сохранить `client-stealth.json` (из вывода install.sh), запустить: ``` xray-stealth-client-windows-amd64.exe run -c client-stealth.json ``` SOCKS-прокси: `127.0.0.1:10808`, HTTP-прокси: `127.0.0.1:10809`. ### Роутер (ARM64) `xray-stealth-client-linux-arm64` — положить в `/tmp`, тот же конфиг. SOCKS 127.0.0.1:10808 или TUN + policy routing. ## Параметры транспорта | Параметр | По умолчанию | Описание | |----------|-------------|----------| | `key` | — | Общий секрет (клиент и сервер) | | `paths` | `["/api/t04d12b46/"]` | Туннельные пути (ротация) | | `ports` | `[443]` | Порты (ротация, опция) | | `padMax` | `2048` | Максимальный размер PAD-кадра | | `padProb` | `50` | Вероятность PAD после DATA (%) | | `paceMs` | `0` | Минимальный интервал между кадрами (мс) | | `paceJitterMs` | `0` | Случайный довесок к paceMs (мс) | | `bps` | `0` | Rate-limit (0 = выкл) | | `target` | — | Зеркало (URL сайта для зондов) | | `retries` | `3` | Количество ретраев | | `padProfile` | `"browser"` | `"browser"` или `"uniform"` | | `decoy` | `false` | Фоновый трафик к CDN | ## Сборка из исходников Нужны Go 1.26, protoc, protoc-gen-go: ```bash GOOS=linux GOARCH=amd64 go build -o xray-server-amd64 ./main # сервер GOOS=linux GOARCH=arm64 go build -o xray-client-arm64 ./main # роутер GOOS=windows GOARCH=amd64 go build -o xray-client-win.exe ./main # Windows ``` Панель: ```bash cd panel && go build -o sdm-panel-linux-amd64 . ``` ## Структура репозитория ``` ├── stealth/transport/internet/stealth/ # Код транспорта (новые файлы) │ ├── config.proto + config.pb.go # Конфигурация (protobuf) │ ├── framing.go # Формат кадров │ ├── conn.go # net.Conn поверх HTTP/2 стрима │ ├── dialer.go # Клиент (TLS, ротация, ретрай) │ └── hub.go # Сервер (зеркало, AUTH) ├── panel/ # Панель управления (Go) │ ├── main.go # HTTP-сервер + API │ ├── ui.go # Встроенный HTML │ └── stats/ # Генерированные gRPC-стабы ├── install.sh # Установка на VPS ├── uninstall.sh # Удаление ├── PROTOCOL.md # Спецификация wire-протокола ├── CHANGELOG.md # История изменений └── LICENSE # MPL-2.0 ``` ## Лицензия MPL-2.0. Новые файлы транспорта — наш код; изменённые файлы upstream (Xray-core) распространяются под MPL-2.0.