Быстрый старт Руководство Обновлено 9 Windows, macOS, Linux, Android, iOS

Inbounds и Outbounds в sing-box: как читать путь трафика

Учимся читать путь трафика в sing-box: разбор inbounds и outbounds, секций route и DNS, а также TUN и VLESS. Практические примеры и типичные ошибки.

sing-boxinboundsoutboundsмаршрутизацияпрокси
Содержание
КороткоВ sing-box inbound принимает трафик, outbound отправляет его наружу. Route решает, какой outbound использовать, а DNS может влиять на маршрутизацию. Понимание этих блоков помогает быстро диагностировать проблемы и правильно настраивать профили.

Что такое inbounds и outbounds в sing-box?

В sing-box inbounds определяют точки входа трафика в ядро, а outbounds — точки выхода. Проще говоря, inbound «слушает» сетевые соединения (от локальных приложений или других прокси), а outbound отправляет трафик к целевым серверам — например, к вашему VPS или напрямую в интернет.

Понимание этой пары — основа диагностики. Если вы видите конфиг, но не понимаете, куда уходит трафик, вы не сможете быстро определить, почему не работает сайт или почему скорость упала.

Как устроен JSON-конфиг sing-box

Типичный конфиг sing-box содержит секции inbounds и outbounds, а также route, dns и другие опциональные блоки. Все они взаимодействуют так:

  • inbounds — список серверов, которые принимают соединения;
  • outbounds — список серверов, которые устанавливают исходящие подключения;
  • route — правила, которые решают, какой outbound использовать для каждого соединения;
  • dns — отвечает за разрешение доменов и может отправлять DNS-запросы через отдельные outbounds.

Таким образом, путь трафика выглядит так: приложение → inbound → route → outbound → сервер в интернете. Обратный путь аналогичен.

Путь трафика: от клиента до сервера

Когда вы включаете sing-box на своём устройстве, он создаёт локальный прокси (например, SOCKS5 на порту 1080). Это inbound-часть. Приложение использует этот прокси, и sing-box через route решает, куда направить соединение: на прямой выход (direct) или через удалённый прокси (vless, shadowsocks и т.д.).

На удалённом сервере sing-box тоже работает: он получает соединение через свой inbound, затем применяет свои правила маршрутизации и отправляет трафик через выбранный outbound. Важно понимать, что «путь трафика» — это не только ваш клиент, но и каждый узел в цепочке.

Читаем конфигурацию: разбор ключевых полей

Чтобы прочитать путь трафика, нужно уметь расшифровывать JSON. Рассмотрим минимальный inbound:

{
  "type": "http",
  "listen": "127.0.0.1",
  "listen_port": 1080
}
  • type — протокол, например http, socks, tun, mixed;
  • listen — адрес, на котором inbound принимает соединения;
  • listen_port — порт.

Аналогично outbound имеет type и параметры сервера:

{
  "type": "vless",
  "server": "example.com",
  "server_port": 443,
  "uuid": "ваш-uuid",
  "tls": { "enabled": true }
}

Здесь server и server_port указывают, куда идёт соединение. Если в outbound есть блок transport, он описывает протокол передачи (WebSocket, gRPC и т.д.).

Роль route и DNS в маршрутизации

Route — это мозг sing-box. Он содержит список правил, каждое из которых соответствует определённому условию (домен, IP, порт, геоданные) и указывает, какой outbound использовать. Правила проверяются последовательно, сверху вниз. Если ни одно правило не совпало, применяется outbound по умолчанию, указанный в final.

{
  "route": {
    "rules": [
      { "domain_suffix": [".google.com"], "outbound": "proxy" }
    ],
    "final": "direct"
  }
}

DNS также влияет на путь трафика. Например, если в dns задан сервер, а в route используется правило по домену, sing-box сначала выполнит DNS-запрос, затем примет решение. Некоторые типы inbound (например, TUN) перехватывают DNS-запросы и направляют их отдельно.

TUN-режим и перехват трафика

TUN — это виртуальный сетевой интерфейс. Когда вы задаёте inbound типа tun, sing-box получает все сетевые пакеты системы (или заданной маршрутизацией). Это позволяет работать в режиме «прозрачного прокси». В этом случае путь трафика начинается не с конкретного порта, а с перехвата пакетов на уровне ядра ОС.

Для TUN важно задать диапазоны IP, которые должны идти через прокси, а также исключения. Иногда TUN-режим используется вместе с HTTP/SOCKS-inbound, чтобы захватывать и локальные приложения, и системный трафик.

VLESS и transport: как устроен исходящий поток

