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客户端下载及使用教程
配置信息如下图