Skip to content

[Proxy] 代理服务器 ​

本节用于定义代理服务器及其传输协议参数,作为网络流量的转发目的地。配置支持标准代理协议、虚拟网络隧道以及本地基本策略。

语法声明块 ​

代理服务器通过独立的 INI 配置行进行声明:

ini
name = protocol, host, port, [args...], [options...]

各组成部分解析如下:

  • name:代理服务器的唯一命名标识,供 [Rule] 分流策略和 [Proxy Group] 调度组引用。
  • protocol:代理传输协议类型(大小写不敏感),如 socks、http、shadowsocks、vmess、trojan、hysteria、tuic、wireguard、tailscale、anytls、shadowtls、ssh。
  • host:目标代理服务器的主机名、域名或 IP 地址。
  • port:目标代理服务器的服务端口(范围 1–65535)。
  • [args...]:协议特有的位置参数。位置参数必须置于键值选项之前,按协议规定的顺序排列(例如 Shadowsocks 的加密方式和密码、Trojan 的密码、VMess 的用户 UUID)。
  • [options...]:键值选项(格式为 key=value),用于配置传输层封装(TLS、WebSocket)、网络接口绑定、延迟测试覆盖及连接复用参数。

策略与隧道语法 ​

对于无需服务器地址的特定类型,语法声明调整如下:

  • 基本策略:直接声明行为名称,例如 DirectNode = direct 或 RejectNode = reject。
  • 虚拟网络隧道:如 WireGuard 与 Tailscale,其端点或控制面由选项内部定义,语法为 name = protocol, [options...]。

通用选项 ​

所有代理服务器均支持以下通用控制选项:

  • override-test-url(HTTP/HTTPS URL,默认全局配置值) 覆盖全局 proxy-test-url,指定该服务器专用的健康检查与延迟探测 URL。
  • ip-version(枚举值,默认值 dual) 服务器建连时的出口 IP 地址族偏好,可选 dual、ipv4-only、ipv6-only、prefer-ipv4、prefer-ipv6。
  • interface(网络网卡名称,默认系统默认出口) 强制将该服务器的网络连接绑定到指定的物理网络接口(如 en0、pdp_ip0)。
  • tfo(布尔值,默认值 false) 启用 Apple 平台物理 TCP 连接的 TCP Fast Open。其他平台显式启用时返回不支持错误。系统黑洞检测策略由 [General] 的 tfo-behaviour 控制。首写参与地址竞速,完成握手后才记入成功地址缓存;服务端先发数据时使用普通 TCP,避免双方等待首包。早期数据可能重放或随竞速发往多个候选地址,仅用于允许首包重放的上层协议。
  • tcp-ecn(枚举值,默认值 auto) Apple 平台物理 TCP 连接的 ECN 协商策略:auto 保留系统默认,on 显式启用,off 显式禁用。在握手前设置,不影响 UDP 或 QUIC ECN。
  • underlying-proxy(代理名称,未设置) 指定底层前置代理(已定义的代理服务器名称),构建多级中继代理通道。 tfo、tcp-ecn 只作用于实际创建物理 TCP socket 的节点;使用前置代理的节点允许配置这些参数,但不会修改前置代理的 socket 参数。
  • dns-resolver-type(枚举值,默认值 default) 节点服务器域名的解析模式,可选 default/0、ip4p/1;ip4p 采用 IPv4-in-IPv6 映射前缀。
  • ip4p-prefix(IPv6 地址前缀,默认值 2001::) IP4P 地址前缀,要求末尾三个 16 位字段全为零,仅在 dns-resolver-type=ip4p 时生效。

传输层与安全特性(TLS 与 WebSocket) ​

TLS 选项适用于 http、vmess、trojan、hysteria、tuic、anytls 与 shadowtls 协议;WebSocket 选项适用于 vmess 与 trojan 协议。Shadow TLS 始终验证证书,不接受 skip-cert-verify=true 或 enable-early-data=true。

  • tls(布尔值,默认值 false) TLS 加密开关;AnyTLS 强制开启,Hysteria 默认启用 QUIC TLS。
  • sni(域名字符串,默认节点 host 地址) TLS SNI 服务器名称指示,用于证书验证与虚拟主机路由。
  • alpns(字符串列表,默认空列表) TLS ALPN 协商协议列表(逗号分隔),多个值整体使用双引号包裹。
  • server-cert-fingerprint-sha256(64 位十六进制字符串,未设置) 服务端证书 SHA-256 证书指纹固定校验(可含冒号,必须精确解析为 32 字节)。
  • skip-cert-verify(布尔值,默认值 false) 允许跳过服务端证书合法性校验。
  • enable-early-data(布尔值,默认值 false) 启用 TLS 1.3 早期数据(0-RTT Early Data)。
  • ws(布尔值,默认值 false) 启用 WebSocket 传输层封装。
  • ws-path(路径字符串,默认值 /) WebSocket 连接握手路径。
  • headers(键值映射,默认空映射) HTTP 或 WebSocket 握手时附加的自定义请求头,格式为 Key:Value|Key2:Value2。