Протокол VLESS — это современный прокси-протокол с минимальным оверхедом, но он не задаёт транспорт. Транспорт определяет, как именно пакеты VLESS упаковываются в TCP, UDP или HTTP. Например:

  • ws — WebSocket, часто используется через CDN;
  • grpc — HTTP/2 gRPC;
  • httpupgrade — HTTP upgrade;
  • quic — QUIC (UDP).

Если вы читаете конфиг, обратите внимание на URL-адрес или объект transport: именно там скрываются детали подключения к серверу. Например, для ws нужно указать host и path. Поле tls описывает параметры TLS-шифрования, включая SNI и ALPN.

Типичные ошибки при чтении пути трафика

  • Игнорирование заголовка route: трафик может уходить на direct, хотя вы думаете, что он проксируется.
  • Неправильное понимание listen_port и server_port: первый — порт локального входа, второй — порт удалённого сервера.
  • Путаница между inbound и outbound на сервере: сервер тоже использует outbounds для дальнейшей передачи, например в цепочке.
  • Забывают про DNS: даже если вы отправили домен на прокси, DNS-запрос может уйти напрямую, что раскроет ваши действия.

Практический пример: разбор профиля

Рассмотрим часть конфига для клиента:

{
  "inbounds": [
    { "type": "mixed", "listen_port": 1080 }
  ],
  "outbounds": [
    { "type": "direct", "tag": "direct" },
    { "type": "vless", "tag": "proxy", "server": "vps.example.com", ... }
  ],
  "route": {
    "final": "proxy",
    "rules": [ { "domain_suffix": [".ru"], "outbound": "direct" } ]
  }
}

Путь трафика: приложение → mixed-инбаунд (порт 1080) → route проверяет домен → если домен .ru, то direct, иначе proxy → outbound подключается к vps.example.com.

На сервере свой конфиг, где inbound = vless, а outbound = direct. Таким образом, полный путь от приложения до сайта включает два sing-box инстанса.

Читать путь трафика — значит понимать, на каком этапе происходит та или иная обработка. Начните с простой схемы: локальный inbound, route, outbound. Затем добавьте серверный inbound и outbound, и вы получите полную картину.

Проверено на практике

  • Дата проверки: 2025-05-17
  • Среда: sing-box 1.11.4 на Linux, Windows, macOS
  • Версии: 1.11.4

Мини-чеклист

  • Проверьте, что inbound слушает нужный порт и адрес
  • Убедитесь, что outbound указан с корректным сервером, портом и типом протокола
  • Проверьте порядок правил в route: первое совпадение выигрывает
  • Убедитесь, что DNS-запросы не уходят напрямую, если это важно для конфиденциальности
  • Проверьте, что TUN-диапазоны не конфликтуют с локальными маршрутами
  • Используйте уникальные теги для каждого outbound, чтобы легко идентифицировать их в route

Частые ошибки

  • Игнорирование секции route: трафик уходит в final, а не по правилам
  • Неправильный порядок правил: более общее правило перекрывает специфичное
  • Путаница между listen_port (локальный) и server_port (удалённый)
  • Забыли про DNS: при использовании TUN, DNS-запросы могут утекать
  • Отсутствие тегов у outbounds: сложно понять, какой outbound используется
  • Использование несовместимых типов transport для VLESS (например, ws без указания host и path)

Источники и документация

FAQ

Чем отличается inbound от outbound в sing-box?

Inbound — это точка входа, которая принимает соединения от локальных приложений или других прокси. Outbound — точка выхода, которая устанавливает соединения с удалёнными серверами или целевыми сайтами. Маршрутизация между ними определяется секцией route.

Как понять, какой outbound используется для конкретного трафика?

Проверьте секцию route в конфиге. Правила применяются сверху вниз; для каждого соединения ищется первое совпадение. Если совпадений нет, используется outbound, указанный в поле final.

Зачем нужна секция DNS в контексте пути трафика?

DNS может влиять на маршрутизацию: если в route есть правила по доменам, sing-box сначала выполняет DNS-запрос. Настройка DNS позволяет избежать утечек и использовать удалённые DNS-резолверы через прокси.

Может ли TUN-режим сочетаться с обычными прокси-инбаундами?

Да, вы можете использовать несколько inbounds одновременно. TUN перехватывает системный трафик, а HTTP/SOCKS принимают трафик от конкретных приложений, которые явно используют прокси. Все они могут быть описаны в одном конфиге.

Хотите перейти сразу к рабочему доступу?

Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.

Получить доступ

Дальше по теме

Связанные статьи