搭建一个https二级代理(完整可用版)

本文的背景是,因为需要,我们需要搭建多层代理服务用于消息转发,同时也方便通过跳板机2进行访问互联网,话不多说,上主菜。

搭建一个https二级代理(完整可用版)_第1张图片

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。

搭建一个https二级代理(完整可用版)_第2张图片

源码编译:

git clone 
cd gost/cmd/gost
go build

最后可以得到一个gost的二进制文件。

image.png

0x2.2 配置代理

http代理:

./gost -L=账号:密码@0.0.0.0:port

https代理:

https代理,我们需要CA证书,可以选择自己申请,或者通过第三方平台生成都行。我这里是自己通过脚本生成的。

搭建一个https二级代理(完整可用版)_第3张图片

./gost -L=https://账号:密码@0.0.0.0:port?probe_resist=code:400\&knock
=your-secret-link.localhost\&cert=证书.crt\&key=证书.key
-F=账号:密码@跳板机2:port

配置完成,出现如下,即为运行成功。

image.png

然后,我们可以通过curl命令进行验证是否代理成功。

curl -s -v  -x :port

出现日志如下。

搭建一个https二级代理(完整可用版)_第4张图片

代理成功(第一台机器是腾讯云的,第二台是阿里云的)。

你可能感兴趣的:(linux)