出站
outbounds 是上游目标的数组。每个条目对应一个 OutboundDetourConfig:协议名称、协议专属的 settings 对象,以及可选的传输层(streamSettings)、链式代理(proxySettings)与多路复用(mux)块。数组的第一个条目是默认出站 — 未命中任何路由规则的流量都会走它。
选项
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
protocol | string | — | freedom | direct | blackhole | block | loopback | http | socks | shadowsocks | vless | vmess | trojan | hysteria | dns | wireguard | 用于拨号的出站处理器。查表前先转为小写。`direct` 是 `freedom` 的别名,`block` 是 `blackhole` 的别名。 |
sendThrough | *string | 0.0.0.0 | — | 拨号使用的本地源地址。接受 IP、CIDR(每个连接从中随机取一个地址),或特殊域名 `origin` / `srcip`。 |
tag | string | — | — | 该出站的唯一名称。被路由规则、均衡器、proxySettings 链式代理与统计计数器引用。 |
settings | *json.RawMessage | — | — | 协议专属设置对象,由 protocol 选中的处理器解码。各协议的字段见对应协议页面。 |
streamSettings | *StreamConfig | — | — | 出站连接的传输层与安全层(raw / ws / grpc / xhttp…,tls / reality)。见传输层与 TLS 页面。 |
proxySettings | *ProxyConfig | — | — | 将该出站通过另一个出站(按 tag 寻址)转发。字段见下表。 |
mux | *MuxConfig | — | — | 在底层连接上进行 Mux 多路复用。字段见下表。 |
targetStrategy | string | AsIs | AsIs | UseIP | UseIPv4 | UseIPv6 | UseIPv4v6 | UseIPv6v4 | ForceIP | ForceIPv4 | ForceIPv6 | ForceIPv4v6 | ForceIPv6v4 | 拨号前如何解析目标域名(匹配不区分大小写)。Use* 优先给定的地址族并允许回退,Force* 拒绝回退。未知值会导致启动错误。 |
源码: infra/conf/xray.go:213-222 · 锚定版本 v26.7.28 (5ca6f4b)
链式代理(proxySettings)
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
tag | string | — | — | 作为中转的出站 tag。 |
transportLayer | bool | false | true | false | 在传输层而非应用层进行链式转发 — 等价于 sockopt.dialerProxy,因此二者不能同时配置。 |
源码: infra/conf/transport_internet.go:312-317 · 锚定版本 v26.7.28 (5ca6f4b)
多路复用(mux)
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
enabled | bool | false | true | false | 为经过该出站的 TCP 流量开启 Mux。 |
concurrency | int16 | — | — | 单条物理连接可承载的最大并发流数。负值完全禁用 Mux,包括 XUDP 路径。 |
xudpConcurrency | int16 | — | — | XUDP(UDP over Mux)连接的独立并发数。 |
xudpProxyUDP443 | string | reject | reject | allow | skip | 如何处理 XUDP 内被代理的 UDP/443(QUIC)流量:拒绝、放行,或对其跳过 Mux。 |
源码: infra/conf/xray.go:102-107 · 锚定版本 v26.7.28 (5ca6f4b)
最简示例
json
{
"outbounds": [
{
"tag": "proxy",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "example.com",
"port": 443,
"users": [{ "id": "uuid", "encryption": "none" }]
}
]
},
"streamSettings": { "security": "tls" }
},
{ "tag": "direct", "protocol": "freedom", "settings": {} },
{ "tag": "block", "protocol": "blackhole", "settings": {} }
]
}说明
- 顺序很重要:路由把未命中的流量交给第一个出站。把你想作为默认的代理或
freedom条目放在下标 0。 proxySettings.tag与streamSettings.sockopt.dialerProxy冲突 — 同时配置会在启动时被拒绝。transportLayer: true时,链式代理在内部会被改写成正是那个 sockopt。sendThrough配 CIDR 时,每个连接都会在该网段内随机取一个源地址 — 配合可路由的 IPv6 前缀很有用。dns协议是拦截 DNS 查询的特殊出站;见 DNS。
跨内核说明
- sing-box 用扁平对象表达同一概念(
type+tag+ 同层字段),且没有"第一个即默认"的隐式规则 — 默认出站由route.final决定。见 sing-box 出站。 - mihomo 把它们称作
proxies,并且总是经由 代理组或规则分发,而不是按顺序取默认值。
源码: infra/conf/xray.go:213-222 · v26.7.28 (5ca6f4b)
