一个人应该活得是自己 并且干净

封装HTTP代理至Vmess/SS协议以绕过GFW

最近需要在海外服务器上部署一个只支持HTTP代理的服务,在公网通讯必将大幅增加被GFW侦测的几率。解决方法是使用更安全的代理协议进行封装。


HTTP代理是最简单也最不安全的代理类型,同时又是最基本的,绝大多数普通应用都支持HTTP代理。也因此,HTTP代理非常容易被GFW识别并拦截。轻则丢包封端口,重则banIP,代价未免有些太大。

而诸如Vmess(V2Ray)和Shadowsocks(SS)的代理协议却能因其引以为傲的安全性轻松绕过GFW监测,那为什么不拿来用呢?

其实也可以通过修改源码的方式在该服务中内嵌代理功能,但未免太过复杂,也不便于服务未来的更新。也并没找到能实现类似功能(封装)的第三方服务,也许会有更优雅的解决方法。

Talk is cheap, show me the code



架构图

图里已经写得相当清楚了,这里再用文字额外记录下。

部署基础服务

远程服务器必须部署Nginx和任意一个安全可信的代理服务(例中是Vmess)

修改hosts

修改/etc/hosts,将服务需要用到的域名指向本地,如:
vi /etc/hosts
插入需要修改的host规则:
127.0.0.1 music.163.com
127.0.0.1 interface.music.163.com
(看到这里,你一定知道这个服务是做什么的了)
别忘了保存:
ESC
:w
:q

配置反代服务器

使用Nginx在本地配置两个反代服务器(有几条host规则就配置几个反代),这里以 music.163.com 的反代服务器为例:
绑定域名: music.163.com
目标URL:http://127.0.0.1:服务端口
发送域名:music.163.com

结语

这样客户应用会以为自己真的在和 music.163.com 通讯,也就是用类似劫持的方法实现了封装HTTP代理。

发表新评论