Skip to content

Входящие

inbounds — массив слушающих сервисов. В отличие от Xray-core здесь нет вложенного блока settings: каждая запись — плоский объект, состоящий из описанного ниже конверта type / tag и собственных полей выбранного типа, объединённых на том же уровне. Сначала декодируется конверт, затем оставшиеся ключи декодируются в структуру параметров, зарегистрированную для type; неизвестные поля отклоняются.

Конверт

ПолеТипПо умолчаниюДопустимые значенияОписание
typestringtun | redirect | tproxy | direct | socks | http | mixed | shadowsocks | vmess | trojan | naive | shadowtls | vless | anytls | hysteria | tuic | hysteria2Тип входящего. Определяет, в какую структуру параметров декодируется остальная часть объекта. Незарегистрированное значение приводит к ошибке запуска "unknown inbound type".
tagstringУникальное имя этого входящего. На него ссылаются правила маршрутизации (inbound) и строки журнала.

Исходный код: option/inbound.go:18-22 · зафиксировано на v1.13.15 (3708fa1)

Поля конкретных типов описаны на страницах протоколов: TUN, Перенаправление и TProxy, Direct, HTTP и SOCKS (также mixed), Shadowsocks, VMess, Trojan, Naive, VLESS, AnyTLS, Hysteria2, TUIC.

Общие поля прослушивания (ListenOptions)

Каждый входящий на основе сокета встраивает ListenOptions; поля располагаются на том же плоском уровне, что и конверт.

ПолеТипПо умолчаниюДопустимые значенияОписание
listen*badoption.AddrАдрес для привязки, например "::" или "127.0.0.1".
listen_portuint16Порт для прослушивания.
bind_interfacestringСетевой интерфейс, к которому привязывается слушатель.
routing_markFwMarkSO_MARK (fwmark), устанавливаемый на слушающем сокете. Только Linux.
reuse_addrboolfalsetrue | falseУстановить SO_REUSEADDR на слушателе.
netnsstringСетевое пространство имён, в котором вести прослушивание (имя или путь). Только Linux.
disable_tcp_keep_aliveboolfalsetrue | falseОтключить TCP keep-alive для принятых соединений.
tcp_keep_alivebadoption.DurationПериод простоя до начала keep-alive-проб. Строка длительности, например "15m".
tcp_keep_alive_intervalbadoption.DurationИнтервал между keep-alive-пробами. Строка длительности.
tcp_fast_openboolfalsetrue | falseВключить TCP Fast Open на слушателе.
tcp_multi_pathboolfalsetrue | falseВключить Multipath TCP (требуется поддержка MPTCP в Go на данной платформе).
udp_fragment*boolfalsetrue | falseРазрешить фрагментацию UDP-пакетов крупнее MTU вместо их отбрасывания.
udp_timeoutUDPTimeoutCompatТайм-аут простоя записей UDP NAT. Строка длительности; фактическое значение по умолчанию зависит от протокола, определённого сниффингом.
detourstringПередавать принятые соединения напрямую в другой входящий, указанный по его тегу.
proxy_protocolboolУстарело и удалено: поддержки заголовка PROXY-протокола больше нет; установка этого поля — ошибка.
proxy_protocol_accept_no_headerboolУстарело и удалено вместе с proxy_protocol.

Исходный код: option/inbound.go:66-88 · зафиксировано на v1.13.15 (3708fa1)

Минимальный пример

json
{
  "inbounds": [
    {
      "type": "mixed",
      "tag": "mixed-in",
      "listen": "127.0.0.1",
      "listen_port": 2080
    }
  ]
}

Примечания

  • Строгий анмаршалер действует и внутри записей входящих: опечатка в имени любого поля — ошибка запуска, а не молчаливое игнорирование.
  • Устаревшие поля сниффинга (sniff, sniff_override_destination, sniff_timeout, domain_strategy, udp_disable_domain_unmapping) объявлены устаревшими в 1.11.0 и удалены в 1.13.0 — их указание приводит к ошибке со ссылкой на миграцию к действиям правил. Сниффинг теперь живёт в правилах маршрутизации.
  • shadowsocksr всё ещё зарегистрирован, но лишь как заглушка, возвращающая ошибку: поддержка ShadowsocksR удалена в sing-box 1.6.0.
  • hysteria, tuic и hysteria2 требуют сборки с тегом with_quic (официальные релизные бинарники его включают).

Сравнение с другими ядрами

  • Xray-core вкладывает поля протокола в объект settings и держит сниффинг на уровне входящего. См. Входящие Xray.
  • mihomo использует отдельные корневые ключи (port, socks-port, mixed-port, …) плюс список listeners. См. HTTP и SOCKS и Перенаправление и TProxy.

Исходный код: option/inbound.go:18-22 · v1.13.15 (3708fa1)

Core Tutorial от Argsment