--相关链接--
GO 语言实现的安全隧道
功能特性
多端口监听
可设置转发代理,支持多级转发(代理链)
支持标准 HTTP/HTTPS/HTTP2/SOCKS4(A)/SOCKS5 代理协议
Web 代理支持探测防御
SOCKS5 代理支持 TLS 协商加密
支持多种隧道类型
Tunnel UDP over TCP
本地/远程 TCP/UDP 端口转发
TCP/UDP 透明代理
支持 Shadowsocks(TCP/UDP)协议
支持 SNI 代理
权限控制
负载均衡
路由控制
DNS 解析和代理
TUN/TAP 设备
一、软件安装
二进制文件
wget <https://github.com/ginuerzh/gost/releases/download/v2.11.2/gost-linux-amd64-2.11.2.gz>
gzip -d gost-linux-amd64-2.11.2.gz
nohup ./gost-linux-amd64-2.11.2 -L=http2://gostadm:qw123321@:32080 > run.log 2>&1 &
源码编译
git clone <https://github.com/ginuerzh/gost.git>
cd gost/cmd/gost
go build
Docker
docker pull ginuerzh/gost
# 测试启动命令
docker run -it --rm -p 8080:8080 ginuerzh/gost -L "auto://:8080" -F "http2://qqqq:aaaa@domain:port"
# 带自启动命令
docker run -d --restart=always --name=gost -p 1080:1080 ginuerzh/gost -L "auto://:1080" -F "http2://qqqq:aaaa@domain:port"
Ubuntu Store
sudo snap install core
sudo snap install gost
二、使用配置说明
逻辑分层
在 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)。
评论区