v2ray+ws+tls+CDN这项技术在过去是很牛B的搭建组合技术,到现在仍然独具风骚,成为目前最稳定不被墙的主流搭建技术之一,由于每个人对这项技术的认知水平及写法不同,所以为方便更多朋友对此项技术的理解应用,我将专业复杂的搭建技术通通化简,让你一目了然掌握自己搭建的每一步。
原理解析:这里使用到v2ray的vmess协议,将访问原始数据打包成vmess数据包,交给websocket协议打包成websocket数据包,再加上tls头(https加密)发送到域名指向的服务端,由服务端反向一层一层的解包,最后由v2ray的服务端完成科学上网代理服务。下图为整个技术程序交互的流程图
这里使用nginx反向代理中转v2ray服务。
搭建需要域名一个,没有的可以到freenom官网免费申请,不会申请可以观看这期节目一次性获取5个域名使用
搭建还需要vps一台,若没有,可以到我vps评测页面选购
有关于域名解析及CDN代理开启本站之前讲述,这里不再赘述,不清楚的可以到这里充电
这里使用v2ray官方一键安装脚本安装。登录vps终端输入以下命令安装。
#系统时间与本地时间一致的命令: cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #查看本地时间 date -R #v2ray官方脚本安装命令: bash <(curl -L -s https://install.direct/go.sh)
安装完成,记录下UUID号和开放的端口号
完成安装后,输入以下命令完成配置内容更换。vi /etc/v2ray/config.json,进入配置文件,将原有信息删除,这里键盘输入dG即可清除所有内容,粘贴一下内容到配置文件中,然后按键盘的esc键,输入:wq保存并退出
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbound": {
"port": 33689,
"listen": "127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "11c35c70-ce9b-4fa3-a6c2-6e590dc64bc7",//注意更改为自己的UUID
"level": 1,
"alterId": 64
}
]
},
"streamSettings":{
"network": "ws",
"wsSettings": {
"path": "/ray" //与nginx配置相关
}
}
},
"outbound": {
"protocol": "freedom",
"settings": {}
},
"inboundDetour": [],
"outboundDetour": [
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"routing": {
"strategy": "rules",
"settings": {
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "blocked"
}
]
}
}
} 最后将v2ray重启,使其配置文件生效,命令如下:systemctl retart v2ray
域名获取证书有很多种途径,其中免费途径有以下两种,这里仅列出最简单和较为常用的获取方式。
使用亚洲诚信获取的证书免费有效期是一年,而且获取方式快,操作申请简单,(最最主要的可以看到申请不成功的报错细节),所以这是本博主强烈推荐大家使用的方式。有关于亚洲诚信申请方式本站相关博文已说,这里不再赘述,需要充电的朋友请点击此处
使用Let’s Encrypt申请证书免费有效期为三个月,需要自行在vps添加脚本自动申请续期。Let’s Encrypt的客户端是certbot,需要下载到vps与Let’s Encrypt通信验证获取ssl证书。
#下载客户端 wget https://github.com/certbot/certbot/archive/v1.6.0.tar.gz #下载报错,请先执行以下程序 yum install -y wget #解压文件 tar xzvf v1.6.0.tar.gz #进入目录 cd certbot-1.6.0 #执行以下程序,检查安装是否成功 cd ~/certbot ./certbot-auto --help
输入以上命令,若弹出帮助命令,证明安装成功。
申请证书有两种渠道,第一种(占用端口通信验证),由vps的web服务器与Let’s Encrypt网络通信,通信端口为80,因此,这里必须先停下当前web服务,让出80通信端口;
#停止nginx systemctl stop nginx #获取证书, --standalone 参数:使用内置web server. --email 参数:管理员邮箱,证书到期前会发邮件到此邮箱提醒. -d 参数:要绑定的域名,同一域的不同子域都要输入. ./certbot-auto certonly --standalone --email admin@yugogo.xyz -d yugogo.xyz -d www.yugogo.xyz #启动nginx systemctl start nginx
申请证书第二种渠道(临时目录通信验证):不用停止当前vps的web服务,需要在web站点根目录下新建可访问的文件夹,外界可通过域名加此访问目录即可通信。
#--webroot 参数:指定使用临时目录的方式. -w 参数:指定后面-d 域名所在的根目录, 如果一次申请多个域的, 可以附加更多 -w...-d... 这段. ./certbot-auto certonly --webroot --email admin@yugogo.xyz -w /usr/share/nginx/html -d yugogo.xyz -d www.yugogo.xyz
注意:以上两种渠道二选其一,完成以上操作,即可取得SSL证书, 证书文件保存在 “/etc/letsencrypt/live/根域名/” 目录下, 会产生 2 个文件, 其中1个证书文件, 1个私钥文件. 不要移动证书的位置, 以免续期时出现错误。有关于Certbot工具更多命令详情可以谷歌一下。
刚刚提到证书到期需要续期,这里依然使用以上两种方式获取证书,只不过需要在vps写入脚本到期自动获取。
#!/bin/sh
#停止 nginx 服务,使用 --standalone 独立服务器验证需要停止当前 web server.
systemctl stop nginx
if ! /path/to/certbot-auto renew -nvv --standalone > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
cat /var/log/letsencrypt/renew.log
exit 1
fi
#启动 nginx
systemctl start nginx #!/bin/sh
# This script renews all the Let's Encrypt certificates with a validity < 30 days
if ! /path/to/certbot-auto renew > /var/log/letsencrypt/renew.log 2>&1 ; then
echo Automated renewal failed:
cat /var/log/letsencrypt/renew.log
exit 1
fi
# 需要重启nginx证书才能生效
systemctl restart nginx 上面两个脚本中的/path/to/certbot-auto代表你下载客户端解压后的目录,其中目录下有个certbot-auto。
选取一种方式,将对应的脚本保存为 certbotrenew.sh。
添加可执行权限
chmod +x certbotrenew.sh
编辑 crontab 配置文件或执行 crontab -e 添加 cron 任务
#编辑定时任务 sudo crontab -e
这里设置为每月28号23点执行此脚本:
0 23 28 * * /bin/sh /home/michael/certbot/certbotrenew.sh
按esc键,:wq保存并退出。
接下来回到root目录下,cd ~先创建安装Nginx源,输入以下命令创建安装
#以下是nginx安装命令: vi /etc/yum.repos.d/nginx.repo #复制一下内容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 #保存退出,然后执行 sudo yum install nginx systemctl start nginx.service # 启动Nginx服务 systemctl enable nginx.service #开机自启
以上完成Nginx的下载安装,Nginx配置文件路径/etc/nginx/nginx.conf
配置前,必须先完成域名申请证书步骤。然后知晓证书存放路径,如上述获取证书路径:“/etc/letsencrypt/live/根域名/”。找到自己安装nginx的配置文件,如我的nginx文件路径 /etc/nginx/conf.d/default.conf,使用vi /etc/nginx/conf.d/default.conf 回车,即可进入配置文件编辑,粘贴以下配置信息,将你的域名及个人信息更改即可保存。
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl_certificate /etc/letsencrypt/live/yugogo.xyz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yugogo.xyz/privkey.pem;
#安全链接可选的加密协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#可选的加密算法,顺序很重要,越靠前的优先级越高.
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
root /usr/share/html;
index index.html index.htm index.nginx-debian.html;
server_name yugogo.xyz; #你的服务器域名
location /ray { #/ray 路径需要和v2ray服务器端,客户端保持一致
proxy_redirect off;
proxy_pass http://127.0.0.1:33689; #此IP地址和端口需要和v2ray服务器保持一致,
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
} 重启nginx,使其修改配置生效
nginx -s reload systemctl restart nginx
这里本地电脑下载v2rayN客户端进行连接,下载地址及使用教程详见v2rayN客户端下载及使用教程
配置信息如下图