Sing-box Маршрутизация

Sing-box Маршрутизация

Уровень: Продвинутый Где в UI: Маршрутизация → Sing-box: TProxy / FakeIP Требует: sing-box, компонент Netfilter

Sing-box маршрутизация — это движок маршрутизации с использованием программы Sing-box. Он сопоставляет пакеты по SNI/IP/протоколу, т.е. максимально гибко, перехватывает DNS-запросы целевых устройств, и применяет правила на уровне заданные внутри движка Sing-box. По сравнению с обычной маршрутизацией Keenetic или любой основаной на ipset это даёт точность: запрос к нужному домену пойдёт в туннель, даже если домен находится за общим CDN с десятками других сайтов, которые туда отправлять не следует.

Sing-box маршрутизация представлена тремя режимами:

  1. TProxy — перехватывает пакеты на уровне ядра, не изменяя их IP-адрес.
  2. FakeIP — c применением DNS сервера, выдающим IP-адреса из диапазона, не используемого в сети.
  3. Policy-tun — использование механизмов KeeneticOS для сохранения правил маршрутизации и управлениее через OpkgTun интерфейс. Та политика доступа в которой используется интерфейс OpkgTun c именем “awgm-policy tun” как выход будет обрабатываться движком маршрутизации.

Tip

Начиная с версии singbox 1.15.0-alpha.4 маршрутизация через Policy-tun с использованием OpkgTun является рекомендуемым способом маршрутизации. Он обспечивает наилучшую надежность, устройчивость UDP трафика и производительность, даже на слабых устройствах типа с архитектурой MIPSEL.

Note

Чтобы FakeIP-правила вообще сработали для устройства в локальной сети, должно выполняться главное: Клиент должен использовать FakeIP DNS — этого можно достичь через настройку DNS на устройстве, через DHCP для сегмента или через настройку upstream DNS для всего роутера по Вашему выбору.

Режим Fake-IP

В режиме Fake-IP sing-box поднимает TUN-интерфейс (opkgtun, создаётся через NDMS) и отвечает на DNS-запросы синтетическими адресами из пула fake-ip (по умолчанию 198.18.0.0/15), запоминая соответствие «домен ↔ адрес». Трафик к таким адресам приходит в TUN, и sing-box уже знает, к какому домену он относится — правила по доменам работают для любых клиентов сети.

Tip

Для того чтобы ненужный трафик не попадал в движок sing-box в разделе DNS необходимо указать только те наборы правил (ruleset), которые будет обрабатывать Fake-IP DNS. Это позволяет существенно снизить нагрузку на ваше устройства.

Note

Чтобы режим заработал, нужно указать DNS-адрес sing-box-стороны туннеля — 172.18.0.2 (IPv6 — fdfe:dcba:9876::2) — как единственный DNS-сервер в роутере или адрес этого интерфейса должен использовать настраевамый клиент. Как это обеспечить зависит от вашего устройства, чаще всего необходимо задать “статические” настройку для конкретной сети на устройсве.

У режима своя, изолированная конфигурация (правки правил Fake-IP не смешиваются с конфигом TProxy) и свой набор подстраниц: Обзор, Inbounds, Outbounds, Rule sets, DNS, Маршруты, Устройства, Соединения, Журнал.

Вкладка Sing-box: FakeIP (режим не включён)

Ограничения, о которых предупреждает модалка включения:

  • Устройства с собственным DoH/DoT резолвят домены мимо fake-ip — их трафик в туннель не попадёт.
  • Так же устройства которые не могут из-за настроек МСЭ “достучаться” до интерфейса OpkgTun и получить от него ответ и направить в него трафик не смогут использовать Fake-IP.

С концепцией настройки режима можно ознакомиться в разделе Терминология

Важно

Вкладки Маршрутизация → Sing-box: TProxy и Sing-box: FakeIP видны только при установленном sing-box и на уровне использования Продвинутый (см. Настройки). У страницы TProxy два режима отображения — переключатель Простой / Эксперт в правом верхнем углу. Это один и тот же конфиг, разница только в подаче: простой режим показывает «что и куда отправлять», экспертный раскрывает все объекты sing-box как есть.

Простой режим (режим TProxy)

