Входящие
inbounds — массив слушающих сервисов. В отличие от Xray-core здесь нет вложенного блока settings: каждая запись — плоский объект, состоящий из описанного ниже конверта type / tag и собственных полей выбранного типа, объединённых на том же уровне. Сначала декодируется конверт, затем оставшиеся ключи декодируются в структуру параметров, зарегистрированную для type; неизвестные поля отклоняются.
Конверт
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
type | string | — | tun | redirect | tproxy | direct | socks | http | mixed | shadowsocks | vmess | trojan | naive | shadowtls | vless | anytls | hysteria | tuic | hysteria2 | Тип входящего. Определяет, в какую структуру параметров декодируется остальная часть объекта. Незарегистрированное значение приводит к ошибке запуска "unknown inbound type". |
tag | string | — | — | Уникальное имя этого входящего. На него ссылаются правила маршрутизации (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_port | uint16 | — | — | Порт для прослушивания. |
bind_interface | string | — | — | Сетевой интерфейс, к которому привязывается слушатель. |
routing_mark | FwMark | — | — | SO_MARK (fwmark), устанавливаемый на слушающем сокете. Только Linux. |
reuse_addr | bool | false | true | false | Установить SO_REUSEADDR на слушателе. |
netns | string | — | — | Сетевое пространство имён, в котором вести прослушивание (имя или путь). Только Linux. |
disable_tcp_keep_alive | bool | false | true | false | Отключить TCP keep-alive для принятых соединений. |
tcp_keep_alive | badoption.Duration | — | — | Период простоя до начала keep-alive-проб. Строка длительности, например "15m". |
tcp_keep_alive_interval | badoption.Duration | — | — | Интервал между keep-alive-пробами. Строка длительности. |
tcp_fast_open | bool | false | true | false | Включить TCP Fast Open на слушателе. |
tcp_multi_path | bool | false | true | false | Включить Multipath TCP (требуется поддержка MPTCP в Go на данной платформе). |
udp_fragment | *bool | false | true | false | Разрешить фрагментацию UDP-пакетов крупнее MTU вместо их отбрасывания. |
udp_timeout | UDPTimeoutCompat | — | — | Тайм-аут простоя записей UDP NAT. Строка длительности; фактическое значение по умолчанию зависит от протокола, определённого сниффингом. |
detour | string | — | — | Передавать принятые соединения напрямую в другой входящий, указанный по его тегу. |
proxy_protocol | bool | — | — | Устарело и удалено: поддержки заголовка PROXY-протокола больше нет; установка этого поля — ошибка. |
proxy_protocol_accept_no_header | bool | — | — | Устарело и удалено вместе с proxy_protocol. |
Исходный код: option/inbound.go:66-88 · зафиксировано на v1.13.15 (3708fa1)
Минимальный пример
{
"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)
