【VPS】V2ray(VLess)+域名+TLS高阶搭建全过程
阅读数:
最近因为GFW升高了的原因,加上我的一个域名进入了黑名单(没错你没有看错,GFW会封域名了),我就在不断地搭建VPS。。。期间总要翻找好几篇BLOG,索性我就自己记录一下全过程吧。
郑重声明
本篇博文仅用于个人学习和技术交流,不得用于任何商业相关行为;任何媒体、网站或个人未经本人授权不得转载、链接、转贴或以其他方式复制发布/发表。谢谢!
背景
先说一下最近墙的动作:
- 识别了v2ray低版本协议,注意这里的低版本指的是v2ray-core版本低于
4.23.2
,低版本的协议有特征明显的识别码,会被墙识别从而封锁,所以看到这篇blog的同学务必将你们的v2ray客户端的v2ray-core版本更新到4.23.2版本以上 - 墙加入了对域名的封锁。为什么这么说,因为我之前用SS或者Brook的时候,也经常遇到IP被ban的情况,但是域名从来没出过问题。但是这次不一样,我新申请的VPS刚挂上域名下跑了1个小时,就立马被Ban,甚至我上了CDN还是不行,之前我怀疑是墙针对GCP的服务器IP群组,后来证实是域名的原因,我新申请了个域名后,就完全OK了。
- 之前有传的墙识别了v2ray协议,以后v2ray不行了 经过我这段时间的验证是谣言,v2ray协议还是安全的,升级后的v2ray+TLS+WS的方式完全ok,而且新的vless协议速度更快。
进入正题前,还需要确认以下:
- 这篇Blog不是针对小白的,你要具备相当的linux知识,包括命令行、ssh、firewall、nginx配置等知识。
- 你需要能登录购买VPS,我用的是GCP HK/台湾节点,速度快,最低的资源一台虚机可能一个月也就50RMB左右,而且GCP对新用户会赠送300刀,用一年没啥问题。
- 你要会申请域名,并且会申请TLS证书,域名申请推荐Godaddy,因为不需要实名认证和审核,一个普通的域名一年只要9RMB,到期了再换一个就ok了。证书推荐Letsencrypt,但是证书只有3个月有效,不过你可以通过脚本实现证书的自动更新。原本证书我用的是FreeSSL,可以直接免费1年的证书,但是最近他们改版了1年的证书需要手机实名认证,我就放弃了。
- 加了TLS+新版的v2ray协议后,理论上不需要CDN了,因为CDN的劣势就是速度,本来一个HK或者台湾的节点速度可以到40ms,加上CDN后妥妥200+ms,所以我个人不推荐CDN,除非你的VPS IP很宝贵,你要好好保护它。
VPS
虚机申请
第一步肯定是要先申请虚拟机,我这里以GCP举例。
新建一个虚拟机,按照图中的示例,选用最低配置就ok了(N1,f1-micro),这样一个月预计只需要6刀,算是很便宜了,而且如果这个VPS都是个人使用的话,server的cpu和内存基本上没什么消耗。
系统选用CentOS7,火墙上HTTP和HTTPS都要开一下,因为后面证书自动更新要用到80端口,我们的v2ray服务是搭载在443端口。当然这个后面可以改,如果你想把服务搭建在不同的端口上。
开启root远程登录及防火墙配置
个人习惯从本地免密ssh上服务器进行操作,并且上传文件什么的都很方便。还是以GCP为例,需要通过网页版的SSH工具进行一些配置。
登录后需要先切换到root账户,并进行关于sshd的相关配置
- 通过
sudo su
切换到root用户 - 编辑并修改
/etc/ssh/sshd_config
配置文件,找到如下配置项PermitRootLogin
,并改成yes
- 创建免密登录文件
/root/.ssh/authorized_keys
, 把你本地的公钥放进去 systemctl restart sshd
重启ssh服务,之后你就可以从你本地免密登录到虚机上去了
安装v2ray
v2ray的安装非常简单,一键安装的shell脚本维护在github上并且自动更新,帮你安装最新的v2ray-core版本
1 | bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) |
v2ray的安装很快就能完成,然后配置文件会被放到/usr/local/etc/v2ray/config.json
这个位置,我们先不着急,后面再统一讲配置文件
BBR加速
bbr加速的目的是让我们的tcp连接速度更快,也是通过一键脚本安装的,非常方便。
1 | wget --no-check-certificate https://github.com/sprov065/blog/raw/master/bbr.sh && bash bbr.sh |
如果没有安装wget直接yum install就可以,或者有的vps厂商的虚机yum源有问题,直接更新一下yum源就好。小问题自己google解决即可。
BBR可能需要5分钟左右完成安装,并且需要重启虚机。
nginx
这里安装nginx是为了后面TLS证书自动更新用的,如果你选择手动更新TLS证书,可以不需要nginx。nginx的安装和配置就不多说了,比较基础,yum install即可
域名
Godaddy上申请域名,然后在如下位置修改DNS为你第一步申请的虚机公网IP地址
然后你就可以在你本地ping一下你的域名,看看是否配置成功了
TLS证书
证书就到Letsencrypt申请就行,填写你上一步申请的域名,第一次可以选择手动验证,就是到你的域名服务商(Godaddy)上在DNS解析那里手动添加一下txt类型的解析(可以参见上图里面也有),然后等着Letsencrypt验证就好了。
说明一下,其实Letsencrypt中文版的网站做的不是很友好,感觉是对H5端的,而不是针对PC端的,而且页面跳转、提示啥做的都不太行,不过能找到不需要实名认证的就可以了,之前的freessl挺好的,现在要实名了就被我弃了。
验证通过后,就可以下载证书签名和秘钥了,我记得第一次一共下了5个文件吧,找那个fullchain.crt
和 private.pem
两个文件就够用了。
配置v2ray
现在所有的准备工作都齐全了,我们配置一下v2ray,然后基本服务端就搞定了。
一个完整的v2ray配置文件如下所示。注意我这里用的是v2ray最新的vless协议,这个协议相较之前的vmess协议更加轻量化,
1 | { |
配置文件不做过多的解释:
- 这里id你不能自己随便写,有的v2ray客户端支持随机生成
- 证书和秘钥需要上传至服务器,我是放到了
/app/tls
目录下 - port端口我是用的443,如果你用其他端口,需要相应打开防火墙的特定端口,如果不知道怎么操作,可以参见【Linux】Linux7中的防火墙 - Firewall这篇blog
接下来在命令行
1 | $ systemctl start v2ray |
就可以打开了,然后可以通过 systemctl status v2ray
查看v2ray服务是否正常启动了,如果异常,可以查看error文件找到错误原因
v2ray客户端
服务端搭好了,客户端就只需要相应得配置一下就好了。注意因为vless协议是最近新出的,有一些客户端还不支持,比如我之前用的v2rayX就停更了,所以换到了v2rayU,其实使用都大同小异。
协议选择vless,network选择ws,security选择tls,基本就没啥了。
iOS上的小飞机已经更新了支持vless协议了,同样配置就好。
TLS证书自动更新
前面提到了TLS的证书是3个月有效期,目前好像各大证书服务商都是3个月。不过已经有万能的网友做了自动更新的脚本,维护在github上,我们可以参照其做配置即可。因为我的证书是新申请的,目前还没有到期,所以没法验证我的脚本配置是否ok,这里就先todo一下,等验证无误后,再更新本blog。
脚本地址https://github.com/acmesh-official/acme.sh讲的非常详细,这里我就不多说了,看官方教程肯定是够用的了。
一些小tips
- 新出的torjan其实和vless基本上完全一致了,不过据测试torjan-go在性能上有一个质的飞越,我没有上torjan是因为懒,因为v2ray目前看是很安全的,而且我的需求也不大,加上torjan的客户端支持的还不是特别多,所以我就先等一等。。。
- 既然有了梯子了,git就可以走代理了,比如homebrew,不走代理速度30k+,上了代理直接飞起,git设置代理只需要两个命令
git config --global http.proxy 'socks5://127.0.0.1:1081'
和git config --global https.proxy 'socks5://127.0.0.1:1081'
,注意这里的端口看你自己的配置,见上图,可以自己指定sock的端口,我设置的是1081。 - 同样的原理,一些装在MBP上的APP,比如tg和google drive,可以通过代理APP
proxifier
走本地的sock端口