Сверху — схема потока трафика: источник (устройства, привязанные к политике) → движок sing-box → назначения (куда уходит трафик по умолчанию и какие правила ведут в туннели). Клик по карточке источника открывает выбор: обрабатывать устройства в политике (только привязанные к политике роутера) или весь роутер (весь LAN-трафик без привязки к политике); здесь же выбирается или создаётся сама политика. Клик по карточке движка — его параметры.

Простой режим Sing-box Router

Ниже — список «Что и куда отправлять»: правила применяются сверху вниз, срабатывает первое подходящее. Первые строки — системные (анализ протокола, перехват DNS, локальная сеть напрямую), они заблокированы от редактирования. Дальше — ваши правила: иконка сервиса, условия (домены, наборы) и действие справа — туннель, Напрямую или Заблокировать. Правила перетаскиваются за «ручку» слева, редактируются карандашом.

Note

Не нужно ставить свои правила выше системных и созданных автоматически.

+ Правило открывает пошаговый редактор: «Что направить» — готовый шаблон сервиса (RUTube, VKVideo, и другие) или ручное описание (домены, IP, CIDR, порты, geosite:/geoip:); «Куда» — через туннель / напрямую / заблокировать; «Превью» — что именно добавится в конфиг.

Новое правило

Если конфигурация пустая, вместо списка правил показывается мастер первичной настройки: выбрать сервисы из пресетов → выбрать туннель → отметить устройства → Применить. Мастер собирает минимальную рабочую связку (политика, правила, DNS) за один проход — для первого запуска это самый короткий путь.

Движок sing-box

Панель Движок sing-box открывается кликом по карточке движка (или кнопкой параметров в шапке): состояние (включён/выключен), версия sing-box и зависимости — модуль netfilter и доступность TPROXY target. Здесь же движок включается, выключается и перезапускается. Если зависимость не готова, панель покажет, чего именно не хватает.

Панель движка

В экспертном режиме панель раскрывает дополнительные секции:

  • Анализ трафика — тумблер Включить sniff (анализ HTTP/TLS/QUIC по содержимому) и UDP таймаут сессии (с 2.15.0): как долго sing-box держит UDP-сессии активными, от «По умолчанию (5 мин)» до 3 часов. Увеличьте, если игры или другие UDP-приложения обрываются каждые несколько минут. Изменение применяется к работающему движку без рестарта.
  • Исключения портов — трафик, который должен идти мимо sing-box прямо в WAN: пресеты-чипы (l2tp, ntp, netbios-smb), поле Доп. порты (chips-ввод, например 443 TCP; с 2.16.0 поддерживаются и диапазоны — 5000-5500 UDP) и поле Доп. подсети — IP или CIDR, чей трафик целиком обходит sing-box (нужно, например, для корпоративных VPN вроде Cisco AnyConnect).
  • Селективный перехват (только TProxy) — реализуется через настройку исключения IP/CIDR где вы можете задавать известные Вам IP/CIDR или GeoIP из файлов наборов, обращения к которым не должны доходить до движка singbox.
  • QoS-маршрутизация (DSCP) (только TProxy) — до 8 классов «DSCP-метка → туннель»: трафик, помеченный на клиентском устройстве меткой DSCP (например, политикой QoS в Windows), направляется в выбранный outbound в обход остальных правил. Тут же есть подсказка как это настроить на Windows.

Sing-box Router работает через TPROXY/netfilter и требует системного компонента Модули ядра подсистемы Netfilter. Если он не установлен, на странице появляется баннер с указанием установить компонент через веб-интерфейс роутера (Управление → Общие настройки → Изменить набор компонентов).

Установка компонента Netfilter в веб-интерфейсе роутера

Экспертный режим

Все объекты конфигурации на одной странице: сводные счётчики сверху (движок, правила, rule-sets, outbounds, DNS, rewrite, прокси) и секции ниже.

Экспертный режим

Правила и Rule Sets

Правило — одна строчка сопоставления условий (домены, IP-CIDR, source-IP, порты, ссылки на rule_set) плюс действие — направить в outbound или заблокировать (reject).

Rule set — переиспользуемый набор паттернов: remote (sing-box сам скачивает srs-файл по URL и периодически обновляет), local (файл на роутере), inline (правила прямо в конфиге), кроме того, модалка предлагает быстрые типы Geosite и GeoIP — готовый набор по имени, без ручного URL. Несколько правил могут ссылаться на один набор — удобно для крупных списков вроде sing-geosite.

