1. 简介
1.1. 为什么用国内服务器?
国内连接外网时,本地的营运商和网络服务会极大影响我们连接外网的能力。此时外网服务器的路由配置就及其重要,通常我们会选在路由较好的机房,比如使用了CN2之类线路的机房。但是,这种机房的成本通常是比较高的。利用国内的服务器,可以适当的提高我们连接外网的速度,同时也能规避掉流量审查。
国内服务器在企业网络下,一方面被监控流量的可能性比较小,另一方面延迟也会相对比较低。这样可以有效保护国外服务器ip和端口,免受封锁。此方法不止适用于v2ray,其他协议比如ssr,ss,trojan都适用此方法。
1.2. 如何加速访问v2ray?
通过stunnel软件,在国内服务器上安装stunnel做客户端,安装了v2ray的国外服务器上安装stunnel作为服务端。
原来访问v2ray来实现连接外网,现在是将v2ray的请求先发送给国内服务器,然后国内服务器通过stunnel将请求转发给国外服务器,再连接v2ray服务器访问外网。
1.3. 谁适合阅读此文?
这篇教程适合有linux基础的朋友阅读,对于安装好v2ray等加速器之后,想要进一步优化访问的朋友,可以试试去操作。很多朋友使用一键安装v2ray,因此对linux指令也不是很了解,就不建议阅读了,这不是一篇傻瓜教程,遇到的一些问题需要自行解决。
2. 国内服务器的配置
2.1. 服务器的选择
国内服务器的价格都是比较昂贵的,在这里用到的服务器配置不用太高,主要需要注意的是带宽可以有2M以上的。阿里云的服务器,最便宜的一款新人只要一年100左右,腾讯云也有类似优惠。如果没有优惠了可以去淘宝试试能不能买到低价的。
2.2. 防火墙设置
在购买好服务器之后,需要在服务商后台开启防火墙,只用开启一个就行,我这里开启的是8888
此外,需要在登录linux系统之后通过firewall-cmd命令在linux机器上来开启8888端口。如果没有firewall-cmd可以用apt或者yum指令安装。开启端口步骤如下:
- 首先,使用以下命令检查firewalld服务的状态:
1 | sudo systemctl status firewalld |
- 如果状态显示为”active”,则表示firewalld服务正在运行。如果状态显示为”inactive”,则需要启动firewalld服务:
1 | sudo systemctl start firewalld |
- 确认firewall-cmd工具可用。使用以下命令检查firewall-cmd是否可用:
1 | firewall-cmd --version |
- 使用以下命令添加或打开8888端口:
1 | sudo firewall-cmd --add-port=8888/tcp --permanent |
这将在防火墙规则中永久性地添加8888端口。
- 重新加载防火墙以使更改生效:
1 | sudo firewall-cmd --reload |
现在,8888端口已经通过firewall-cmd成功地打开了。请注意,使用sudo命令来获取管理员权限执行上述命令。
2.3. 安装和配置stunnel
- 安装stunnel,对于Debian和Ubuntu:
1 | apt install stunnel |
对于Centos:
1 | yum install stunnel |
- 生成pem证书
证书用来建立TSL连接,在stunnel服务端和客户端使用相同的证书,生成指令
1 | openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem |
将证书移到/etc/stunnel/ 目录下,
1 | mv stunnel.pem /etc/stunnel/ |
- 配置stunnel,配置文件需要手动在文件中编辑,配置文件储存在/etc/stunnel/stunnel.conf中,没有的话直接新建一个就行,stunnel会自动读取此文件。
通过vim打开此文件
1 | vim /etc/stunnel/stunnel.conf |
并编辑内容如下:
1 | client = yes |
accept后跟我们之前开启的端口,用于监听请求,请求将被转发到connect后面的ip和端口,connect的ip为v2ray的ip,端口是stunnel服务端的端口,服务端也开启8888作为接受客户端请求。
依次按ESC,冒号和wq,退出编辑器并保存内容。
- 输入指令开启stunnel
1 | stunnel |
没有输出内容,则启动成功,也可以通过指令
1 | lsof -i :8888 |
查看端口是否与stunnel绑定成功。
tips:可以在另一台linux机器上,通过指令 telnet ip 8888 查看端口是否能建立连接,如果不行,说明防火墙没设置好
3. 国外服务器的配置
在安装了v2ray的机器上,我们需要安装stunenl服务端,v2ray可以在网上找一键安装脚本安装。
3.1. 防火墙配置
根据2.2章节描述,修改防火墙规则,开启8888端口
3.2. 安装和配置stunnel服务端
- 按照2.3节指导,安装stunnel
- pem证书需要与客户端的一致,因此需要将国内服务器上 /etc/stunnel/stunnel.pem文件拷贝到国外服务器的/etc/stunnel/stunnel.pem文件里,可以通过sftp,或者mac电脑上的scp指令拷贝。
Mac电脑拷贝方法是,先将文件拷贝到本地,再上传另一台服务器。
参考指令:
1 | scp root@china_server_ip:/etc/stunnel/stunnel.pem /Users/username/ |
这里root是远程服务器的用户名,china_server_ip是IP地址,/Users/username是本地路径。运行指令后,根据要求输入密码就行
再将本地保存的文件,上传到国外服务器。
1 | scp /Users/username/stunnel.pem root@oversea_server_ip:/etc/stunnel/stunnel.pem |
- vim打开并修改配置文件
1 | cert = /etc/stunnel/stunnel.pem |
这里的accept=8888承接国内服务器的connect指令中的端口配置。connect的地址是本地的443端口,由于v2ray配置的端口是443,因此这里填写443.
- 通过stunnel指令运行stunnel服务端
4. 总结
在配置好stunnel客户端和服务端之后,现在需要修改v2ray客户端中的原有配置,将服务器地址,从原来的国外服务器修改为国内服务器地址,将端口号由原来v2ray配置的443修改为stunnel客户端的accept端口8888。至此,stunnel的配置就完成了。
此教程是基于原来国外服务器已经安装好了v2ray, ssr等加速器的前提,并且IP在国内是可以ping通的。否则国内服务器也无法连接。