安全隧道利器gost

介绍

项目地址 https://github.com/ginuerzh/gost

特性

  • 可同时监听多端口
  • 可设置转发代理,支持多级转发(代理链)
  • 支持标准HTTP/HTTPS/SOCKS5代理协议
  • SOCKS5代理支持TLS协商加密
  • Tunnel UDP over TCP
  • 支持Shadowsocks协议 (OTA: 2.2+,UDP: 2.4+)
  • 支持本地/远程端口转发 (2.1+)
  • 支持HTTP 2.0 (2.2+)
  • 实验性支持QUIC (2.3+)
  • 支持KCP协议 (2.3+)
  • 透明代理 (2.3+)

我为什么喜欢它

  • 配置相当简洁优雅
  • 功能相当强大
  • 独立的依赖,跨平台(其实这是go优点)

安装

以ubuntu来说

1
2
sudo apt-get install snap
sudo snap install gost

也可以去https://github.com/ginuerzh/gost/releases 下最二进制版。

使用

功能比较强大,详细的可以去看项目主页上的说明,上面写得非常好。
下面只列出自己常用的功能

代替ss,做科学上网工具

  • 服务端 gost -L=ss://aes-128-cfb:123456@:8338?ota=1
  • 客户端 gost -L=:8080 -F=ss://aes-128-cfb:123456@server_ip:8338?ota=1

本地端口转发

  • TCP
    gost -L=tcp://:2222/192.168.1.1:22

就是监听本地的2222端口,把2222收到的数据包都转发到192.168.1.1:22上去。

TCP 远程端口转发

  • 服务端 gost -L=1080
  • 客户端 gost -L=rtcp://:2222/192.168.1.1:22 -F=socks://<server_ip>:1080

<server_ip>:2222上的数据(通过代理链)转发到192.168.1.1:22上。

这个功能可以做内网穿透,但未验证当客户端ip发生变化时,会不会重连。
比如可以把内网web服务暴露到公网

比如:
客户端

1
gost -L=rtcp://:80/192.168.2.8:8000 -F=socks5://root:passowrd@35.201.138.200:1234

服务端

1
gost -L=socks5://root:password@:1234

把35.201.138.200上的80端口的信息,转发到本地192.168.2.8:8000

配置日志

-logtostderr : 输出到控制台
-v=3 : 日志级别(1-5),级别越高,日志越详细(级别5将开启http2 debug)
-log_dir=/log/dir/path : 输出到目录/log/dir/path

总结

之前关于服务器与客户端的想法都被这个项目实现了
而且是基于go,多平台,无依赖。