从除夕那天开始,我的代理服务器就被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来配置流量转发
安装nginx1sudo apt install nginx
配置文件修改1vi /etc/nginx/nginx.conf
添加
123456stream { server { listen Port; # 国内服务器的监听端口 proxy_pass 境外VPS的IP:Port;}}
保存之后配置开机自启以及启动nginx
1systemctl enable nginx && systemctl start nginx
如果你的服务器是阿里云或者腾讯云诸如此类,还需要配置安全组规则,开放TCP连接的listen中配置的端口。如果你之前配置过了代理服务器,那现在将自己机器上的代理软件的IP地址和端口号改为国内这台服务器的地址和端口,应该就能实现科学上网了。如果不行,请检查一下国内服务器有没有配置防火墙规则等。
三、配置境外VPS如果之前你的境外VPS没有配置过代理程序,配置代理的方法具体请参考我的另一篇文章:Click Here对境外VPS配置一番,主要是为了降低GFW的干扰,减少IP地址被墙的几率。除了ssh的22端口,网站的80/443端口,其他端口只允许国内那台服务器的连接。
防火墙配置这里使用的是ubuntu的防火墙ufw。ufw命令举例:
123456# 允许某个端口连接ufw allow port# 允许此IP访问所有的本机端口ufw allow from IPv4# 开启防火墙ufw enable
经过上述配置后,GFW探测你的VPS,除了ssh和网站的常用端口外,ss/ssr的端口根本无法连接,IP地址的被墙的几率自然就降低了。
将境外VPS伪装的更像一个网站为了把境外VPS做的更像一个网站,因此我们在这台服务器上再放一些web页面。同样的安装nginx
1apt install nginx
nginx安装完成的时候会自动启动,打开浏览器输入你服务器的IP地址,你会看到如下的界面。nginx的默认目录在/var/www/html/我们将静态页面放到这里面就可以了,一定要有个index.html哦。因为我的博客repo在我的github上,因此我就直接git clone到上面这个目录下了。
12345cd /var/www/html/git clone https://github.com/aestheticisma/aestheticisma.github.io# 之后将aestheticisma.github.io里面的东西全部移动到/var/www/html/下cd aestheticisma.github.io/cp -r ./* ..
再次在浏览器输入服务器ip地址就会发现有东西显示了。这样我们的境外VPS伪装完成了。
四、关于自己机器上的代理配置说明如果你之前用过shadowsocks诸如此类代理软件,就是相当于把ip地址和端口号换成了国内服务器的ip地址和在nginx中配置的监听端口号,其他的密码等都是和之前一样的,因为代理服务还是配置在境外VPS上的,国内的服务器只是起到了一个转发流量的作用。