协议详解 ​

支持协议一览 ​

声明类型协议支持备注
socksSOCKS5
httpHTTP / HTTPS
shadowsocksShadowsocks
vmessVMess
trojanTrojan
hysteriaHysteria
tuicTUIC v5TCP / UDP
wireguardWireGuard
tailscaleTailscale
anytlsAnyTLS
shadowtlsShadow TLS也接受 shadow-tls、stls
sshSSH 隧道
direct / reject基本策略
sing-muxSing Mux 多路复用不能独立使用,需配置于其他代理协议中

SOCKS 与 HTTP ​

SOCKS 与 HTTP 代理协议支持通过位置参数或选项配置认证信息。

属性配置 ​

  • username(字符串,默认值为空) 代理鉴权用户名。
  • password(字符串,默认值为空) 代理鉴权密码。
  • headers(键值映射,默认值为空) 仅适用于 HTTP 代理,附加自定义 HTTP 请求头。
ini
[Proxy]
SocksNode = socks, proxy.example.com, 1080
HttpNode = http, proxy.example.com, 8080, username=user, password=<SECRET>
HttpsNode = http, proxy.example.com, 443, tls=true, sni=proxy.example.com, username=user, password=<SECRET>

Shadowsocks ​

Shadowsocks 协议提供对称加密传输,支持混淆插件与 Sing Mux 多路复用。

属性配置 ​

  • encrypt-method(枚举值,必填) 对称加密算法名称,大小写不敏感。可选值包括 aes-128-gcm、aes-192-gcm、aes-256-gcm、chacha20-ietf-poly1305。可作为端口后的首个位置参数。
  • password(字符串,必填) 认证密码。可作为加密算法后的第二个位置参数。
  • obfs(枚举值,未设置) 流量混淆插件类型,可选 http、tls。
  • obfs-host(域名字符串,未设置) 混淆请求中使用的主机名。
  • obfs-path(路径字符串,未设置) HTTP 混淆请求的 URL 路径。
ini
[Proxy]
SS-Positional = shadowsocks, ss.example.com, 8388, aes-256-gcm, <SECRET>
SS-Options = shadowsocks, ss.example.com, 8388, encrypt-method=chacha20-ietf-poly1305, password=<SECRET>, obfs=tls, obfs-host=cdn.example.com

VMess ​

VMess 协议支持 TLS/WebSocket 封装及 AEAD 校验。

属性配置 ​

  • uuid(UUID 字符串,必填) 用户身份标识凭据。支持作为端口后的首个位置参数,显式键值字段具有更高优先级。
  • cipher(枚举值,未设置) 数据包加密算法,可选 aes-128-gcm、aes-192-gcm、aes-256-gcm、chacha20-ietf-poly1305。
  • aead(布尔值,默认值 false) VMess AEAD 头部认证开关。
ini
[Proxy]
VMess-TLS = vmess, vmess.example.com, 443, uuid=b831381d-6324-4d53-ad4f-8cda48b30811, aead=true, tls=true, sni=vmess.example.com
VMess-WS = vmess, cdn.example.com, 443, uuid=b831381d-6324-4d53-ad4f-8cda48b30811, aead=true, tls=true, ws=true, ws-path=/ray

Trojan ​

Trojan 协议通过仿标准 HTTPS 流量传输。认证密码通过端口后的首个位置参数声明:

ini
name = trojan, host, port, password, [options...]

属性配置 ​

  • password(字符串,必填) Trojan 认证密码,置于端口后的第一个位置参数。
ini
[Proxy]
Trojan-TLS = trojan, trojan.example.com, 443, <SECRET>, tls=true, sni=trojan.example.com
Trojan-WS = trojan, trojan.example.com, 443, <SECRET>, tls=true, sni=trojan.example.com, ws=true, ws-path=/trojan-ws

Hysteria ​

Hysteria 协议基于 QUIC 协议传输,具备单流多路复用与抗丢包拥塞控制。

