8.3 KiB
Sing-Box WARP Project (Additional Proton out)
Author remark:
вы спросите - нахуя такие сложности? А потому что нативный warp не поддерживает amneziaWG ключи для обфускации WireGuard. А ебаться в саму амнезию нет желания. К тому же sing-box сразу может поднять локальный сокс что упрощает просовывание этого варпа во всякого рода панели.
UPD: Теперь в рф захотели блокировать github и появилась проблема установки панелей. Данное решение покрывает проблемы со скачиванием любых репозиториев или иного self-host софта с github и попутно покрывает ряд других блокнутых ресурсов при включении TUN во время установки. TUN режим лучше использовать только на время установок софта.
UPD: Добавлена поддержка ProtonVPN конфигураций совместно с warp или отдельно.
Проект для запуска sing-box с WARP через systemd.
Структура проекта
quick-install.sh— установка и настройка systemd-сервисаgenerate-config.sh— генераторconfig.jsonиз WireGuard AWGwarp.conf.example— пример WARP-конфигурацииproton.conf.example— пример второй (Proton) WireGuard-конфигурации
Как это работает
- При установке отдельно спрашивается добавление WARP и добавление Proton — каждый опционален
- WARP-конфиг (AWG 3.0) →
/etc/sing-box-warp/warp.conf, Proton-конфиг (обычный WireGuard илиwg://) →/etc/sing-box-warp/proton.conf generate-config.shпарсит доступные конфиги и пишет/opt/sing-box-warp/config.json- SOCKS5 WARP доступен на порту
2080, Proton — на3080(создаётся только тот, что добавлен) - Опционально TUN для сплит-маршрутизации
Схема маршрутизации
Скрипт работает в трёх режимах: только WARP, только Proton или WARP + Proton. Нужно выбрать хотя бы один — если отказаться от обоих, установка завершается без действий.
- SOCKS-инпуты жёстко привязаны к своим выходам:
2080 → warp-out,3080 → proton-out. Каждый инпут создаётся только если соответствующий конфиг добавлен. - Всё остальное (TUN-трафик, списки маршрутизации
.srs, сайты проверки IP, proxy-DNS) идёт в «дефолтный» выход.- Если добавлены оба — дефолт выбирается при установке: WARP или Proton.
- Если добавлен только один — он и становится дефолтом автоматически, вопрос не задаётся.
Установка
Сгенерируйте конфиг на 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
Скрипт последовательно спросит про WARP и про Proton — можно добавить оба, только один или, если отказаться от обоих, установка завершится без изменений.
Сначала — WARP. Ответьте y и вставьте текстом содержимое AWG-конфига (Enter, затем Ctrl+D), либо n, чтобы пропустить.
Add WARP configuration? (y/n)
Затем — Proton. Брать протон тут https://account.protonvpn.com/downloads (нужен аккаунт).
Ответьте y и вставьте WireGuard-конфиг (формат [Interface]/[Peer] как у Proton VPN, либо wg://, Ctrl+D для завершения), либо n, чтобы пропустить.
Add Proton configuration? (y/n)
Далее спрашивается включение TUN. Включите, если с сервера недоступны заблокированные ресурсы (GitHub и т.п.). Без TUN — только SOCKS5.
Enable TUN mode? (y/n)
Если добавлены оба конфига — скрипт спросит, куда направлять весь не-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 / proton.conf):
warp.conf— конфиг WARP (удалите файл, чтобы отключить WARP)proton.conf— конфиг Proton (удалите файл, чтобы отключить Proton)enable-tun—1/0для TUNdefault-route—warpили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