Contents
  1. 1. 背景
  2. 2. VPS
    1. 2.1. 虚机申请
    2. 2.2. 开启root远程登录及防火墙配置
    3. 2.3. 安装v2ray
    4. 2.4. BBR加速
    5. 2.5. nginx
  3. 3. 域名
  4. 4. TLS证书
  5. 5. 配置v2ray
  6. 6. v2ray客户端
  7. 7. TLS证书自动更新
  8. 8. 一些小tips
  9. 9. 致谢&&参考

最近因为GFW升高了的原因,加上我的一个域名进入了黑名单(没错你没有看错,GFW会封域名了),我就在不断地搭建VPS。。。期间总要翻找好几篇BLOG,索性我就自己记录一下全过程吧。

郑重声明

本篇博文仅用于个人学习和技术交流,不得用于任何商业相关行为;任何媒体、网站或个人未经本人授权不得转载、链接、转贴或以其他方式复制发布/发表。谢谢!

背景

先说一下最近墙的动作:

  1. 识别了v2ray低版本协议,注意这里的低版本指的是v2ray-core版本低于4.23.2,低版本的协议有特征明显的识别码,会被墙识别从而封锁,所以看到这篇blog的同学务必将你们的v2ray客户端的v2ray-core版本更新到4.23.2版本以上
  2. 墙加入了对域名的封锁。为什么这么说,因为我之前用SS或者Brook的时候,也经常遇到IP被ban的情况,但是域名从来没出过问题。但是这次不一样,我新申请的VPS刚挂上域名下跑了1个小时,就立马被Ban,甚至我上了CDN还是不行,之前我怀疑是墙针对GCP的服务器IP群组,后来证实是域名的原因,我新申请了个域名后,就完全OK了。
  3. 之前有传的墙识别了v2ray协议,以后v2ray不行了 经过我这段时间的验证是谣言,v2ray协议还是安全的,升级后的v2ray+TLS+WS的方式完全ok,而且新的vless协议速度更快。

进入正题前,还需要确认以下:

  1. 这篇Blog不是针对小白的,你要具备相当的linux知识,包括命令行、ssh、firewall、nginx配置等知识。
  2. 你需要能登录购买VPS,我用的是GCP HK/台湾节点,速度快,最低的资源一台虚机可能一个月也就50RMB左右,而且GCP对新用户会赠送300刀,用一年没啥问题。
  3. 你要会申请域名,并且会申请TLS证书,域名申请推荐Godaddy,因为不需要实名认证和审核,一个普通的域名一年只要9RMB,到期了再换一个就ok了。证书推荐Letsencrypt,但是证书只有3个月有效,不过你可以通过脚本实现证书的自动更新。原本证书我用的是FreeSSL,可以直接免费1年的证书,但是最近他们改版了1年的证书需要手机实名认证,我就放弃了。
  4. 加了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的相关配置

  1. 通过sudo su切换到root用户
  2. 编辑并修改/etc/ssh/sshd_config配置文件,找到如下配置项PermitRootLogin,并改成yes
  3. 创建免密登录文件 /root/.ssh/authorized_keys, 把你本地的公钥放进去
  4. 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.crtprivate.pem 两个文件就够用了。

配置v2ray

现在所有的准备工作都齐全了,我们配置一下v2ray,然后基本服务端就搞定了。

一个完整的v2ray配置文件如下所示。注意我这里用的是v2ray最新的vless协议,这个协议相较之前的vmess协议更加轻量化,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
"log": {
"loglevel": "warning",
"access": "",
"error": ""
},
"inbounds": [{
"port": 443,
"protocol": "vless",
"settings": {
"decryption": "none",
"clients": [
{
"id": "你自己生成的配对id",
"level": 0
}
]
},
"streamSettings": {
"network":"ws",
"security": "tls",
"wsSettings":{
"path":"/",
"headers":{}
},
"tlsSettings": {
"serverName": "你申请的域名",
"certificates": [{
"certificateFile": "证书文件位置-/app/tls/fullchain.crt",
"keyFile": "证书秘钥位置-/app/tls/private.pem"
}]
}
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}

配置文件不做过多的解释:

  • 这里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

  1. 新出的torjan其实和vless基本上完全一致了,不过据测试torjan-go在性能上有一个质的飞越,我没有上torjan是因为懒,因为v2ray目前看是很安全的,而且我的需求也不大,加上torjan的客户端支持的还不是特别多,所以我就先等一等。。。
  2. 既然有了梯子了,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。
  3. 同样的原理,一些装在MBP上的APP,比如tg和google drive,可以通过代理APP proxifier走本地的sock端口

致谢&&参考

Contents
  1. 1. 背景
  2. 2. VPS
    1. 2.1. 虚机申请
    2. 2.2. 开启root远程登录及防火墙配置
    3. 2.3. 安装v2ray
    4. 2.4. BBR加速
    5. 2.5. nginx
  3. 3. 域名
  4. 4. TLS证书
  5. 5. 配置v2ray
  6. 6. v2ray客户端
  7. 7. TLS证书自动更新
  8. 8. 一些小tips
  9. 9. 致谢&&参考