属性配置 ​

  • auth(字符串,默认值为空) 客户端握手认证鉴权凭据。
  • down(正整数,单位:Bps,默认值 0) 下行带宽速率限制;0 表示由拥塞控制算法动态探测。
  • obfs(字符串,未设置) Salamander 流量混淆验证密码。
  • realm(URL 字符串,未设置) 启用 Realm 控制面发现与 UDP NAT 穿透机制,格式为 realm:// 或 realm+http://。
  • realm-underlying-proxy(节点名称,未设置) 仅供 Realm 控制面通信使用的独立底层代理链路。
  • realm-stun(服务器列表,默认内置 STUN 列表) 用于 NAT 类型探测与穿透的 STUN 服务器地址列表(逗号分隔)。
  • realm-stun-timeout(正整数,单位:秒,默认值 5) STUN 握手探测超时时间。
  • realm-http-timeout(正整数,单位:秒,默认值 10) Realm 控制面 HTTP 通信超时,允许的最大值为 10 秒。
  • realm-punch-timeout(正整数,单位:秒,默认值 5) UDP NAT 穿透等待超时时间。
  • realm-insecure(布尔值,默认值 false) 允许跳过 Realm 控制面的 TLS 证书校验。
  • realm-sni(域名字符串,未设置) Realm 控制面通信 TLS SNI 指示。
  • realm-server-cert-fingerprint-sha256(64 位十六进制字符串,未设置) Realm 控制面证书的 SHA-256 指纹校验。
ini
[Proxy]
Hysteria-Standard = hysteria, hy.example.com, 443, auth=<SECRET>, sni=hy.example.com, down=12500000
Hysteria-Realm = hysteria, hy.example.com, 443, auth=<SECRET>, realm=realm://<SECRET>@coord.example.com/tunnel1

TUIC v5 ​

支持 TUIC v5 的 TCP 和 UDP 代理,目标地址支持 IPv4、IPv6 和域名。不支持 TUIC v4。

  • uuid(UUID,必填):服务端配置的用户标识。
  • password(字符串,必填):服务端配置的密码;包含逗号或等号时使用双引号包裹。
  • udp-relay-mode(native / quic,默认 native):选择 UDP 转发模式。native 使用数据报传输,quic 使用可靠传输;两种模式均支持大报文分片。
  • TLS 始终开启,支持通用 sni、alpns、证书校验与指纹参数;未指定 ALPN 时使用 h3。不支持 tls=false 或 enable-early-data=true。
  • UDP 报文长度及同一会话内混合使用 IPv4、IPv6 目标的能力,还取决于服务端支持情况。
ini
[Proxy]
TUIC-Native = tuic, tuic.example.com, 443, uuid=00000000-0000-0000-0000-000000000001, password=<SECRET>, sni=tuic.example.com
TUIC-QUIC = tuic, tuic.example.com, 443, uuid=00000000-0000-0000-0000-000000000001, password=<SECRET>, udp-relay-mode=quic

WireGuard ​

WireGuard 采用点对点加密隧道,通过纯键值选项方式声明:

ini
name = wireguard, [options...]

接口属性 ​

  • addresses(IP 地址列表,必填) 客户端本地分配的虚拟 IP 地址列表(逗号分隔);IPv4 与 IPv6 各支持配置一个。
  • private-key(Base64 字符串,必填) 客户端本地 WireGuard 接口私钥(32 字节)。
  • mtu(整数 576–1420,默认值 1280) 隧道最大传输单元;包含 IPv6 地址时建议设置为 1280 或更高。
  • dns(IP 地址列表,默认值为空) 隧道专用的内部域名解析器地址列表。
  • peers(Peer 对象数组,必填) 对端 Peer 节点配置列表,格式为 [{key=value,...}]。

Peer 属性 ​

  • public-key(Base64 字符串,必填) 对端 Peer 的 32 字节公钥。
  • preshared-key(Base64 字符串,未设置) 预共享对称密钥(Preshared Key)。
  • allowed-ips(CIDR 列表,必填) 允许经由此 Peer 路由的目标 IP 网段范围(逗号分隔)。
  • endpoint(host:port 格式,必填) 对端服务器的实际物理网络连接地址与 UDP 端口。
  • keepalive(整数 0–65535,单位:秒,未设置) NAT 保活心跳报文发送间隔。
  • reserved(字节数组,未设置) 保留字段,格式如 [0,0,0],供特定网络网关要求时提供。
