代理协议
协议类型

协议类型

Stash 支持多种类型的代理协议,可以代理 TCP / UDP 协议。

每个代理必须含有以下参数:

  • name:代理名称,每个代理的名称是唯一的。
  • type:代理类型。
  • server:服务器地址,可以是域名或者 IP 地址。
  • port:端口。

代理可能支持以下参数:


此外,对于单个代理的延迟测试,支持修改以下参数:

  • benchmark-url:延迟测试使用的 URL,默认为 http://www.apple.com/
  • benchmark-timeout:延迟测试超时,单位秒,默认为 5 秒。

你可以访问这里找到更多关于测试代理延迟的信息。


对于基于 QUIC 的协议,支持定期更改端口以应对 ISP 针对单个端口的限速,这一方法又称为端口跳跃。

  • ports:字符串,支持多个端口或端口范围,以逗号分隔,例如 443,8443,5000-6000
  • hop-interval:整数,端口跳跃间隔,单位秒,默认为 30 秒。

不同类型的代理还需要指定一些参数,可以参考下文。

Shadowsocks / Shadowsocks2022

name: ss1
type: ss
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: 'password'
udp: true
plugin: null
plugin-opts:
  mode:
  host:

支持以下的加密方式(cipher):

  • aes-128-gcm
  • aes-192-gcm
  • aes-256-gcm
  • aes-128-cfb
  • aes-192-cfb
  • aes-256-cfb
  • aes-128-ctr
  • aes-192-ctr
  • aes-256-ctr
  • rc4-md5
  • chacha20
  • chacha20-ietf
  • xchacha20
  • chacha20-ietf-poly1305
  • xchacha20-ietf-poly1305
  • 2022-blake3-aes-128-gcm
  • 2022-blake3-aes-256-gcm

支持以下的插件(plugin):

plugin: obfs
plugin-opts:
  mode: tls # 混淆模式,可以选择 http 或 tls
  host: bing.com # 混淆域名,需要和服务器配置保持一致
plugin: v2ray-plugin
plugin-opts:
  mode: websocket # 暂时不支持 QUIC 协议
  tls: true # wss
  skip-cert-verify: true # 不验证证书
  host: bing.com
  path: '/'
  headers: # 自定义请求头
    key: value

ShadowsocksR

name: ssr
type: ssr
server: server
port: 443
cipher: chacha20-ietf
password: 'password'
obfs: ''
protocol: ''
obfs-param: ''
protocol-param: ''

支持的加密方式(cipher)与 Shadowsocks 相同。

支持的混淆方式(obfs):

  • plain
  • http_simple
  • http_post
  • random_head
  • tls1.2_ticket_auth
  • tls1.2_ticket_fastauth

支持的协议(protocol):

  • origin
  • auth_sha1_v4
  • auth_aes128_md5
  • auth_aes128_sha1
  • auth_chain_a auth_chain_b

SOCKS5

name: socks
type: socks5
server: server
port: 443
# username: username
# password: password
# tls: true
# skip-cert-verify: true
# udp: true

HTTP

name: http
type: http
server: server
port: 443
headers:
  key: value
tls: true # https
skip-cert-verify: true
# username: username
# password: password

VMess

name: vmess
type: vmess
server: server
port: 443
uuid: d0529668-8835-11ec-a8a3-0242ac120002
cipher: auto
network:

支持加密方式(cipher):

  • auto
  • aes-128-gcm
  • chacha20-poly1305
  • none

支持的承载网络(network):

  • ws
  • h2
  • http
  • grpc
network: ws
ws-opts:
  path: /path
  headers:
    Host: v2ray.com
  max-early-data: 2048
  early-data-header-name: Sec-WebSocket-Protocol
network: h2
tls: true
h2-opts:
  host:
    - http.example.com
    - http-alt.example.com
  path: /

Snell

name: snell
type: snell
server: server
port: 443
psk: yourpsk
udp: true # 需要 v3 以上服务端
version: 3
# obfs-opts:
# mode: http # 或 tls
# host: bing.com

Snell UDP 需要 v3 版本以上的服务端支持。

支持的混淆模式(obfs-opts.mode)支持:

  • http
  • tls

Trojan

name: trojan
type: trojan
server: server
port: 443
password: yourpassword
# udp: true
# sni: example.com # Server Name Indication,如果空会使用 server 中的值
# alpn:
#   - h2
#   - http/1.1
# skip-cert-verify: true

支持的承载网络(network):

  • ws
  • grpc

Hysteria

Hysteria 是一个功能丰富的,专为恶劣网络环境进行优化的网络工具(双边加速),比如卫星网络、拥挤的公共 Wi-Fi、在中国连接国外服务器等。 基于修改版的 QUIC 协议。

Hysteria 服务端部署请参考这里 (opens in a new tab)

name: 'hysteria'
type: hysteria
server: server
port: 443
up-speed: 100 # 上传带宽(单位:Mbps)
down-speed: 100 # 下载带宽(单位:Mbps)
auth-str: your-password
# auth: aHR0cHM6Ly9oeXN0ZXJpYS5uZXR3b3JrL2RvY3MvYWR2YW5jZWQtdXNhZ2Uv # bytes encoded in base64
protocol: '' # udp / wechat-video
obfs: '' # obfs password
sni: example.com # Server Name Indication,如果空会使用 server 中的值
alpn:
  - hysteria
skip-cert-verify: true

