Установка sing-box на VPS для обхода блокировок в России
sing-box — это универсальное прокси-ядро на Go, которое объединяет VLESS, Reality, Hysteria2 и TUIC в одном бинарнике без зависимостей. После усиления DPI и активного зондирования (active probing) со стороны систем фильтрации в РФ старые схемы вроде ванильного VMess и Shadowsocks стали ненадёжными. Reality маскирует трафик под реальный TLS-хендшейк к чужому сайту, а Hysteria2 и TUIC поверх QUIC выживают там, где TCP-соединения подрезаются по скорости. Это руководство — полная установка sing-box на собственном офшорном VPS за пределами зоны фильтрации, с рабочими конфигами, автозапуском через systemd и выбором локации с низким пингом до Москвы.
Need this done for your project?
We implement, you ship. Async, documented, done in days.
Почему sing-box, а не v2ray или Outline
Ключевая проблема обхода DPI в РФ в 2026 — это не блокировка по IP, а распознавание самого протокола и активное зондирование сервера. Система фильтрации отправляет на ваш сервер «пробные» пакеты и смотрит, как он отвечает: если ответ выглядит как прокси, а не как обычный веб-сервер, IP попадает под ограничение скорости или блокировку. sing-box решает это лучше связки v2ray + плагины, потому что:
- Reality — встроен нативно. Не нужен реальный TLS-сертификат и домен: сервер проксирует TLS-хендшейк к чужому популярному сайту (например
www.microsoft.com), а перехват происходит только для клиентов с правильным ключом. Для зондирующего бота сервер неотличим от обычного зеркала чужого сайта. - Один бинарник на Go — нет Python/Node-зависимостей, меньше поверхность атаки, проще обновления и аудит конфига (единый JSON).
- Мультипротокол — VLESS+Reality (TCP), Hysteria2 и TUIC (оба поверх QUIC/UDP) работают на одном сервере одновременно. Если DPI начинает резать TCP 443, вы переключаете клиент на QUIC без переустановки.
- Активная разработка — Outline/Shadowsocks при всей простоте детектируются по энтропии трафика, а sing-box получает обновления маскировки чаще.
Для устойчивости важно держать сервер вне досягаемости системы фильтрации — то есть на офшорном VPS, а не у российского хостера.
Выбор VPS и локации с низким пингом до Москвы
Скорость обхода упирается в RTT между вашим устройством и сервером. Чем ближе сервер к РФ географически и по маршруту, тем меньше задержка и тем приятнее работают QUIC-протоколы. Практические ориентиры по пингу до Москвы:
- Нидерланды / Германия — обычно 35–55 мс, лучший баланс «низкая задержка + вне юрисдикции РФ».
- Румыния — около 45–60 мс, удобно для CIS-аудитории и дешевле западноевропейских площадок.
- Финляндия — самый короткий маршрут (часто 20–35 мс), но трафик нередко идёт через российские стыки — менее устойчиво при эскалации фильтрации.
По ресурсам sing-box крайне нетребователен: для личного использования и нескольких клиентов хватает 1 vCPU и 1 ГБ RAM. Узким местом становится не процессор, а пропускная способность канала и лимит трафика. Берите тариф с честным гигабитным портом и достаточной квотой. Подойдёт младший офшорный VPS в Нидерландах или Румынии; под высокий трафик и несколько пользователей — отдельный выделенный сервер с непрерывной полосой.
Установка sing-box на офшорный VPS
Все команды выполняются по SSH под root на чистой Debian 12 или Ubuntu 22.04/24.04. Сначала обновите систему и поставьте бинарник из официального репозитория:
# обновление и базовые утилиты
apt update && apt -y upgrade
apt -y install curl ca-certificates jq
# официальный установщик (ставит бинарник + unit systemd)
bash <(curl -fsSL https://sing-box.app/install.sh)
# проверка версии
sing-box version
Сгенерируйте материал для VLESS+Reality прямо встроенными командами sing-box, чтобы не использовать сторонние генераторы:
# пара ключей X25519 для Reality
sing-box generate reality-keypair
# -> PrivateKey: ... (в конфиг сервера)
# -> PublicKey: ... (в конфиг клиента)
# UUID для пользователя VLESS
sing-box generate uuid
# short_id (8 hex символов)
sing-box generate rand --hex 8
Сохраните PrivateKey, PublicKey, UUID и short_id — они понадобятся в конфигах сервера и клиента ниже.
Конфиг VLESS+Reality против активного зондирования РКН
Главная идея Reality: в поле server_name вы указываете чужой реальный домен, к которому сервер умеет проксировать настоящий TLS. Выбирайте крупный сайт с TLS 1.3, который не заблокирован в РФ и не принадлежит вам (например www.microsoft.com, www.icloud.com). Файл /etc/sing-box/config.json:
{
"log": { "level": "warn" },
"inbounds": [
{
"type": "vless",
"listen": "::",
"listen_port": 443,
"users": [
{ "uuid": "ВАШ-UUID", "flow": "xtls-rprx-vision" }
],
"tls": {
"enabled": true,
"server_name": "www.microsoft.com",
"reality": {
"enabled": true,
"handshake": {
"server": "www.microsoft.com",
"server_port": 443
},
"private_key": "ВАШ-REALITY-PRIVATE-KEY",
"short_id": ["ВАШ-SHORT-ID"]
}
}
}
],
"outbounds": [ { "type": "direct" } ]
}
Почему это переживает активное зондирование: когда система фильтрации шлёт на порт 443 пробный запрос без правильного ключа Reality, sing-box прозрачно проксирует соединение на настоящий www.microsoft.com. Зонд видит валидный сертификат и контент Microsoft — IP выглядит как обычное зеркало, а не как прокси. flow: xtls-rprx-vision дополнительно маскирует размеры пакетов под типичный HTTPS-паттерн.
Проверьте синтаксис и запустите:
sing-box check -c /etc/sing-box/config.json
systemctl restart sing-box
systemctl status sing-box --no-pagerHysteria2 и TUIC как запасные каналы поверх QUIC
Когда DPI начинает агрессивно резать длинные TCP-сессии на 443, спасают протоколы поверх QUIC (UDP). Их сложнее throttling-ить, и они быстрее восстанавливаются при потере пакетов. Добавьте в массив inbounds второй и третий вход (для Hysteria2 нужен реальный TLS-сертификат — получите бесплатный через acme.sh / Let's Encrypt на свой поддомен):
{
"type": "hysteria2",
"listen": "::",
"listen_port": 8443,
"users": [ { "password": "ВАШ-ПАРОЛЬ" } ],
"tls": {
"enabled": true,
"alpn": ["h3"],
"certificate_path": "/etc/sing-box/cert.pem",
"key_path": "/etc/sing-box/key.pem"
}
},
{
"type": "tuic",
"listen": "::",
"listen_port": 8444,
"users": [ { "uuid": "ВАШ-UUID", "password": "ВАШ-ПАРОЛЬ" } ],
"congestion_control": "bbr",
"tls": {
"enabled": true,
"alpn": ["h3"],
"certificate_path": "/etc/sing-box/cert.pem",
"key_path": "/etc/sing-box/key.pem"
}
}
Откройте UDP-порты в фаерволе (ufw allow 8443/udp, ufw allow 8444/udp). На клиенте (Hiddify, sing-box для Android/iOS, NekoBox) держите все три профиля — VLESS+Reality основным, Hysteria2/TUIC переключателями на случай ухудшения. Включение bbr на стороне VPS дополнительно сглаживает потери на длинном маршруте до РФ.
Автозапуск и автоперезагрузка через systemd
Официальный установщик уже кладёт unit, но для устойчивости важно, чтобы сервис поднимался после перезагрузки VPS и сам перезапускался при сбое. Включите автозапуск и при необходимости усильте политику рестарта через drop-in:
# автозапуск при старте системы
systemctl enable sing-box
# drop-in для жёсткого autorestart
mkdir -p /etc/systemd/system/sing-box.service.d
cat > /etc/systemd/system/sing-box.service.d/restart.conf <<'EOF'
[Service]
Restart=always
RestartSec=5
StartLimitIntervalSec=0
EOF
systemctl daemon-reload
systemctl restart sing-box
# логи в реальном времени
journalctl -u sing-box -f --no-pager
Restart=always + RestartSec=5 гарантируют, что после краша или OOM сервис вернётся через 5 секунд, а StartLimitIntervalSec=0 снимает лимит на число рестартов. Так канал переживает перезагрузку VPS и временные сбои без ручного вмешательства.
Похожие услуги
Privacy & anti-censorship guides
Why Anubiz Host
Ready to get started?
Skip the research. Tell us what you need, and we'll scope it, implement it, and hand it back — fully documented and production-ready.