sing-box часто называют VPN-ядром, но точнее говорить: это универсальная proxy-платформа. Она не выдает сервер, не продает подписку и не превращает любой профиль в безопасное подключение. Ее задача ниже уровнем: принять сетевой трафик, сопоставить его с правилами, выбрать исходящий маршрут и передать дальше через нужный протокол.
Официальный репозиторий SagerNet/sing-box описывает проект коротко: The universal proxy platform. На практике пользователь видит это в трех формах: как встроенное ядро внутри графического клиента, как отдельную команду sing-box run -c config.json или как JSON-конфиг, который импортируется в приложение. Поэтому статья не про «какую кнопку нажать», а про то, как читать логику sing-box без мистики.
#Где пользователь встречает sing-box
Самый частый сценарий — вы не ставили sing-box отдельно, но клиент пишет, что работает на sing-box core. Так устроены многие современные proxy/VPN-приложения: интерфейс отвечает за импорт подписки, выбор узла и переключатели, а sing-box внутри выполняет сетевую работу. Если в таком клиенте ломается TUN или DNS, причина может быть не в красивой оболочке, а в том, какие настройки она сгенерировала для ядра.
Второй сценарий — ручной JSON. Его используют на Linux-серверах, роутерах, VPS, desktop-машинах и в продвинутых Android/iOS-схемах. JSON удобен тем, что вся логика видна в одном файле: DNS-серверы, входы, выходы, правила, selector, urltest, TUN и исключения. Но удобство обманчиво: одна старая опция, неправильный tag или неверный DNS final могут дать симптом «интернет пропал», хотя сервер и протокол исправны.
#Как устроен конфиг sing-box
Базовый конфиг обычно читается блоками. Не обязательно понимать каждую опцию сразу; важнее видеть, где начинается входящий трафик, куда он выходит и какие правила стоят между ними.
| Раздел | Что описывает | Что ломается при ошибке |
|---|---|---|
log | Уровень логов и вывод диагностики. | Проблему трудно найти: клиент молчит или показывает слишком мало деталей. |
dns | DNS-серверы, правила резолвинга, стратегия IPv4/IPv6, cache и FakeIP. | Сайты не открываются, открывается не тот IP, появляются DNS-утечки. |
inbounds | Откуда sing-box принимает трафик: локальный proxy, TUN, серверный порт. | Приложения идут мимо proxy, TUN не поднимается, порт не слушается. |
outbounds | Куда sing-box отправляет трафик: direct, block, VLESS, Trojan, Hysteria2, selector. | Профиль подключается не туда, fallback не работает, direct/block перепутаны. |
route | Правила выбора outbound по домену, IP, процессу, протоколу или rule-set. | Часть сайтов идет напрямую, локальная сеть ломается, возникает routing loop. |
Почти все важные связи держатся на tag. Inbound имеет tag, outbound имеет tag, DNS server имеет tag, route rules ссылаются на outbound tag, DNS final выбирает DNS server tag. Если в одном месте написано proxy, а в другом Proxy, для JSON это разные строки. Поэтому при ручной правке первым делом проверяют не «протокол вообще», а совпадение тегов.
VLESS
Переходите к настройке VLESS
Если вы уже понимаете, как работает VLESS, получите данные для подключения и добавьте их в совместимое приложение.
#Inbound и outbound простыми словами
Inbound — это вход. Он отвечает на вопрос: как трафик попадает в sing-box? На компьютере это может быть локальный SOCKS/HTTP proxy, mixed inbound для приложений, TUN-интерфейс или firewall redirection. На сервере inbound часто слушает внешний порт и принимает VLESS, Trojan, Shadowsocks, Hysteria2 или другой протокол.
Outbound — это выход. Он отвечает на вопрос: куда отправить трафик после обработки? Это может быть proxy-сервер, прямое подключение direct, блокировка block, DNS outbound, ручной selector или urltest, который выбирает узел по проверке доступности.
mixed,socks,httpво входах удобны для локального proxy-режима.tunво входах нужен, когда клиент должен перехватывать трафик системно, а не только от приложений с proxy-настройкой.vless,trojan,shadowsocks,hysteria2,tuicмогут быть как частью серверной, так и клиентской схемы, но поля inbound и outbound у них разные.directне значит «плохо»: через direct обычно пускают локальную сеть, адреса роутера, captive portal, иногда региональные или служебные домены.blockполезен для явного запрета рекламы, трекеров или нежелательных маршрутов, но ошибочное правило может заблокировать нужный сервис.
#Почему нельзя просто заменить outbound
Новички часто берут чужой JSON и меняют только адрес сервера. Это рискованно. У VLESS могут быть Reality, TLS, flow, fingerprint и transport-поля. У Hysteria2 важны QUIC-параметры и пароль. У WireGuard — ключи и адреса. У selector/urltest — список вложенных outbound. Если поменять только host и port, конфиг может остаться синтаксически валидным, но логически неверным.
#TUN: когда нужен и почему ломается
Официальный manual sing-box разделяет клиентские подходы на system proxy, firewall redirection и virtual interface. System proxy обычно работает как HTTP proxy и не покрывает весь трафик: часть TCP-клиентов, UDP, ICMP и DNS могут идти мимо. TUN относится к virtual interface: приложение создает виртуальный сетевой интерфейс и превращает сетевой трафик устройства в поток, который можно маршрутизировать через sing-box.
Пользовательски это выглядит просто: включил TUN — весь трафик пошел через приложение. Технически это сложнее. ОС должна разрешить виртуальный адаптер, маршруты должны быть проставлены без петли, DNS должен уходить туда, куда ожидается, а локальная сеть и служебные адреса не должны случайно попасть в чужой outbound.
В конфигурации TUN часто встречаются auto_route, strict_route, адрес виртуального интерфейса и исключения маршрутов. В route-разделе для TUN важны auto_detect_interface или явный default_interface: официальная документация связывает это с предотвращением routing loops, когда исходящие соединения sing-box случайно начинают маршрутизироваться обратно в сам TUN.
#DNS и routing: одна система, а не два отдельных переключателя
DNS в sing-box не сводится к выбору «Google или Cloudflare». Раздел dns задает список серверов, DNS rules, final server, стратегию IPv4/IPv6, cache, optimistic cache и FakeIP. Раздел route выбирает outbound для соединений. Эти части пересекаются: домен нужно сначала разрешить, но решение о том, каким DNS его резолвить и куда отправить результат, зависит от правил.
В TUN-сценариях часто используется действие hijack-dns: DNS-запросы перехватываются и отправляются во внутренний DNS-модуль sing-box. Это помогает контролировать утечки, но не является магической защитой. Если DNS rules противоречат route rules, можно получить ситуацию, где домен резолвится через один маршрут, а соединение уходит через другой.
dns.finalвыбирает DNS-сервер по умолчанию, если правило не сработало.route.finalвыбирает outbound по умолчанию; если он пустой, используется первый outbound.strategyвлияет на IPv4/IPv6: неправильная стратегия может ломать сети с плохой IPv6-поддержкой.rule_setпомогает подключать большие списки доменов или IP, но требует актуального формата и доступного источника.sniffможет уточнять домен/протокол до маршрутизации, но не заменяет правильные DNS-правила.
#Практический порядок чтения правил
- Найдите все outbounds. Выпишите tags: например
proxy,direct,block,dns-out,selector. - Найдите route final. Это маршрут по умолчанию, если ни одно правило не подошло.
- Проверьте правила сверху вниз. Правила обычно читаются по порядку: раннее широкое правило может перехватить то, что вы ожидали отправить позже.
- Сравните DNS final и route final. Они не обязаны совпадать, но должны быть осмысленны.
- Проверьте исключения локальной сети. Адреса роутера, принтера, NAS и корпоративных ресурсов часто должны идти direct.
#Какие клиенты используют sing-box
Официальная документация Project S перечисляет sing-box for Android и sing-box for Apple platforms как графические клиенты с unified experience и платформенными функциями; desktop на этой странице отмечен как work in progress. При этом вокруг sing-box выросла широкая экосистема сторонних клиентов. Их нужно оценивать отдельно: sing-box внутри не гарантирует качество интерфейса, безопасность обновлений и корректный импорт подписок.
Выбор клиента зависит не только от платформы, но и от формата профиля. Один клиент хорошо импортирует VLESS-ссылки, другой удобнее для sing-box JSON, третий лучше работает с Clash/mihomo YAML. Если провайдер дает несколько форматов, выбирайте формат под конкретный клиент, а не пытайтесь исправлять импорт вручную.
#Риски случайных конфигураций
sing-box-конфиг — это не безобидный текст. Он может направлять трафик, менять DNS, блокировать домены, отправлять часть соединений напрямую, включать FakeIP, поднимать TUN и использовать удаленные rule-set. Поэтому не стоит импортировать JSON от неизвестного источника только потому, что «у всех заработало».
- Утечки DNS. DNS может идти не через тот сервер или не через тот outbound, который вы ожидали.
- Прямой маршрут вместо proxy. Слишком широкое direct-правило может вывести чувствительный домен мимо туннеля.
- Чужие rule-set. Удаленные списки правил могут измениться после импорта и повлиять на маршрутизацию.
- Устаревшие поля. sing-box активно меняется: некоторые опции помечаются deprecated и удаляются в новых версиях.
- Системные конфликты. TUN может конфликтовать с другим VPN-клиентом, Docker, VirtualBox, корпоративным агентом, firewall или IPv6-настройками.
- Ложное чувство безопасности. Слово sing-box не говорит, кто владеет сервером и что он делает с трафиком на выходе.
#Что проверять, если sing-box не работает
Диагностику лучше вести слоями. Не меняйте сразу DNS, TUN, протокол и клиент. Сначала докажите, что конфиг запускается, затем что inbound принимает трафик, затем что outbound соединяется с сервером, и только после этого разбирайте route/DNS.
- JSON не запускается. Проверьте синтаксис, лишние запятые, кавычки, поддержку опций вашей версией sing-box и совпадение типов с документацией.
- Профиль импортировался, но подключения нет. Сравните host, port, protocol, security, transport, UUID/password и версию core. Старый клиент может не понимать новые поля.
- Работает браузер, но не приложения. Вероятно, включен только system proxy. Приложения без поддержки proxy, UDP и ICMP могут идти мимо.
- После TUN пропал интернет. Отключите TUN, проверьте обычный proxy, затем смотрите права администратора, виртуальный адаптер,
auto_route,auto_detect_interface,strict_routeи конфликт с другим VPN. - Открываются не все сайты. Ищите широкое direct/block правило, устаревший rule-set, неправильный
route.finalили проблему IPv6 strategy. - Есть DNS-утечки. Проверьте
dns.servers,dns.rules,dns.final, наличиеhijack-dnsв TUN-сценарии и поведение системного DNS ОС. - Локальная сеть недоступна. Проверьте исключения для private IP, роутера, принтера, NAS и корпоративных подсетей. Иногда strict routing специально делает неподдерживаемую сеть недоступной.
- На Windows/macOS/Linux работает по-разному. Отличаются права, firewall, DNS-поведение, IPv6, интерфейсы и драйверы TUN. Не переносите настройки один в один без проверки платформенных ограничений.
#Итог
sing-box стоит понимать как сетевой конструктор: inbound принимает трафик, outbound отправляет его дальше, DNS решает имена, route выбирает путь, а TUN расширяет схему до системного уровня. Эта архитектура мощная, но она требует аккуратности. Если вы видите sing-box в клиенте, полезно знать не только название протокола, но и полный маршрут: от приложения до inbound, через DNS/routing, к выбранному outbound.
Практический минимум такой: используйте официальные источники клиента и core, не импортируйте случайные JSON-конфиги, проверяйте версию sing-box, сначала запускайте простой профиль без TUN, затем включайте DNS/routing настройки по одной. Тогда sing-box остается понятным инструментом, а не черным ящиком, где любое изменение выглядит как «VPN сломался».