Projects STRLCPY SeaMoon Files
🤬
85 lines | UTF-8 | 3 KB

GOST - 优雅的 golang 代理

Seamoon 对接 Gost 十分简单。原因也很简单,2.0 迭代的代码改造中"借鉴"(copy)了很多 gost 的设计和原封不动的代码结构。对协议的理解和代码设计上参考了很多师傅的模式。在此表示感谢无私的开源和分享。

GOST 是一款基于 golang 的简单隧道,具体的介绍可以访问其官网

在技术博客里,我们也分享了 GOST 的一些设计架构代码,我们可以这样理解: Seamoon 服务端就是一个 websocket / grpc 的 gost 转发节点,但是只实现了 http / socks5 的处理模块,由此目前还支持值了这两种协议的转发。

gost 的客户端更强大,因为模块拆分的很细致,所以能实现很多好玩的玩法各种组合, 理论来讲, gost 支持的 listen 都可以通过 seamoon 的隧道转发过来。

gost 还支持了 metrics 等数据统计、代理认证、限速等等客户端实现的功能,适合长期挂在本地作为一个持久化的服务使用。

我们给出一些demo示例,来看一下 seamoon 如何对接 gost。这里免去了 gost 安装相关教程,默认用户已安装了 gost,提供的是具体的启动脚本配置。

websocket 隧道

# 通过 gost 启动一个 http 代理,利用 websocket 转发,转发的流量 以 http 形式(默认不指定的话,流量都将以 http 形式进行传递)。
gost -L http://:1080 -F wss://<seamoon-server>:<seamoon-port>?path=/http
# 通过 gost 启动一个 http 代理,利用 websocket 转发,并指定转发的流量 以 socks5 形式
gost -L http://:1080 -F socks5+wss://<seamoon-server>:<seamoon-port>?path=/socks5
# 通过 gost 启动一个 http 代理,利用 websocket 转发,转发的流量 以 http 形式(默认不指定的话,流量都将以 http 形式进行传递)。
gost -L socks5://:1080 -F wss://<seamoon-server>:<seamoon-port>?path=/http
# 通过 gost 启动一个 http 代理,利用 websocket 转发,并指定转发的流量 以 socks5 形式。
gost -L socks5://:1080 -F socks5+wss://<seamoon-server>:<seamoon-port>?path=/socks5
# 通过 gost 启动一个其他协议代理,这里以 socks4 代理为例,利用 websocket 转发,并指定转发的流量 以 socks5 形式。
gost -L socks4://:1080 -F socks5+wss://<seamoon-server>:<seamoon-port>?path=/socks5
# 通过 gost 启动一个其他协议代理,这里以 shadowsocks 代理为例,利用 websocket 转发,并指定转发的流量 以 socks5 形式。
gost -L ss://<cipher>:<pass>@:1080 -F socks5+wss://<seamoon-server>:<seamoon-port>?path=/socks5
# 如:ss://AEAD_AES_128_GCM:password@:1080

grpc 隧道

grpc 隧道由于 gost 的 proto 略有冲突,因此需要单独适配实现一个 server。计划 2.0 版本彻底完成适配。

Please wait...
Page is in error, reload to recover