Skip to content

入站 ​

inbounds 是监听服务的数组。与 Xray-core 不同,这里没有嵌套的 settings 块:每个条目都是扁平对象 — 下面的 type / tag 信封加上所选类型自身的字段,合并在同一层级。先解码信封,再把剩余键解码到为 type 注册的选项结构体中,未知字段会被拒绝。

信封 ​

字段类型默认值允许值描述
typestring—tun | redirect | tproxy | direct | socks | http | mixed | shadowsocks | snell | vmess | trojan | naive | shadowtls | vless | anytls | hysteria | tuic | hysteria2 | cloudflared入站类型。决定对象其余部分解码到哪个选项结构体。未注册的值会在启动时报 "unknown inbound type"。
tagstring——该入站的唯一名称。被路由规则(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_portuint16——监听端口。
bind_interfacestring——监听器绑定的网络接口。
routing_markFwMark——在监听套接字上设置的 SO_MARK(fwmark)。仅 Linux。
reuse_addrboolfalsetrue | false在监听器上设置 SO_REUSEADDR。
netnsstring——监听所在的网络命名空间:名称或路径,或顶层 network_namespaces 条目的 tag。仅 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(需要平台上的 Go MPTCP 支持)。
udp_fragment*boolfalsetrue | false允许分片超过 MTU 的 UDP 数据包,而不是丢弃。
udp_timeoutUDPTimeoutCompat——UDP NAT 表项的空闲超时。时长字符串;实际默认值取决于嗅探到的协议。
detourstring——把已接受的连接直接转入另一个入站(按其 tag 寻址)。
proxy_protocolbool——不受支持:没有 PROXY protocol 头支持;设置它会报错。
proxy_protocol_accept_no_headerbool——与 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)

由 Argsment 出品的 Core Tutorial