通过国内服务器转发流量科学上网

从除夕那天开始,我的代理服务器就被GFW墙掉了,前些天重新搭了一个,先是被封端口,过了几天ip又被墙掉了,为了解决这个问题,因此有了这篇文章。
具体方法借鉴于该篇文章:Click Here
如果您不愿多点击一次链接,就请继续往下看,本文对于上述博文稍作整理。
完成此博文所介绍的方法的基本条件:

  • 一台国内服务器,如阿里云腾讯云等,我这里以阿里云为例,系统为Ubuntu 16.04。
  • 一台用于代理的服务器,我这里以Digitalocean为例,系统为Ubuntu 18.04.

一、简介

通过国内服务器转发流量看起来是多此一举,从“国内->境外VPS“变成了”国内->国内服务器->境外VPS“,但国内大厂的服务器出入境走的都是高级路线,国内服务器与我们的延迟大概在50ms以内,这样算起来延迟是降低了。
左边为自己网络ping境外VPS和阿里云,右边为阿里云ping境外VPS
从上图我们可以明显看到右边加上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
2
3
4
5
6
stream {
server {
listen Port; # 国内服务器的监听端口
proxy_pass 境外VPS的IP:Port;
}
}

保存之后配置开机自启以及启动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
2
3
4
5
6
# 允许某个端口连接
ufw allow port
# 允许此IP访问所有的本机端口
ufw allow from IPv4
# 开启防火墙
ufw enable

经过上述配置后,GFW探测你的VPS,除了ssh和网站的常用端口外,ss/ssr的端口根本无法连接,IP地址的被墙的几率自然就降低了。

将境外VPS伪装的更像一个网站

为了把境外VPS做的更像一个网站,因此我们在这台服务器上再放一些web页面。
同样的安装nginx

1
apt install nginx

nginx安装完成的时候会自动启动,打开浏览器输入你服务器的IP地址,你会看到如下的界面。
Welcome
nginx的默认目录在/var/www/html/
我们将静态页面放到这里面就可以了,一定要有个index.html哦。
因为我的博客repo在我的github上,因此我就直接git clone到上面这个目录下了。

1
2
3
4
5
cd /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上的,国内的服务器只是起到了一个转发流量的作用。

Mac使用小技巧 Solve无法访问github的问题
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×