Categories: v2ray

纯手动搭建v2ray+ws+tls+CDN,安装史上最新最稳定不被墙的科学上网技术

搭建背景及准备

v2ray+ws+tls+CDN这项技术在过去是很牛B的搭建组合技术,到现在仍然独具风骚,成为目前最稳定不被墙的主流搭建技术之一,由于每个人对这项技术的认知水平及写法不同,所以为方便更多朋友对此项技术的理解应用,我将专业复杂的搭建技术通通化简,让你一目了然掌握自己搭建的每一步。

原理解析:这里使用到v2ray的vmess协议,将访问原始数据打包成vmess数据包,交给websocket协议打包成websocket数据包,再加上tls头(https加密)发送到域名指向的服务端,由服务端反向一层一层的解包,最后由v2ray的服务端完成科学上网代理服务。下图为整个技术程序交互的流程图

这里使用nginx反向代理中转v2ray服务。

域名和vps准备

搭建需要域名一个,没有的可以到freenom官网免费申请,不会申请可以观看这期节目一次性获取5个域名使用

搭建还需要vps一台,若没有,可以到我vps评测页面选购

安装流程

域名解析,CDN开启

有关于域名解析及CDN代理开启本站之前讲述,这里不再赘述,不清楚的可以到这里充电

安装配置V2ray

安装V2ray

这里使用v2ray官方一键安装脚本安装。登录vps终端输入以下命令安装。

#系统时间与本地时间一致的命令:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#查看本地时间
date -R
#v2ray官方脚本安装命令:
bash <(curl -L -s https://install.direct/go.sh)

安装完成,记录下UUID号和开放的端口号

配置v2ray

完成安装后,输入以下命令完成配置内容更换。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

设置域名获取SSL证书

域名获取证书有很多种途径,其中免费途径有以下两种,这里仅列出最简单和较为常用的获取方式。

启用亚洲诚信获取SSL证书

使用亚洲诚信获取的证书免费有效期是一年,而且获取方式快,操作申请简单,(最最主要的可以看到申请不成功的报错细节),所以这是本博主强烈推荐大家使用的方式。有关于亚洲诚信申请方式本站相关博文已说,这里不再赘述,需要充电的朋友请点击此处

启用Let’s Encrypt配置SSL证书

使用Let’s Encrypt申请证书免费有效期为三个月,需要自行在vps添加脚本自动申请续期。Let’s Encrypt的客户端是certbot,需要下载到vps与Let’s Encrypt通信验证获取ssl证书。

certbot下载

#下载客户端
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保存并退出。

安装配置Nginx

安装Nginx

接下来回到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

配置Nginx启用https并实现v2ray转发

配置前,必须先完成域名申请证书步骤。然后知晓证书存放路径,如上述获取证书路径:“/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客户端下载及使用教程

配置信息如下图

Little yu

Share
Published by
Little yu