大背景
大陆网络出境环境日益恶劣,很多人都利用了国内的服务器来中转流量,比如采用阿里云、腾讯云等国内 BGP 线路中转流量落地到香港 PCCW、日本 NTT 等线路,相对于直接采购一条 CN2 线路有时候成本更低。
基本上大多数人都用的最简单的 iptables 或者 socat 转发,直接将收到的包转到落地节点,本来这并没有什么问题,但自 2020 年以来,墙不断发威,SS/SSR 直连会被非常迅速的识别并封禁。尤其是上月的五中全会期间更为严重。此时,构建一条加密中转隧道就成了必要的选择。
介绍
GOST是一款利用GO语言实现的安全隧道工具,功能非常丰富,支持多端口监听、多级转发代理、支持TCP/UDP协议方式,多种传输协议;在这里我们基本只用到了端口转发这一个功能,具体文档可以参考 这里。
准备工作
1、VPS一台 (后面我们称之为落地机)
2、NAT或者VDS一台(后面我们称之为中转机)
开始搭建
安装gost
首先需要在落地机和中转机上都需要安装gost
wget -N --no-check-certificate https://github.com/ginuerzh/gost/releases/download/v2.11.0/gost-linux-amd64-2.11.0.gz && gzip -d gost-linux-amd64-2.11.0.gz
mv gost-linux-amd64-2.11.0 gost
chmod +x gost
开始中转
中转机
./gost -L udp://:10292 -L tcp://:10292 -F relay+mtls://1.2.3.4:12345
监听本机 10292 端口的 TCP、UDP 连接,转发到落地机(这里假如落地机的IP为1.2.3.4)的 12345 端口。
落地机
./gost -L relay+mtls://:12345/127.0.0.1:3080
监听本机的 12345 端口,接收转发过来的连接,再转给本地的 3080 端口。
扩展知识
因为gost的机制问题,需要窗口化运行,那么我们关闭了SSH窗口中转也会随之关闭。因此可以使用screen 或者 nohup 的方法进行解决,下面以screen进行举例:
安装 screen ,新建窗口运行,代码如下:
apt install screen #Debian/Ubuntu系统
yum install screen #centos系统
若是不能安装,或是安装不成功,请update系统,代码如下:(PS:只针对 screen 安装不成功)
yum -y update #centos系统
apt -y update #debian系统或是ubuntu系统
安装完成以后,直接运行 screen -S gost 命令,开启新窗口,然后在新窗口中运行 落地机命令 或是 中转机命令,
这样我们SSH窗口后中转也会继续,如果想要想要恢复之前关闭的窗口的话输入screen -r gost 命令即可。