Sing-Box WARP Project (Additional Proton out)

Author remark: вы спросите - нахуя такие сложности? А потому что нативный warp не поддерживает amneziaWG ключи для обфускации WireGuard. А ебаться в саму амнезию нет желания. К тому же sing-box сразу может поднять локальный сокс что упрощает просовывание этого варпа во всякого рода панели. UPD: Теперь в рф захотели блокировать github и появилась проблема установки панелей. Данное решение покрывает проблемы со скачиванием любых репозиториев или иного self-host софта с github и попутно покрывает ряд других блокнутых ресурсов при включении TUN во время установки. Список ресурсов будет дополняться.

Проект для запуска sing-box с WARP через systemd.

Структура проекта

  • quick-install.sh — установка и настройка systemd-сервиса
  • generate-config.sh — генератор config.json из WireGuard AWG3.0
  • warp.conf.example — пример WARP-конфигурации
  • proton.conf.example — пример второй (Proton) WireGuard-конфигурации

Как это работает

  1. При установке вводится WARP-конфиг (AWG 3.0) → сохраняется в /etc/sing-box-warp/warp.conf
  2. Опционально вводится второй конфиг (Proton VPN, обычный WireGuard или wg://) → /etc/sing-box-warp/proton.conf
  3. generate-config.sh парсит конфиги и пишет /opt/sing-box-warp/config.json
  4. SOCKS5 WARP доступен на порту 2080; при добавлении Proton — второй SOCKS5 на 3080
  5. Опционально TUN для сплит-маршрутизации

Схема маршрутизации

Скрипт работает в двух режимах: только WARP или WARP + Proton.

  • SOCKS-инпуты жёстко привязаны к своим выходам: 2080 → warp-out, 3080 → proton-out.
  • Всё остальное (TUN-трафик, списки маршрутизации .srs, сайты проверки IP, proxy-DNS) идёт в «дефолтный» выход. Дефолт выбирается при установке: WARP или Proton (вопрос задаётся только если Proton добавлен).
  • Если Proton не добавлен — второй SOCKS-инпут (3080) и proton-out не создаются, дефолт всегда WARP.

Установка

Сгенерируйте конфиг на https://warp-generation.github.io (https://t.me/warp_generator_bot) (AWG 2.0 - 3 вариант, если не заработает переустановите с 2 вариант), затем:

curl -fsSL https://gitea.digitalforest.my/hesoyam/sing-warp-socks5/raw/branch/main/quick-install.sh | sudo bash

Вставьте текстом всё содержимое сгенерированного AWG конфига в терминал. Enter затем ctrl+D

Затем скрипт спросит про Proton. Брать протон тут https://account.protonvpn.com/downloads (Нужен аккаунт) Ответьте n, чтобы оставить только WARP, или y и вставьте второй WireGuard-конфиг (формат [Interface]/[Peer] как у Proton VPN, либо wg://), завершив ввод Ctrl+D.

Add Proton configuration? (y/n)

Далее спрашивается включение TUN. Включите, если с сервера недоступны заблокированные ресурсы (GitHub и т.п.). Без TUN — только SOCKS5.

Enable TUN mode? (y/n)

Если Proton добавлен — скрипт спросит, куда направлять весь не-SOCKS трафик (дефолтный выход). SOCKS-инпуты при этом всегда остаются: 2080 → WARP, 3080 → Proton.

=== Default route ===
  1) WARP   (warp-out)
  2) Proton (proton-out)
Select default route [1/2]

Повторный запуск инсталлера останавливает старый сервис, переустанавливает файлы и запускает заново.

Формат warp.conf

[Interface]
PrivateKey = {privkey}
Address = 172.16.0.2, 2606:4700:110:890e:48c0:b073:6ebe:d347
DNS = 1.1.1.1, 1.0.0.1, 2606:4700:4700::1111, 2606:4700:4700::1001
MTU = 1280
S1 = 0
S2 = 0
Jc = 4
Jmin = 40
Jmax = 70
H1 = 1
H2 = 2
H3 = 3
H4 = 4
I1 = {string}

[Peer]
PublicKey = {pubkey}
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = engage.cloudflareclient.com:2408
PersistentKeepalive = 25

Формат proton.conf (опционально)

Обычный WireGuard-конфиг (например, экспорт из Proton VPN) или wg://-ссылка.

[Interface]
PrivateKey = {privkey}
Address = 10.2.0.2/32
DNS = 10.2.0.1

[Peer]
PublicKey = {pubkey}
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 149.50.211.159:51820
PersistentKeepalive = 25

Использование

SOCKS5 без авторизации:

  • WARP — localhost:2080
  • Proton (если добавлен) — 0.0.0.0:3080
curl --proxy socks5://localhost:2080 ip-api.com   # через WARP
curl --proxy socks5://localhost:3080 ip-api.com   # через Proton

С TUN трафик по спискам .srs идёт через дефолтный выход (WARP или Proton); SOCKS5 при этом остаётся доступным.

curl ip-api.com

Управление сервисом

sudo systemctl enable sing-box-warp
sudo systemctl start sing-box-warp
sudo systemctl status sing-box-warp
sudo journalctl -u sing-box-warp -f
sudo systemctl restart sing-box-warp

Обновление конфигурации

Отредактируйте нужные файлы в /etc/sing-box-warp/:

  • warp.conf — конфиг WARP
  • proton.conf — конфиг Proton (удалите файл, чтобы отключить Proton)
  • enable-tun1/0 для TUN
  • default-routewarp или proton (куда идёт весь не-SOCKS трафик)

затем:

sudo /opt/sing-box-warp/generate-config.sh
sudo systemctl restart sing-box-warp

Полная переустановка

Заново запустить скрипт quick-install.sh.

Полное удаление

sudo rm -rf /opt/sing-box-warp
sudo rm -rf /etc/sing-box-warp
sudo rm -rf /etc/systemd/system/sing-box-warp.service
sudo rm -rf /var/cache/sing-box-warp
sudo rm /usr/bin/sing-box /usr/local/bin/sing-box
S
Description
No description provided
Readme
165 KiB
Languages
Shell 100%