Tip

Порядок правил важен: first-match-wins (первое совпадение побеждает, далее проверка не идет), глобальное правило Final outbound определяет, куда уходит всё, что не попало ни под одно правило (по умолчанию direct — мимо VPN).

Массовые операции

На страницах правил обоих режимов (TProxy и FakeIP) есть режим выделения: чекбоксы на карточках правил и кнопка Выбрать все, внизу — панель «N выбрано → выбрать выход → Применить», которая меняет outbound сразу у всех отмеченных правил одним запросом. В TProxy правки попадают в общий черновик и применяются кнопкой Применить, в FakeIP — сразу, одной перезагрузкой движка. Так же массово меняется download detour у выбранных remote-наборов правил. В выборку попадают только правила с реальным выходом-туннелем: системные (sniff, hijack-dns) и правила «Напрямую»/«Заблокировать» из массовой операции исключены. Валидация строгая — при любом некорректном элементе (неизвестный тег выхода, не-remote набор и т.п.) отклоняется весь пакет изменений целиком.

DNS

Секция DNS-серверы настраивает встроенный резолвер sing-box: апстримы (UDP/TLS/HTTPS), сервер по умолчанию и DNS-правила, направляющие отдельные домены или rule-set’ы на конкретный сервер (например, целевые сервисы резолвить через туннель). Резолвер обслуживает только устройства, привязанные к выбранной политике, остальные клиенты роутера продолжают пользоваться обычным DNS Keenetic. Перехват запросов (hijack-dns) механизм, который позволяет увидеть запросы клиентов и исполнять правила DNS.

DNS Rewrite — переписывание DNS-ответов: домену или маске (glob/regex) принудительно сопоставляется нужный IP. Пригодится, когда сервис надо посадить на конкретный адрес в обход его собственного DNS.

Действия DNS-правил

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

  • Маршрут — классика: совпало → запрос уходит на выбранный DNS-сервер, ответ возвращается клиенту. Правило терминирующее.
  • Блокировка — вернуть NXDOMAIN / REFUSED или не отвечать вовсе (Drop). Терминирует.
  • Evaluate — запрос уходит на выбранный сервер, но ответ клиенту не возвращается: он запоминается (опционально под именем из поля Тег ответа), и обход правил продолжается дальше. Это заготовка ответа для правил ниже.
  • Respond — вернуть клиенту ранее запомненный evaluate-ответ. Терминирует.

Секция По DNS-ответу превращает правило из «матчится по запросу» в «матчится по запомненному ответу». Выпадающий список Ответ evaluate предлагает: выкл (обычное правило), «последний анонимный evaluate» (доступно, только если выше есть evaluate без тега) и теги evaluate-правил, стоящих выше редактируемого. Когда выбор сделан, открываются условия по ответу: Rcode, IP ответа (CIDR) и RR-записи (Answer / NS / Extra), а также флаг Race — несколько таких правил соревнуются параллельно, побеждает ответивший первым. У действий «Маршрут» и «Evaluate» есть отдельный флаг Спекулятивный запрос.

Типовая цепочка собирается так:

  1. Правило с действием Evaluate: catch-all или с матчерами, сервер — тот, кому задаём вопрос, тег — например rd.
  2. Ниже — правило с Ответ evaluate = rd, условиями по ответу (Rcode, IP ответа, RR) и финальным действием: Respond (вернуть тот ответ), Маршрут (перерезолвить другим сервером) или Блокировка.

Так, например, делается защита от подменённых ответов: если провайдерский резолвер вернул адрес из списка заведомо ложных, запрос повторяется через туннель, и клиент никогда не получает 127.0.0.1 или другую заглушку.

Порядок правил важен как и в маршрутизации: цепочка работает только сверху вниз, а catch-all-правило гасит всё, что ниже него.

Трейс Проверка DNS цепочки учитывает: evaluate больше не считается финальным совпадением, а правила, матчащиеся по ответу, помечаются как статически непроверяемые — вживую они могут перехватить запрос раньше, чем найденное трейсом правило.

Пресеты DNS-цепочек

