传输配置
传输配置用于配置当前 Xray 如何与对端通信。这里的对端既可能是另一端 Xray 节点,也可能是任意普通公网目标。
它配置的是代理协议之外的数据传输部分,如承载方式、安全机制及附加行为。
这三类配置分属不同层次,在一定范围内可以相互组合:
- 传输方式用于指定数据流的承载形式,如 RAW、WebSocket、gRPC 或 Hysteria 等。
- 传输安全用于指定传输过程中使用的安全机制,如 TLS 或 REALITY。
- 附加配置用于补充控制底层网络行为,以及对流量进行最终伪装。
其中一部分传输配置会直接影响与远端建立通信的方式。对于这类需要协商的配置,通信两端通常要使用兼容的设置。比如一端使用 WebSocket,另一端也必须使用 WebSocket,否则无法建立通信。
对于 Freedom 这类直接出站,对端通常是任意普通公网目标(如亚马逊官网、微信的服务器等)。此时传输配置不需要(也基本不能)与另一端协商,而是用于控制本地发出连接时的行为,此时只有 sockopt 可用。
StreamSettingsObject
StreamSettingsObject 对应 InboundObject 或 OutboundObject 中的 streamSettings 项。每一个入站或出站都可以分别配置不同的传输配置。
{
// outbound 示例,同样可用于 inbound
"outbounds": [
{
// ...
"streamSettings": {
// 传输方式
"network": "raw",
"rawSettings": {},
"xhttpSettings": {},
"kcpSettings": {},
"grpcSettings": {},
"wsSettings": {},
"httpupgradeSettings": {},
"hysteriaSettings": {},
// 传输安全
"security": "none",
"realitySettings": {},
"tlsSettings": {},
// 附加配置
"finalmask": {},
"sockopt": {}
}
}
]
}2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
传输方式
network: "raw" | "xhttp" | "mkcp" | "grpc" | "websocket" | "httpupgrade" | "hysteria"
数据流所使用的传输方式类型,默认值为 raw。
rawSettings: RawObject
数据流的 RAW 配置,仅当 network 为 raw 时有效。
xhttpSettings: XHTTPObject
数据流的 XHTTP 配置,仅当 network 为 xhttp 时有效。
kcpSettings: KcpObject
数据流的 mKCP 配置,仅当 network 为 mkcp 时有效。
grpcSettings: GRPCObject
数据流的 gRPC 配置,仅当 network 为 grpc 时有效。
wsSettings: WebSocketObject
数据流的 WebSocket 配置,仅当 network 为 websocket 时有效。
httpupgradeSettings: HTTPUpgradeObject
数据流的 HTTPUpgrade 配置,仅当 network 为 httpupgrade 时有效。
hysteriaSettings: HysteriaObject
数据流的 Hysteria 配置,仅当 network 为 hysteria 时有效。
传输安全
security: "none" | "reality" | "tls"
是否启用传输安全,支持的选项有:
"none"表示不启用(默认值)"reality"表示使用 REALITY。"tls"表示使用 TLS。
realitySettings: RealityObject
REALITY 配置。REALITY 是对 TLS 的一种修改,通过借用目标站点的 TLS 外观与握手特征来完成伪装。
仅当 security 为 reality 时有效。 仅支持与 RAW、XHTTP、gRPC 三种传输方式组合使用。
TIP
REALITY 是目前最安全的传输安全方案之一, 且外部看来流量类型和正常上网具有一致性。
启用 REALITY 并且配置合适的 XTLS Vision 流控模式, 可以达到数倍甚至十几倍的性能提升。
tlsSettings: TLSObject
TLS 配置。TLS 由 Golang 提供,通常情况下 TLS 协商的结果为使用 TLS 1.3,不支持 DTLS。
仅当 security 为 tls 时有效。 支持与 RAW、XHTTP、mKCP、gRPC、WebSocket、HTTPUpgrade、Hysteria 传输方式组合使用。
附加配置
finalmask: FinalMaskObject
FinalMask 配置,用于对流量进行最终的伪装。
sockopt: SockoptObject
底层网络行为相关配置。
传输组合速查表
出入站都可以通过 streamSettings 配置传输方式与传输安全。实际配置时,代理协议、传输方式和传输安全需要彼此兼容。
出入站协议与传输方式
此表对应 protocol + streamSettings.network。
raw | xhttp | grpc | websocket | httpupgrade | mkcp | hysteria | |
|---|---|---|---|---|---|---|---|
http | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
socks [1] | 受限 | 受限 | 受限 | 受限 | 受限 | 受限 | 受限 |
shadowsocks [1] | 受限 | 受限 | 受限 | 受限 | 受限 | 受限 | 受限 |
vmess | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
vless | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
trojan | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
hysteria | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 支持 |
wireguard | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
[1] Socks 和 Shadowsocks 未启用 XUDP 时,UDP 流量会改走协议原生的 UDP 路径,从而绕过已配置的传输方式;TCP 流量不受此限制。
传输方式与传输安全
此表对应 streamSettings.network + streamSettings.security。
none | tls | reality | |
|---|---|---|---|
raw | 支持 | 支持 | 支持 |
xhttp | 支持 | 支持 | 支持 |
grpc | 支持 | 支持 | 支持 |
websocket | 支持 | 支持 | 不支持 |
httpupgrade | 支持 | 支持 | 不支持 |
mkcp | 支持 | 支持 | 不支持 |
hysteria | 不支持 | 必须 | 不支持 |
出入站协议与传输安全
此表对应 protocol + streamSettings.security。
none | tls | reality | 协议层安全机制 | |
|---|---|---|---|---|
http | 支持 | 支持 | 支持 | 无 |
socks | 支持 | 受限 [1] | 受限 [1] | 无 |
shadowsocks | 支持 | 受限 [1] | 受限 [1] | 载荷加密与完整性 [2] |
vmess | 支持 | 支持 | 支持 | 握手认证与载荷加密 [2] |
vless | 受限 [3] | 支持 | 支持 | 可选的 Encryption [4] |
trojan | 受限 [3] | 支持 | 支持 | 仅有身份认证 |
hysteria | 不支持 | 必须 | 不支持 | 无(依赖 TLS) |
wireguard | 不适用 | 不适用 | 不适用 | 加密隧道 [2] |
[1] Socks 和 Shadowsocks 未启用 XUDP 时,UDP 流量会改走协议原生的 UDP 路径,从而绕过已配置的 TLS 或 REALITY;TCP 流量不受此限制。
[2] Shadowsocks 和 VMess 能保护载荷,但缺少 TLS 1.3 式的前向保密,流量外观也可被分类。WireGuard 的密码学足够强,但固定的 UDP 特征容易被识别和封锁。三者都不具备 TLS/REALITY 提供的正常 HTTPS 外观,因此不适合直接用于过墙。
[3] 当 streamSettings.security 为 none 时,VLESS(未启用 Encryption)和 Trojan 仅允许连接私网地址。
[4] VLESS Encryption 是可选的,默认关闭(encryption: "none")。启用后,即使 streamSettings.security 为 none 也可以连接公网地址;它能保护 VLESS 载荷,但不能提供 TLS/REALITY 的正常 HTTPS 外观,因此不适合直接用于过墙。