Centos6 安装 V2ray + 配置 SSL TLS CDN 全记录

一、前言

在我早期的爬墙经历里,我是非常热衷于自己动手造梯子的,并不是说买别人的机场服务不好,而是自己造的梯子稳定性和速度绝对是第一,也极少担心被墙。

来自2021年的更新: 现在自建梯子更推荐应急使用, 主力还是购买机场的服务比较好。

大学在读期间成功申办了一张某银行的 Visa 信用卡,因此褥到了 Google Cloud 的一年半免费试用(第一次申请成功后隔了半年通过 YouTube 上的教程成功重置试用时间,因此总试用时间是一年半)。

眼下,12月份 Google Cloud 的试用就要到期,而最低配机器算上流量费估计每个月也得二三十,对我来说还是蛮昂贵的,因为我除了爬墙就不会用 Google Cloud 的机器做别的事情了。

为了避免12月份之后无梯子可用,今天我尝试了在搬瓦工Centos6下安装并配置V2ray+SSL+TLS+CDN,写下此文作为记录。

二、开始搭建吧

由于我的搬瓦工机器是较早购买的,安装的 CentOS6 系统,并不受 V2ray 官方提供的安装脚本支持,因此在搜索引擎上查找到一份解决方案,记录于此。 (来源:http://bbs.itzmx.com/forum.php?mod=viewthread&tid=89057 )

注意!!此博文更偏向于写给自己看的笔记,因此只描述关键步骤,非关键步骤将会略过

如果某位萌新路人看到了这篇文章,也可以发 email 跟我交流: [email protected]

1、CentOS6 下安装 V2ray

下载&安装官方安装脚本

1
bash <(curl -L -s https://install.direct/go.sh)

会提示以下报错

1
2
3
4
5
6
7
Updating software repo
Failed to set locale, defaulting to C
Repository epel is listed more than once in the configuration
Installing daemon
Failed to set locale, defaulting to C
Repository epel is listed more than once in the configuration
Failed to install daemon. Please install it manually.

解决办法
将下述代码保存为/etc/init.d/v2ray

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/sh
#
# v2ray Startup script for v2ray
#
# chkconfig: - 24 76
# processname: v2ray
# pidfile: /var/run/v2ray.pid
# description: V2Ray proxy services
#

### BEGIN INIT INFO
# Provides: v2ray
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: V2Ray proxy services
# Description: V2Ray proxy services
### END INIT INFO

DESC=v2ray
NAME=v2ray
DAEMON=/usr/bin/v2ray/v2ray
PIDFILE=/var/run/$NAME.pid
LOCKFILE=/var/lock/subsys/$NAME
SCRIPTNAME=/etc/init.d/$NAME
RETVAL=0

DAEMON_OPTS="-config /etc/v2ray/config.json"

# Exit if the package is not installed
[ -x $DAEMON ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Source function library.
. /etc/rc.d/init.d/functions

start() {
local pids=$(pgrep -f $DAEMON)
if [ -n "$pids" ]; then
echo "$NAME (pid $pids) is already running"
RETVAL=0
return 0
fi

echo -n $"Starting $NAME: "

mkdir -p /var/log/v2ray
$DAEMON $DAEMON_OPTS 1>/dev/null 2>&1 &
echo $! > $PIDFILE

sleep 2
pgrep -f $DAEMON >/dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
success; echo
touch $LOCKFILE
else
failure; echo
fi
return $RETVAL
}

stop() {
local pids=$(pgrep -f $DAEMON)
if [ -z "$pids" ]; then
echo "$NAME is not running"
RETVAL=0
return 0
fi

echo -n $"Stopping $NAME: "
killproc -p ${PIDFILE} ${NAME}
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${LOCKFILE} ${PIDFILE}
}

reload() {
echo -n $"Reloading $NAME: "
killproc -p ${PIDFILE} ${NAME} -HUP
RETVAL=$?
echo
}

rh_status() {
status -p ${PIDFILE} ${DAEMON}
}

# See how we were called.
case "$1" in
start)
rh_status >/dev/null 2>&1 && exit 0
start
;;
stop)
stop
;;
status)
rh_status
RETVAL=$?
;;
restart)
stop
start
;;
reload)
reload
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|reload|restart}" >&2
RETVAL=2
;;
esac
exit $RETVAL

赋予执行权限,加入开机启动

1
2
chmod a+x /etc/init.d/v2ray
chkconfig v2ray on

验证是否能够启动

1
2
service v2ray start
启动 v2ray: [确定]

停止 V2ray 服务

1
service v2ray stop

2、获取 SSL 证书

证书可以使用 Let’s Encrypt 生成,我这里是用的腾讯云的诚信亚洲免费证书,具体流程请询问搜索引擎,这里贴一个申请链接:https://console.cloud.tencent.com/ssl/apply

3、服务器安装 Nginx

具体步骤请询问搜索引擎。

4、配置 V2ray

编辑v2ray配置文件

1
2
cd /etc/v2ray
vim config.json

用以下内容替换

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
{
"inbounds": [
{
"port": 10000, # 请留意此行
"listen":"127.0.0.1", # 只监听本地,避免被外部扫端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "", # uuid随机值,可在uuid.online生成
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/ray" # 请留意此行
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}

配置完毕后启动 v2ray 服务

1
service v2ray start

5、配置 Nginx 反向代理

首先要上传SSL证书到服务器,步骤略,腾讯云有相关教程。

然后,在 nginx 配置文件加入如下内容

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
server {
listen 80;
server_name 你的域名;
charset utf8;

rewrite ^(.*)$ https://你的域名$1 permanent;
}

server {
listen 443;
server_name 你的域名;
charset utf8;
ssl on;
ssl_certificate /etc/nginx/ssl/1_xxx_bundle.crt; # 改成你的ssl证书目录
ssl_certificate_key /etc/nginx/ssl/2_xxx.key; # 改成你的ssl目录
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 按照这个套件配置
ssl_prefer_server_ciphers on;

root /var/www/xxx/; # 网站目录,此可以用于伪装正常网站,随便放点什么网页在里面
index index.html index.htm;
error_page 404 403 500 502 503 504 /404.html;

location /ray { # 此处/ray要与v2ray配置文件里的path对应上
proxy_redirect off;
proxy_pass http://127.0.0.1:10000; # 此处10000要与v2ray配置文件里的port对应上
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;

# 以下两行可在 v2ray 的 access.log 日志文件里记录真实ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

配置完毕后重启 nginx 服务

1
service nginx restart

6、在 cdn 上增加 a 记录,指向这台服务器

cdn 建议使用 cloudflare, 此步骤略,请询问搜索引擎

同时还要配置 cdn 启动 https

7、配置 v2ray 客户端

建议使用图形化客户端,windows 下 可以使用 v2rayN, macOS 下使用 v2rayX, 去 github 上找一下都能找到。这里简述一下 v2rayX 里的关键字段怎么填写:(其实我是懒得截图上传图片)

地址:你的域名

端口:443

alterId: 64 (跟你服务端上v2ray配置文件保持一致)

level: 0

Security: 这是加密方式,随便选,都可以

Network: ws

勾选“使用TLS”

完成了!!!可以上网冲浪了!!

如果访问不了的话,检查一下你本机的时间是否与服务器时间差距过大(不能超过90s)

1
2
date #查看当前时间
date -r 13:00:00 #设置时间