gost 是一个非常优秀的tunnel. 支持多种形式的端口映射。
与FRP类似,它也可以实现反向连接的隧道。
本文只介绍远程端口映射方式的tunnel. 就是所谓的rtcp
远程端口映射的意思就是,将本地端的一个服务的端口A(tcp/udp)映射到远程公网主机的端口P上, 用户通过访问远程的端口P来访问本地的这个服务端口A。
一个典型的应用场景就是内网穿透的场景。如下图所示:
server用VPS实现,可以提供公网访问
host A和host B处于内网中,没有公网IP地址,要想让外部的人员可以访问内网中的host B上的ssh服务( :22端口),在host A上通过gost 将host B的22端口映射到远程 server上的2222端口上。
下面我们来看具体的实现:
gost 采用gost 的v3版本来做。
下载地址: Releases · go-gost/gost · GitHub
# server
./gost -L socks5://:5555?bind=true
# host A
./gost -L rtcp://:2222/hostB_IP:22 -F socks5://server_IP:5555
相关文档位于:
SOCKSv4/v5 - GOSThttps://gost.run/tutorials/protocols/socks/
用relay也是可以的,参考gost的文档
Relay - GOSThttps://gost.run/tutorials/protocols/relay/
# server
./gost -L relay://:5555?bind=true
# host A
./gost -L rtcp://:2222/hostB_IP:22 -F relay://server_IP:5555
需要注意的是,gost提供的这个反向连接是单连接的,没有Mux功能,所以在多个连接同时访问时,并发性能并不好。不过日常用用是没有问题的。
作为服务器提供对外服务可能会出现卡顿。