Pages

Monday, 17 October 2016

关于多层代理嵌套使用的高级技巧

提出这种需求的背景是因为: 基于目前大陆的复杂网络环境,没有人可以真正做到:
在任何运营商环境都能高速翻墙,绝对没有!  那些声称能够在任何网络环境都能流畅看1080P的,都绝对是吹牛b。

而且锐速加速实际效果非常有限,根本难有实质性的帮助。就算中国移动这种网络,现在也是江河日下,国际带宽要么缩水,要么极度不稳定。 像长城宽带这种第三方的ISP更是翻墙极度困难。

所以,没有人能够真正做到在全平台,全网络环境都做到高速翻墙。没有人能真正做到这点!

但是是不是真的没有办法呢? 当然不是,经过我观察,有一家的SS服务可以做到这点,连长宽都可以高速越墙,那就是shadowsocks.com.

它真正做到了全平台,全网络环境的高速翻越,电信的选择美国线路即可,其他运营商你们可以自己去试,我这里就不多说了。

但是它有个致命的缺点,就是不能访问新唐人之类的敏感网站,后端被nginx的规则阻断了,这一点非常恶心。

解决的办法有两种:

第一种(不推荐): 用tor做中转: 具体来讲,就是在torrc里面加入; socks5proxy 127.0.0.1 ,然后浏览器调用浏览器的9050端口即可。
这种情况的网络路由是:  本机9050的tor端口=》本机 1080端口=》SS服务器=》tor 入口节点=》tor中间节点=》tor 出口节点=》目标网站, 然后按这种路径返回。

这种情况,SS服务器看到的目标网站ip的tor的节点,从而不会阻断传送。
但是由于tor主要是用来匿名的,这种浪费tor的带宽的做法不推荐。

第二种方法: 利用gost tunnel的多级代理转发进行嵌套:



项目地址: https://github.com/ginuerzh/gost

我必须承认这个程序员的确非常厉害,利用简短的go代码能够创建链式的代理嵌套,堪称天才程序员。

前提: 你必须有一个VPS, 最便宜的班瓦工就可以: 因为只需要你的VPS能够跟前面的SS服务器能高速通信即可。

首先在VPS上部署gost tunnel:
wget https://github.com/ginuerzh/gost/releases/download/v2.2-rc1/gost_2.2-rc1_linux_amd64.tar.gz
tar -xvf gost_2.2-rc1_linux_amd64.tar.gz
nohup ./gost -L=socks://:2020 &

表示vps服务端监听在2020端口。

然后本机同样下载gost tunnel,
解压以后依次运行:
1. sslocal  -c ss配置文件名.json          //链接到第一层SS服务器
2. ./gost -L=:1010 -F=socks://127.0.0.1:1080 -F=socks://VPS IP:2020
//通过第一层SS服务器嵌套连接到自己VPS的远程2020端口, 本机在1010端口监听。
那么本机调用http: 127.0.0.1: 1010端口就可以访问那些被SS服务器禁用的敏感网站了。

这种情况的网络路由是:  本机gost监听端口=》本机 1080端口=》SS服务器=》VPS服务器=》目标网站。然后按原路返回给本机

这种情况,SS服务器看到的目标网站是你自己VPS的IP, 它并不清楚中间传送的内容和最终目标IP(gost socks两端会默认进行进行加密),从而不会阻断传送。

费用组成: shadowsocks.com的12.95年付美刀: 约108人民币+ 9.99班瓦工年付费用:约人民币68元 =共 人民币176/年


有人说: 那还不如直接把SS作为GAE的代理,我不建议这么做: GAE的先天机制决定了: 这种非透明的代理注定了会出现各种各样的问题,没有人能把它做的很完美。况且现在还没有真正非常牛逼的程序员能把GAE做的非常好,我也最近很烦GAE代理,具体原因不想解释,从今以后也绝不会再用GAE代理。

回到前面的话题,这种嵌套代理还可以引申出一种新的思路: 国内VPS中转海外VPS。 海外VPS不需要很高速,只需要能够跟国内的VPS高速通讯即可,这意味着你只要买像班瓦工工这样便宜的VPS就可以了,但是国内的VPS的有点贵: 想阿里云这种真的非常贵,得想办法搞到便宜的国内VPS。

本机gost监听端口=》本机 1080端口=》国内VPS=》海外VPS=》目标网站。然后按原路返回给本机。
这里的假想前提是: SS是部署在国内VPS上的,gost是部署在海外VPS上的。

当然也可以国内和海外VPS都部署gost,这时的网络路由是:

本机gost监听端口=》国内VPS gost远程监听端口=》海外VPS远程监听端口=》目标网站。然后按原路返回给本机。

服务器端的部署(举例):

1. 海外VPS:
nohup ./gost -L=socks://:3030 &

2. 国内VPS:
nohup ./gost -L=socks://:2020 &

3. 本机客户端:

./gost -L=:1010 -F=socks://国内VPS IP:2020 -F=socks://海外VPS IP:3030

本地监听在1010端口,本地调用http: 127.0.0.1:1010代理即可。

多层代理的思路会有点复杂,超过二层以上的嵌套,脑袋估计会转不过来,二层代理嵌套基本还可以接受。

以上就是关于多层嵌套代理的基本用法,希望对各位有所帮助。
来自https://groups.google.com/forum/#!topic/fqlt/ZfP-7Q3BVUw
相关帖子:http://briteming.blogspot.com/2015/05/gost.html