ini
[Proxy]
WG-Node = wireguard, addresses="10.0.0.2, fd00::2", private-key=<SECRET>, mtu=1280, peers=[{public-key=<SECRET>,endpoint=wg.example.com:51820,allowed-ips="0.0.0.0/0, ::/0",keepalive=25}]

Tailscale ​

Tailscale 节点直接接入 Tailnet 网络,通过纯键值选项方式声明:

ini
name = tailscale, [options...]

属性配置 ​

  • auth-key(非空字符串,必填) Tailscale 预授权密钥(Auth Key);日志输出时自动脱敏。
  • control-url(HTTPS URL,默认官方控制面地址) Tailscale 控制面(Headscale / Tailscale)协调服务器地址。
  • http-underlying-proxy(节点名称,未设置) 仅供控制面信令交互与 DERP HTTPS 中继通信使用的底层代理。
  • hostname(字符串,未设置) 本机在 Tailnet 拓扑中声明的主机名。
  • exit-node(节点标识,默认值 none) 指定 Tailnet 出口节点;可选 none、auto 或节点稳定 ID、完整/短域名及 Tailnet IP。
  • dns-server(IP 地址列表,默认控制面自动下发) 自定义覆盖 Tailnet DNS 解析器;IPv6 带端口格式为 [IP]:port。
  • derp-only(布尔值,默认值 false) 强制全程经由 DERP 中继转发,禁用节点间直连与 UDP NAT 穿透。
  • ephemeral(布尔值,默认值 false) 声明为临时节点,设备断开后自动从控制面注销。
  • mtu(整数 576–1420,默认值 1280) Tailscale 虚拟接口的数据包 MTU 大小。

路由与 MagicDNS 机制 ​

  • 路由匹配顺序:发往 Tailnet 内部节点或子网路由(Subnet Routes)的流量优先于出口节点(Exit Node)的默认路由。
  • MagicDNS 拓扑:根据控制面下发的拓扑同步 Tailnet 主机名记录与搜索域(Search Domains)。非内网查询由配置的解析器或出口节点提供递归转发。
ini
[Proxy]
Tailnet = tailscale, auth-key=<SECRET>, hostname=apple-client, exit-node=auto
Tailnet-Proxy = tailscale, auth-key=<SECRET>, exit-node=gateway-node, http-underlying-proxy=SSNode

Shadow TLS ​

Shadow TLS V1/V2/V3 提供到服务端固定后端的 TCP 字节流。通过内层协议节点的 underlying-proxy 引用它;规则和调度组选择内层协议节点。业务数据的加密由 Shadowsocks 等内层协议负责。

属性配置 ​

  • version(枚举值,默认值 3) 可选 1、2、3;须与服务端一致,不自动降级。
  • password(字符串,V2/V3 必填) V2/V3 要求非空认证密码;V1 不需要。
  • sni(域名字符串,默认节点 host 地址) 握手网站名称,必须是有效 TLS 服务名称。
  • server-cert-fingerprint-sha256、alpns 沿用上文 TLS 选项的格式、默认值及约束。

V1 使用 TLS 1.2;V2 支持 TLS 1.2/1.3;V3 严格使用 TLS 1.3。证书验证保持启用,不支持 early data 或原生 UDP。

ini
[Proxy]
Cover = shadowtls, stls.example.com, 443, version=3, password=<SECRET>, sni=www.example.com
Proxy = ss, stls.example.com, 443, encrypt-method=aes-128-gcm, password=<SECRET>, underlying-proxy=Cover

[Rule]
FINAL, Proxy

AnyTLS ​

AnyTLS 协议强制启用 TLS,并采用多路复用连接池管理。

属性配置 ​

  • password(字符串,必填) 握手身份认证凭据;支持通过端口后的首个位置参数配置。
  • idle-session-check-interval(正整数,单位:秒,默认值 30) 底层连接池空闲会话健康检查周期。
  • idle-session-timeout(正整数,单位:秒,默认值 30) 空闲连接保持最大超时时间。
  • min-idle-session(无符号整数,默认值 5) 连接池中维持的最小空闲连接储备数。
  • max-streams-per-session(正整数,默认值 5) 单条 TLS 会话连接承载的并发数据流上限。
ini
[Proxy]
AnyTLS-Node = anytls, anytls.example.com, 443, password=<SECRET>, idle-session-timeout=60

SSH ​

SSH 协议基于 TCP direct-tcpip 转发流量,支持密码或命名私钥认证,不支持 UDP:

属性配置 ​

  • username(非空字符串,必填) SSH 登录用户名。
  • password(非空字符串,未设置) SSH 登录密码;与 private-key 必须且只能填写一个。
  • private-key(Keystore 名称,未设置) 新建 SSH 会话时优先从安全存储获取私钥,缺失时使用配置内同名条目。
  • idle-timeout(无符号整数,单位:秒,默认值 180) SSH 隧道连接空闲保活超时时长。
  • server-fingerprint(指纹列表,默认接受任意服务端密钥) 服务端主机公钥指纹验证,格式为 算法 Base64公钥,多个值使用双引号包裹并以逗号分隔。
ini
[Proxy]
SSH-Tunnel = ssh, ssh.example.com, 22, username=deploy, password=<SECRET>, idle-timeout=300

基本策略 ​

基本策略用于本地直连或流量阻断,不连接外部代理服务器:

策略标识命名动作类型HTTP 流量行为TCP/UDP 流量行为行为说明
DIRECTdirect直接由本地物理网络发起连接直接由本地物理网络发起连接流量直连,不经过外部代理
REJECTreject返回 HTTP 503 状态码响应发送连接重置或关闭拒绝连接策略
REJECT-TINYGIFreject-tinygif返回 HTTP 200 及 1×1 像素透明 GIF发送连接重置或关闭针对 HTTP 请求返回 1×1 像素透明 GIF
REJECT-DROPreject-drop静默保持连接,超时后断开静默丢弃报文,不回复响应静默丢弃策略
REJECT-NO-DROPreject-no-drop返回 HTTP 503 状态码响应发送连接重置或关闭即时拒绝策略,不转为静默丢弃

大写基本策略(如 DIRECT、REJECT)可直接在分流策略和调度组中使用;小写名称可在 [Proxy] 节中自定义别名。

ini
[Proxy]
DirectOutbound = direct
AdBlock = reject
AdImageBlock = reject-tinygif
QuietBlock = reject-drop

Sing Mux 多路复用 ​

Sing Mux 允许在单条 TCP/TLS 连接中并发传输多个逻辑数据流。支持该特性的代理协议可配置以下选项:

  • sing-mux(布尔值,默认值 false) Sing Mux 多路复用总开关。
  • sing-mux-stream-num-per-conn(正整数,默认值 8) 单条底层 TCP 物理连接中并发承载的最大逻辑子流数量。
  • sing-mux-max-connections(正整数,未设置) 节点建立的底层物理复用连接总数上限。
  • sing-mux-padding(布尔值,默认值 true) 数据包填充开关,启用时在数据包中添加随机长度填充。
  • sing-mux-idle-timeout(无符号整数,单位:秒,默认保持连接) 复用连接在无活跃数据流时的空闲保活超时时长。

示例声明写法:

ini
[Proxy]
# Shadowsocks 启用 Sing Mux 多路复用
SS-Mux = shadowsocks, ss.example.com, 8388, encrypt-method=aes-256-gcm, password=<SECRET>, sing-mux=true, sing-mux-stream-num-per-conn=16, sing-mux-padding=true

# Trojan 启用 TLS 与 Sing Mux 多路复用
Trojan-Mux = trojan, trojan.example.com, 443, <SECRET>, tls=true, sni=trojan.example.com, sing-mux=true, sing-mux-stream-num-per-conn=8

配置示例 ​

基础配置 ​

ini
[Proxy]
# 1. 基础直连与拦截别名
DirectNet = direct
BlockAds = reject-drop

# 2. Shadowsocks(链式代理与多路复用)
LandingNode = shadowsocks, jp.example.com, 8388, aes-256-gcm, <SECRET>
RelayNode = shadowsocks, us.example.com, 8388, chacha20-ietf-poly1305, <SECRET>, underlying-proxy=LandingNode, sing-mux=true

# 3. Trojan(WebSocket 传输与自定义 SNI)
TrojanNode = trojan, hk.example.com, 443, <SECRET>, tls=true, sni=hk.example.com, ws=true, ws-path=/ws

# 4. Hysteria(下行速率限制)
HyNode = hysteria, hy.example.com, 443, auth=<SECRET>, sni=hy.example.com, down=25000000

# 5. WireGuard
WG-Node = wireguard, addresses="10.8.0.5, fd00:8::5", private-key=<SECRET>, mtu=1360, peers=[{public-key=<SECRET>,endpoint=vpn.example.com:51820,allowed-ips="10.0.0.0/8, 172.16.0.0/12"}]

# 6. Tailscale
Tailnet-Mesh = tailscale, auth-key=<SECRET>, hostname=mac-client, exit-node=auto