Собирать цепочку руками нужно только под нестандартный сценарий. Два типовых случая собирает карточка Пресет DNS-цепочки в экспертном режиме одним переключателем:

  • Отказоустойчивый — два резолвера (Прямой DNS и DNS через туннель) с автоматическим переключением.
  • Анти-подмена — то же плюс список Подозрительных IP (CIDR): если прямой резолвер вернул адрес из списка, ответ отбрасывается и запрос повторяется через туннель. По умолчанию в списке типовые заглушки вроде 0.0.0.0/32, 127.0.0.0/8, 10.10.34.34/32.
Пресеты недоступны в режиме Fake-IP: fake-ip-серверы не резолвят, и evaluate на них отклоняется. Если правила цепочки видны в списке при включённом Fake-IP — они относятся к режиму TProxy и сейчас неактивны.

Outbounds и composite

Composite outbound — виртуальный outbound, объединяющий несколько обычных под одним тегом: selector (ручной выбор активного члена) или urltest (автовыбор быстрейшего по периодическим замерам задержки). Правило ссылается на группу, а не на конкретный туннель. Composite, пришедшие из подписок, отмечены бейджем и доступны только на чтение — ими управляет страница подписок.

Третий тип outbound’а — Интерфейс (direct с привязкой): прямое соединение через выбранный сетевой интерфейс роутера. С 2.15.0 в списке интерфейсов предлагаются и нативные egress-интерфейсы KeenOS — в том числе системный SOCKS5-прокси, настроенный в веб-интерфейсе роутера (интерфейсы ProxyN, созданные не самим awg-manager). Так правила sb-router могут направлять трафик через IPSec/IKEv2, другой VPN или системный прокси Keenetic. Интерфейсы, уже занятые другими outbound’ами, в списке не предлагаются.

Прокси

Секция Прокси (в простом режиме — пункт «Прокси» в навигации) поднимает SOCKS5/HTTP-прокси для устройств локальной сети. LAN-устройство или отдельное приложение указывает роутер как прокси и выходит через выбранный outbound — без TPROXY-перехвата и привязки к политике.

Прокси для устройств

Редактор конфигурации

В экспертном режиме есть кнопка Редактор — обзор всех слотов config.d итоговой конфигурации sing-box с бейджами владельца: «генерируется автоматически» (системные слоты, доступны только для чтения — с подсветкой синтаксиса и копированием) и «пользовательский» — слот 90-user.json, который правится вручную и не перезаписывается генераторами awg-manager.

Для пользовательского слота открывается полноценный редактор: номера строк, маркер строки с ошибкой JSON, Tab-отступы. Цикл работы: Сохранить черновик → Проверить → Применить (или Отменить черновик); отдельный выключатель отключает слот целиком, не удаляя содержимое. Проверка - это валидация тегов плюс sing-box check черновика «как если бы применили», поэтому сломанный черновик не должен попасть в работающий движок.

Note

Правила слияния: массивы user-слота (outbounds, inbounds, правила) дополняют итоговый конфиг последними; скаляры dns/route (например, final, strategy) из него не переопределяются — действует принцип «первый файл выигрывает». Если применённый user-конфиг начинает ссылаться на тег, которого больше нет (например, outbound удалили в другом разделе), перезагрузка пропускается, движок продолжает работать на старом конфиге, а причина показывается в статусе роутера с подсказкой поправить слот в редакторе.

Соединения

Клик по счётчику соединений в шапке открывает живой монитор: сводные диаграммы по outbound’ам, хостам и клиентам (клик по строке — быстрый фильтр), поиск и таблица активных соединений — источник, назначение, outbound, сработавшее правило, трафик. Данные стримятся из Clash-API sing-box (индикатор Live). Любое соединение можно принудительно закрыть. Это главный инструмент проверки «что сейчас идёт через какой туннель и почему».

Монитор соединений

Связь с другими разделами

Sing-box Router не вводит новый тип outbound’а — он работает со всеми объектами, которые уже есть в системе: AWG-туннелями awg-manager, системными NativeWG-туннелями Keenetic, sing-box-туннелями и composite outbound’ами (как собственными, так и пришедшими из подписок). Тот же объект может быть одновременно целью для обычной Маршрутизации (через Proxy-NDMS-интерфейс) и outbound’ом для правил Router’а — разница в том, на каком уровне принимается решение: ipset/policy у NDMS против netfilter/TPROXY и матчинга по доменам/rule set’ам у sing-box.