逻辑分层
在GOST中一个代理服务逻辑上被分成两层:协议层(Protocol)和传输层(Transport),每层有若干可选的类型,两层之间相互独立,并可以任意组合使用。
当GOST去连接一个代理节点时,会先按照传输层设置的传输类型进行交互,当传输层建立以后,再按照协议层设置的协议类型进行交互。
协议类型(Protocols)
支持的协议类型有:
-
http
- HTTP -
http2
- HTTP2 -
socks4
- SOCKS4 (2.4+) -
socks4a
- SOCKS4A (2.4+) -
socks5
- SOCKS5 -
ss
- Shadowsocks -
ss2
- Shadowsocks with AEAD support (2.8+) -
sni
- SNI (2.5+) -
forward
- Forward -
relay
- TCP/UDP relay (2.11+)
传输类型(Transports)
支持的传输类型有:
-
tcp
- 原始TCP -
tls
- TLS -
mtls
- Multiplex TLS,在TLS上增加多路复用功能 (2.5+) -
ws
- Websocket -
mws
- Multiplex Websocket,在Websocket上增加多路复用功能 (2.5+) -
wss
- Websocket Secure,基于TLS加密的Websocket -
mwss
- Multiplex Websocket Secure,在基于TLS加密的Websocket上增加多路复用功能 (2.5+) -
kcp
- KCP (2.3+) -
quic
- QUIC (2.4+) -
ssh
- SSH (2.4+) -
h2
- HTTP2 (2.4+) -
h2c
- HTTP2 Cleartext (2.4+) -
obfs4
- OBFS4 (2.4+) -
ohttp
- HTTP Obfuscation (2.7+) -
otls
- TLS Obfuscation (2.11+)
配置格式
端口转发相关的节点配置格式请参考端口转发。
在GOST中节点的配置为类URL格式(适用于-L
和-F
参数):
[scheme://][user:pass@host]:port[?param1=value1¶m2=value2]
scheme
scheme
可以是单独的协议类型或传输类型,或是二者的组合,也可以是空。
不指定任何类型
传输层默认为是原始TCP类型。
对于-L
参数,协议层默认为是HTTP & SOCKS5,对于-F
参数,协议层默认为是HTTP类型。
gost -L :8080 -F :8888
仅指定协议类型
当仅指定协议类型时,传输层默认为原始TCP类型。
gost -L http://:8080 -F socks5://:1080
仅指定传输类型
当仅指定传输类型时,对于-L
参数,协议类型默认为HTTP+SOCKS5。对于-F
参数,协议层默认为是HTTP类型。
gost -L tls://:443 -F ws://:1443
组合使用
gost -L http+tls://:443 -F socks5+wss://:1443
特殊的schemes
除了上述的类型外,有几个比较特殊的shemes:
-
https
- 简写形式,等同于http+tls
-
redirect
- TCP透明代理 (2.3+)
gost -L redirect://:12345
ssu
- Shadowsocks UDP relay
gost -L ssu://chacha20:123456@:8338
节点认证
user:pass
通过user:pass
指定服务的认证信息。对于shadowsocks,user
为加密类型。
gost -L admin:123456@:8080 -F ss://chacha20:123456@:8338
auth参数 (2.9.2+)
如果认证信息中包含特殊字符,则可以通过auth
参数来设置:
gost -L :8080?auth=YWRtaW46MTIzNDU2 -F ss://:8338?auth=Y2hhY2hhMjA6QWEjJiEkMTIzNEA1Njc4
auth
的值为user:pass
base64编码值
secrets参数
也可以通过secrets
参数来设定多组认证信息:
gost -L=:8080?secrets=secrets.txt
secrets.txt文件格式为按行分割的认证信息,每一行认证信息为用空格分割的user-pass对,以 #
开始的行为注释行。
# period for live reloading
reload 10s
# username password
admin #123456
test\user001 123456
test.user@002 12345678
reload
- 此配置文件支持热更新。此选项用来指定文件检查周期,默认关闭热更新。
注意: 当secrets
参数用于shadowsocks协议时,仅会使用第一项作为认证信息。
所有的认证信息都是用于协议层(Protocol)。