gost是用golang语言实现的一个安全隧道。地址位于:
v2版本位于
GitHub - ginuerzh/gost: GO Simple Tunnel - a simple tunnel written in golang
v3版本位于
GitHub - go-gost/gost: GO Simple Tunnel - a simple tunnel written in golang
是一个不可多得的隧道工具。
至于什么是隧道? 就是可以通过这个工具传输一些其他协议的数据。就像这个样子。

隧道有什么用呢?
可以起到一些加速的作用或者流量变换的作用。 具体就不展开了。
虽然gost带有代理功能,但是我们并不使用代理功能。这里只用它建隧道。
gost的功能特性如下:
Web UI
Wiki站点:https://gost.run
常用方法
gost由于非常灵活, 用起来对用户的要求还是有点高的。
不过一般掌握几个命令就可以了。
首先网络架构大概是这样的:
gost创建tunnel,在隧道中传输其他的数据。

常用的命令:
命令需要client与server配合。
下面的命令示例中的 server.com需要 在实际中换成具体的server所用的域名,直接用IP在一些情况下大概也可以。
命令示例的是对远端 80端口的通道,当然,不局限于nginx的http服务, 只要是tcp的服务,都可以用。 O(∩_∩)O哈哈~

1.tls tunnel
服务端将在8000端口提供端口代理服务,
在客户端,gost监听本机的tcp端口80,本地的80映射到服务器上的80端口
tunnel是经过tls加密的。
relay是gost实现的代理协议。
# server
gost -L relay+tls://:8000
# client
gost -L=tcp://:80/:80 -F relay+tls://server.com:8000
2.QUIC tunnel
client本地的80端口通过tunnel通到远端主机的80端口。
中间采用的是quic协议,这个目前速度实测不是特别快。
# server
./gost -L relay+quic://:8000
# client
.\gost.exe -L tcp://127.0.0.1:80/:80 -F "relay+quic://server.com:8000"
3.其他协议
HTTP2 , HTTP3, DTLS , KCP,SSH
只要把上述命令中的quic换成对应的协议即可。
上层协议一般用relay就非常OK。
# server
./gost -L relay+kcp://:8000
# client
.\gost.exe -L tcp://127.0.0.1:80/:80 -F "relay+kcp://server.com:8000"
等等不再一 一叙述,因为命令基本都是类似的。
详情可以查看gost的官方网站。 概述 - GOST
tcp
- 原始TCP协议mtcp
- Multiplex TCP 多路复用功能的TCPudp
- 原始UDP协议tls
- TLS协议dtls
- DTLS协议mtls
- Multiplex TLS,在TLS上增加多路复用功能ws
- Websocketmws
- Multiplex Websocket,在Websocket上增加多路复用功能wss
- Websocket Secure,基于TLS加密的Websocketmwss
- Multiplex Websocket Secure,在基于TLS加密的Websocket上增加多路复用功能h2
- HTTP2协议h2c
- HTTP2 Cleartextgrpc
- gRPC协议pht
- Plain HTTP Tunnelssh
,sshd
- SSH协议kcp
- 基于UDP的KCP协议quic
- 基于UDP的QUIC协议h3
- HTTP3协议,基于PHT协议构建数据通道wt
- HTTP/3 WebTransport模式ohttp
- HTTP Obfuscationotls
- TLS Obfuscationicmp
,icmp6
- ICMP和ICMPv6协议ftcp
- Fake TCP