Skip to content

代理

每个 [[proxy]] 是一台你自己运营或有权使用的上游服务器。规则、代理组和 global-proxy 通过 name 引用它。Specola 不附带任何服务器;内置出口 DIRECTREJECT 始终存在。

toml
[[proxy]]
name = "office"
type = "http"
server = "proxy.example.com"
port = 8080

通用字段

字段必填说明
name唯一;不能含逗号和 ::;不能叫 DIRECTREJECT
type下表中的类型之一
server域名或 IP 地址
port165535
dialer-proxy经由另一个代理连接,见代理链
[proxy.tls]TLS 设置,见 TLS
[proxy.transport]WebSocket、gRPC 或 HTTP 传输,见传输层

名称在所有引用处都区分大小写。

类型

type协议必填字段
httpHTTP 代理(CONNECT),可选 TLS
socks5SOCKS5,可选 TLS
ssshadowsocksShadowsockscipherpassword
trojanTrojan(总是 TLS)password
vmessVMessuuid
vlessVLESSuuid
hysteria2Hysteria 2(总是 TLS,QUIC)password
tuicTUIC v5(总是 TLS,QUIC)uuidpassword
anytlsAnyTLS(总是 TLS)password

sshmierusudoku 能被识别,但不在当前版本中,使用它们的配置会被拒绝。

HTTP

toml
[[proxy]]
name = "office"
type = "http"
server = "proxy.example.com"
port = 8080
username = "me"          # 可选
password = "change-me"   # 可选

HTTPS 代理加上 TLS 块:

toml
[[proxy]]
name = "office-tls"
type = "http"
server = "proxy.example.com"
port = 8443
username = "me"
password = "change-me"

[proxy.tls]
server-name = "proxy.example.com"

可选:pathheaders(额外请求头组成的表)和 early-data(布尔)。

SOCKS5

toml
[[proxy]]
name = "lab"
type = "socks5"
server = "10.0.0.5"
port = 1080
username = "me"          # 可选
password = "change-me"   # 可选
udp = true               # 允许 UDP ASSOCIATE

也可以加 TLS 块,即 SOCKS5 over TLS。

Shadowsocks

toml
[[proxy]]
name = "ss-home"
type = "ss"
server = "home.example.com"
port = 8388
cipher = "2022-blake3-aes-128-gcm"
password = "base64-key-from-your-server"

支持的加密方式:aes-128-gcmaes-256-gcmchacha20-ietf-poly13052022-blake3-aes-128-gcm2022-blake3-aes-256-gcm2022-* 系列的密码是服务端配置中的 base64 密钥。Shadowsocks 不允许配置 TLS 块。

Trojan

toml
[[proxy]]
name = "trojan-home"
type = "trojan"
server = "home.example.com"
port = 443
password = "change-me"
udp = true

[proxy.tls]
server-name = "home.example.com"

TLS 始终开启。未设置 alpn 时,Trojan 使用 h2http/1.1

VMess

toml
[[proxy]]
name = "vmess-home"
type = "vmess"
server = "home.example.com"
port = 443
uuid = "00000000-0000-0000-0000-000000000000"
alterId = 0
cipher = "auto"

[proxy.tls]
server-name = "home.example.com"

[proxy.transport]
type = "ws"
path = "/ws"

可选:global-paddingauthenticated-lengthpacket-encodingpacketaddrxudp)、udp

VLESS

toml
[[proxy]]
name = "vless-home"
type = "vless"
server = "home.example.com"
port = 443
uuid = "00000000-0000-0000-0000-000000000000"
flow = "xtls-rprx-vision"

[proxy.tls]
server-name = "www.example.com"

[proxy.tls.reality]
enabled = true
public-key = "public-key-from-your-server"
short-id = "0123abcd"

flowencryption 可选。Reality 支持 VLESS(以及 HTTP、SOCKS5)。

Hysteria2

toml
[[proxy]]
name = "hy2-home"
type = "hysteria2"
server = "home.example.com"
port = 443
password = "change-me"
down = "100 mbps"

[proxy.tls]
server-name = "home.example.com"

可选:obfsobfs-password,用于 Salamander 混淆。

TUIC

toml
[[proxy]]
name = "tuic-home"
type = "tuic"
server = "home.example.com"
port = 443
uuid = "00000000-0000-0000-0000-000000000000"
password = "change-me"
congestion-control = "bbr"
udp-relay-mode = "native"

[proxy.tls]
server-name = "home.example.com"
alpn = ["h3"]

可选:heartbeat-intervalrequest-timeoutreduce-rttfast-opendisable-snimax-open-streamsmax-udp-relay-packet-sizeip

AnyTLS

toml
[[proxy]]
name = "anytls-home"
type = "anytls"
server = "home.example.com"
port = 443
password = "change-me"

[proxy.tls]
server-name = "home.example.com"

可选:idle_session_check_intervalidle_session_timeout(时长字符串)和 min_idle_session(整数)。

TLS

[proxy.tls] 紧跟在它所属的 [[proxy]] 之后。只要写了这个块,TLS 就会开启。

字段说明
enabled写了块时默认为 true;对 httpsocks5vmessvless 可设为 false 关闭 TLS
server-name(别名 sniSNI 中发送、并用于校验证书的名称
alpn协议列表;仅 vmessvlesstrojantuic 支持
certificate额外信任的 PEM 字符串列表
certificate-path额外信任的 PEM 文件路径
skip-cert-verify(别名 insecure关闭证书校验,仅用于测试

Reality(VLESS、HTTP、SOCKS5):

字段说明
[proxy.tls.reality] enabledtrue 启用 Reality
public-key必填
short-id最多一个

以下 TLS 字段能被识别,但当前版本会拒绝:min-versionmax-versioncipher-suitescurve-preferencesfingerprint、客户端证书与私钥、echacme

传输层

[proxy.transport] 在连接外再套一层传输。设置 type 及对应字段:

type字段
wspathhostheadersmax-early-dataearly-data-header-name
httpupgradepathhostheaders
grpcservice-nameauthoritymulti-modeuser-agent
httppathhostmethodheaders
toml
[proxy.transport]
type = "grpc"
service-name = "tunnel"

继续之前

  • 新代理先用 route-mode = "global"global-proxy = "<名称>" 测试,再为它写规则。Global 下都 不通,说明问题在代理本身,而不是规则。
  • 不要把账号密码放进公开仓库、日志或截图。如果配置放在 dotfiles 里,请保持仓库私有。