从除夕那天开始,我的代理服务器就被GFW墙掉了,前些天重新搭了一个,先是被封端口,过了几天ip又被墙掉了,为了解决这个问题,因此有了这篇文章。
具体方法借鉴于该篇文章:Click Here
如果您不愿多点击一次链接,就请继续往下看,本文对于上述博文稍作整理。
完成此博文所介绍的方法的基本条件:
- 一台国内服务器,如阿里云腾讯云等,我这里以阿里云为例,系统为Ubuntu 16.04。
- 一台用于代理的服务器,我这里以Digitalocean为例,系统为Ubuntu 18.04.
一、简介
通过国内服务器转发流量看起来是多此一举,从“国内->境外VPS“变成了”国内->国内服务器->境外VPS“,但国内大厂的服务器出入境走的都是高级路线,国内服务器与我们的延迟大概在50ms以内,这样算起来延迟是降低了。
从上图我们可以明显看到右边加上ping阿里云的延迟明显要比直接ping境外vps的延迟要小很多。
该方法属于硬件加速
,代价是要多出额外的成本租一台国内服务器,优点是更稳定,可以有效防止境外IP或者端口被封。
而国内服务器在这里充当的作用就是流量转发。
该方法共分为三个步骤:
- 国内服务器配置流量转发程序
- 境外VPS配置代理程序
- 自己的机器配置代理至国内服务器
还可以在境外的VPS上配置一些web页面,只对外开放80/443端口,其他端口对你的国内服务器的IP地址开放,这样当GFW扫描的时候也只是觉得这是一个网站而已。
二、国内服务器配置流量转发程序
这里用到nginx来配置流量转发
安装nginx
1 | sudo apt install nginx |
配置文件修改
1 | vi /etc/nginx/nginx.conf |
添加
1 | stream { |
保存之后配置开机自启以及启动nginx
1 | systemctl enable nginx && systemctl start nginx |
如果你的服务器是阿里云或者腾讯云诸如此类,还需要配置安全组规则,开放TCP连接的listen中配置的端口。
如果你之前配置过了代理服务器,那现在将自己机器上的代理软件的IP地址和端口号改为国内这台服务器的地址和端口,应该就能实现科学上网了。
如果不行,请检查一下国内服务器有没有配置防火墙规则等。
三、配置境外VPS
如果之前你的境外VPS没有配置过代理程序,配置代理的方法具体请参考我的另一篇文章:Click Here
对境外VPS配置一番,主要是为了降低GFW的干扰,减少IP地址被墙的几率。除了ssh的22端口,网站的80/443端口,其他端口只允许国内那台服务器的连接。
防火墙配置
这里使用的是ubuntu的防火墙ufw
。
ufw命令举例:
1 | # 允许某个端口连接 |
经过上述配置后,GFW探测你的VPS,除了ssh和网站的常用端口外,ss/ssr的端口根本无法连接,IP地址的被墙的几率自然就降低了。
将境外VPS伪装的更像一个网站
为了把境外VPS做的更像一个网站,因此我们在这台服务器上再放一些web页面。
同样的安装nginx
1 | apt install nginx |
nginx安装完成的时候会自动启动,打开浏览器输入你服务器的IP地址,你会看到如下的界面。
nginx的默认目录在/var/www/html/
我们将静态页面放到这里面就可以了,一定要有个index.html哦。
因为我的博客repo在我的github上,因此我就直接git clone到上面这个目录下了。
1 | cd /var/www/html/ |
再次在浏览器输入服务器ip地址就会发现有东西显示了。
这样我们的境外VPS伪装完成了。
四、关于自己机器上的代理配置说明
如果你之前用过shadowsocks诸如此类代理软件,就是相当于把ip地址和端口号换成了国内服务器的ip地址和在nginx中配置的监听端口号,其他的密码等都是和之前一样的,因为代理服务还是配置在境外VPS上的,国内的服务器只是起到了一个转发流量的作用。