sdm-xray
Собственный анти-DPI туннель: форк 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 <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/install.sh) ваш-домен.ru
Скрипт установит xray + панель, получит сертификат Let's Encrypt, напечатает клиентский конфиг и пароль панели.
Без домена (self-signed)
Домен не нужен — сервер генерирует самоподписанный сертификат (10 лет), клиенты доверяют по отпечатку:
bash <(curl -fsSL https://git.my-handbook.ru/ded_ikar/sdm-xray/raw/main/install.sh) --selfsigned
Адрес сервера в клиенте — IP VPS. Сертификат не требует домена/ACME.
Удаление
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-туннель:
ssh -L 8080:127.0.0.1:8080 root@<vps-ip>
# затем http://localhost:8080 (login: admin / пароль из вывода install.sh)
Возможности:
- Статус сервера (активность, версия, сертификат)
- Управление клиентами (добавление/удаление/переименование, ротация UUID)
- Туннель (зеркало, маскировка, экспертные настройки, TLS/REALITY)
- Статистика (трафик по клиентам, онлайн-IP)
- Логи, рестарт, бэкап/восстановление конфига
- Логин + пароль для входа (по умолчанию admin / генерируется при установке)
Клиенты
Windows
Скачать xray-stealth-client-windows-amd64.exe из 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:
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
Панель:
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.