gost是用golang语言实现的一个安全隧道。地址位于:
https://github.com/ginuerzh/gost
是一个不可多得的隧道工具。
至于什么是隧道? 就是可以通过这个工具传输一些其他协议的数据。就像这个样子。
隧道有什么用呢?
可以起到一些加速的作用或者流量变换的作用。 具体就不展开了。
虽然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
服务端将接受到的tls连接 从443转发到80口,
在客户端,ghost监听本机的tcp端口80,Forward到服务端
tunnel是经过tls加密的。 secure=false可以不对证书进行验证。
# server
gost -L tls://:443/:80
# client
gost -L=tcp://:80 -F forward+tls://server.com:443?secure=false
TLS证书
GOST内置了TLS证书,如果需要使用自定义TLS证书,有两种方法:
在GOST运行目录放置cert.pem(公钥)和key.pem(私钥)两个文件即可,GOST会自动加载运行目录下的cert.pem和key.pem文件。
使用key和cert参数指定证书文件路径:
gost -L="tls://:443?cert=/path/to/my/cert/file&key=/path/to/my/key/file"
2.QUIC tunnel
client本地的80端口通过tunnel通到远端主机的80端口。
中间采用的是quic协议,这个目前速度实测不是特别快。
# server
./gost -L quic://:1443/:80
# client
.\gost.exe -L tcp://127.0.0.1:80 -F "forward+quic://server.com:1443"
3.其他协议
HTTP2 , HTTP3(目前标准还没定下来), DTLS , KCP
等等不再一一叙述,因为命令基本都是类似的。
详情可以查看gost的官方网站。 https://gost.run/tutorials/protocols/overview/