入站
inbounds 是监听服务的数组。与 Xray-core 不同,这里没有嵌套的 settings 块:每个条目都是扁平对象 — 下面的 type / tag 信封加上所选类型自身的字段,合并在同一层级。先解码信封,再把剩余键解码到为 type 注册的选项结构体中,未知字段会被拒绝。
信封
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
type | string | — | tun | redirect | tproxy | direct | socks | http | mixed | shadowsocks | snell | vmess | trojan | naive | shadowtls | vless | anytls | hysteria | tuic | hysteria2 | cloudflared | 入站类型。决定对象其余部分解码到哪个选项结构体。未注册的值会在启动时报 "unknown inbound type"。 |
tag | string | — | — | 该入站的唯一名称。被路由规则(inbound)与日志行引用。 |
源码: option/inbound.go:21-25 · 锚定版本 v1.14.2 (af6e64c)
各类型字段见协议页面:TUN、Redirect 与 TProxy、Direct、HTTP 与 SOCKS(含 mixed)、Shadowsocks、VMess、Trojan、Naive、VLESS、AnyTLS、Hysteria2、TUIC。snell 与 cloudflared 见 Snell 与 cloudflared。
共享监听字段(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 | — | — | 监听所在的网络命名空间:名称或路径,或顶层 network_namespaces 条目的 tag。仅 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(需要平台上的 Go MPTCP 支持)。 |
udp_fragment | *bool | false | true | false | 允许分片超过 MTU 的 UDP 数据包,而不是丢弃。 |
udp_timeout | UDPTimeoutCompat | — | — | UDP NAT 表项的空闲超时。时长字符串;实际默认值取决于嗅探到的协议。 |
detour | string | — | — | 把已接受的连接直接转入另一个入站(按其 tag 寻址)。 |
proxy_protocol | bool | — | — | 不受支持:没有 PROXY protocol 头支持;设置它会报错。 |
proxy_protocol_accept_no_header | bool | — | — | 与 proxy_protocol 一样不受支持。 |
源码: option/inbound.go:79-103 · 锚定版本 v1.14.2 (af6e64c)
最简示例
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会在启动时被拒绝,报错并指向 rule actions 迁移文档。嗅探位于路由规则中。 shadowsocksr只作为一个报错的占位被注册:sing-box 没有 ShadowsocksR 实现。hysteria、tuic、hysteria2需要带with_quic标签的构建,cloudflared需要with_cloudflared(官方发布的二进制均包含)。snell是 Snell 的服务端,与snell出站相对应。cloudflared运行一个内嵌的 Cloudflare Tunnel 客户端,以隧道token认证,并把隧道传入的 TCP、UDP 与 ICMP 流量交给 sing-box 的路由引擎。它不在本地套接字上监听,因此不适用ListenOptions。
跨内核说明
- Xray-core 把协议字段嵌套在
settings对象中,嗅探按入站配置。见 Xray 入站。 - mihomo 使用独立的根键(
port、socks-port、mixed-port…)加上listeners列表。见 HTTP 与 SOCKS 和 Redirect 与 TProxy。
源码: option/inbound.go:21-25 · v1.14.2 (af6e64c)