上传、下行带宽单位为 Mbps,请尽量正确填写,超出实际带宽会有反效果。

外部链接:base64 在线编码工具 (opens in a new tab)

Hysteria2

⚠️

请注意,Hysteria 2 与 Hysteria 1.x 完全不兼容,两者差异请参考官方说明 (opens in a new tab)

Hysteria2 服务端部署请参考这里 (opens in a new tab)

name: 'hysteria2'
type: hysteria2
server: server
port: 443
auth: your-password
fast-open: true
sni: example.com # Server Name Indication,如果空会使用 server 中的值
skip-cert-verify: true
up-speed: 100 # 上传带宽(可选的,单位:Mbps)
down-speed: 100 # 下载带宽(可选的,单位:Mbps)

VLESS

XTLS 协议在 TLS 环境下摆脱冗余加密,提供更优秀的转发性能。

name: vless
type: vless
server: server
port: 443
uuid: d0529668-8835-11ec-a8a3-0242ac120002
# flow: xtls-rprx-direct
# skip-cert-verify: true
# network: h2
# tls: true
# ws-opts:
#   path: /path
#   headers:
#     Host: v2ray.com
# grpc-opts:
#   grpc-service-name: "example"
# h2-opts:
#   host:
#     - http.example.com
#     - http-alt.example.com
#   path: /

支持的 XTLS 模式(flow):

  • xtls-rprx-origin
  • xtls-rprx-direct
  • xtls-rprx-splice

TUIC

TUIC 是一个轻量的基于 QUIC 的代理协议,由 rust 语言编写,目前支持 v4 和 v5 版本。你可以在这里 (opens in a new tab)找个更多信息。

name: tuic-v5
type: tuic
server: server
port: 443
version: 5
uuid: d0529668-8835-11ec-a8a3-0242ac120002 # for v5
password: your_password # for v5
skip-cert-verify: true
sni: ''
alpn:
  - h3
name: tuic-v4
type: tuic
server: server
port: 443
version: 4
token: 'your_token' # for v4
skip-cert-verify: true
sni: ''
alpn:
  - h3
💡

需要注意的是,Stash 客户端不支持 ALPN 为空,默认的 ALPN 为 h3。请在 TUIC 服务端加上 --alpn h3 参数。

请在服务端选择适合的拥塞控制算法 --congestion-controller 参数以充分利用带宽。

Juicity

Juicity (opens in a new tab) 是一个基于 QUIC 的代理协议,受到 TUIC 的启发。

name: juicity
type: juicity
server: server
port: 443
uuid: d0529668-8835-11ec-a8a3-0242ac120002
password: your_password
skip-cert-verify: true
sni: ''
alpn:
  - h3

WireGuard

WireGuard (opens in a new tab) 是一个高效的 Layer 3 的 VPN,Stash 支持将其作为 Layer 4 的代理使用,并支持通过其他协议转发 WireGuard 数据包。

name: wireguard
type: wireguard
server: server # domain is supported
port: 51820
ip: 10.8.4.8
# ipv6: fe80::e6bf:faff:fea0:9fae # optional
private-key: 0G6TTWwvgv8Gy5013/jv2GttkCLYYaNTArHV0NdNkGI= # client private key
public-key: 0ag+C+rINHBnvLJLUyJeYkMWvIAkBjQPPObicuBUn1U= # peer public key
# preshared-key: # optional
dns: [1.0.0.1, 223.6.6.6] # optional
# mtu: 1420 # optional
# reserved: [0, 0, 0] # optional
# keepalive: 45 # optional
# underlying-proxy: # optional
#   type: trojan
#   server: your-underlying-proxy
#   port: 443
#   password: your-password
💡

WireGuard 并非以高吞吐为设计目标的代理协议,Stash 需要在用户空间完成 Layer 3 与 Layer 4 的转换,其性能损耗会比常见代理协议大。在移动设备上,WireGuard 吞吐量一般会比 Layer4 代理协议低。

⚠️

若使用 underlying-proxy,其必须支持 UDP 中继,建议使用 UDP over TCP 的协议(如 Trojan、VLESS、VMess、Snell)。

SSH

通过 Secure Shell Protocol (SSH) (opens in a new tab) 转发 TCP 流量,支持密码和密钥认证。

💡

由于 SSH 本身不支持转发 UDP 协议,Stash 无法通过 SSH 协议转发 UDP 流量。

name: ssh
type: ssh
server: server # domain is supported
port: 22
user: root
password: password
private-key: |
  -----BEGIN RSA PRIVATE KEY-----
  MIIEpAIBAAKCAQEA0G6TTWwvgv8Gy5013/jv2GttkCLYYaNTArHV0NdNkGI=
  ...
  -----END RSA PRIVATE KEY-----
private-key-passphrase: your-passphrase # optional

DIRECT with Specified Interface

通过新建类型为 direct 的代理,并指定 interface-name 可以强制某些流量通过指定网卡,常用于解决 VPN 与 Stash 无法同时使用的情况。

例如,本机上的 OpenVPN 使用了 utun3,并且希望 10.4.8.0/24 都进入 utun3 而不是 macOS 的默认网卡。

name: my-corp-vpn
type: direct
interface-name: utun3
rules:
  - IP-CIDR,10.4.8.0/24,my-corp-vpn
💡

上述 utun3 请根据实际情况更改。

你可以使用 netstat -rn | grep utun3 查询 utun3 的静态路由表。