本文的背景是,因为需要,我们需要搭建多层代理服务用于消息转发,同时也方便通过跳板机2进行访问互联网,话不多说,上主菜。
0x1 代理选择
现在的代理服务器非常多,如何选择也是一门学问,作者在写这篇文档之前已经尝试过三种代理软件,最终才实现相关需求。
谈到代理,大家首先会想到nginx这一经典的代理服务器,但是很不好的是,它的upstream配置一直不生效,导致没办法实现多层代理(当然也许是我菜~);
tinyproxy,在踩坑nginx之后,我们又想到了tinyproxy,过程很顺利,tinyproxy实现了,我们所需要的需求,不过事情没那么简单,虽然实现了https的转发,但是当主机存在CA证书的时候tinyproxy又不行了,通过查阅相关issue发现tinyproxy只是支持http代理,不支持https代理,故又GG。。
squid这属于一个小插曲,同样也因为无法实现二层代理而告终。
最后,我们的主角出场gost。
0x2 Gost
其功能十分强大,支持TCP,UDP,HTTP/HTTPS等多种协议转发,看到这个简介我都心动不已。
GOST
0x2.1 快速开始
我选择的是通过git + go build的方式手动编译,不过这里有些坑需要我们注意,gost项目对于go的版本是有要求的,小于1.8大于1.3,最佳版本1.73。
源码编译:
git clone <https://github.com/ginuerzh/gost.git>
cd gost/cmd/gost
go build
最后可以得到一个gost的二进制文件。
0x2.2 配置代理
http代理:
./gost -L=账号:密码@0.0.0.0:port
https代理:
https代理,我们需要CA证书,可以选择自己申请,或者通过第三方平台生成都行。我这里是自己通过脚本生成的。
./gost -L=https://账号:密码@0.0.0.0:port?probe_resist=code:400\&knock
=your-secret-link.localhost\&cert=证书.crt\&key=证书.key
-F=账号:密码@跳板机2:port
配置完成,出现如下,即为运行成功。
然后,我们可以通过curl命令进行验证是否代理成功。
curl -s -v <http://myip.ipip.net> -x <https://账号:密码@ip>:port
出现日志如下。
代理成功(第一台机器是腾讯云的,第二台是阿里云的)。
|