协议躲喵喵

1.概述

本次躲喵喵使用websocket+tls+web方式。我们先要搭建一个网站,而V2Ray客户端访问网站的特定路径时能实现科学飞飞飞。在浏览器上打开网页时会显示bad request,当然也可以搭建一个简单网站。

前期需要准备的内容如下:

1.域名与CDN,由于使用了cloudflare,所以需要在cloudflare上做A记录。

2.服务器上开启BBR

3.服务器上搭建了V2Ray


2.V2Ray服务器配置文件内容

修改配置文件/usr/local/etc/v2ray/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
30
31
32
33
34
35
36
37
38
39
{
"inbounds": [{
"port": xxxxx, //此处为安装时生成的端口,可修改随意,但是保证和下面提到的端口号相同
"listen":"127.0.0.1", //设置了监听地址后,后续在客户端上直接使用服务器IP是无法连接成功的
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "xxxxxxxxx", //此处为安装时生成的id
"level": 1,
"alterId": 64 //此处为安装时生成的alterId
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/xxx" //此处为路径,需要和下面NGINX上面的路径配置一样
}
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}

修改完配置后,记得重启V2Ray使配置生效。


3.安装Nginx

3.1 Nginx初步安装

  1. 安装Nginx软件包:

    yum install epel-release

    yum install nginx

  2. 启动Nginx

    systemctl start nginx

  3. 测试启动是否生效可以使用命令

    curl -I 127.0.0.1

  4. 设置开机自启

    systemctl enable nginx

  5. 在nginx安装目录下创建ssl文件夹

    mkdir /etc/nginx/ssl

  6. 编辑配置文件vi /etc/nginx/conf.d/default.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    server {
    listen 443 ssl;
    server_name dilidonglong.com; #修改为自己的域名
    ssl_certificate ssl/dilidonglong.com.crt; #修改为自己的域名
    ssl_certificate_key ssl/dilidonglong.com.key; #修改为自己的域名

    location /xxx { #修改为你自己的路径,需要和V2RAY里面的路径一样
    proxy_redirect off;
    proxy_pass http://127.0.0.1:xxxxxx; #修改为你自己的v2ray服务器端口
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 60s;
    proxy_read_timeout 86400s;
    proxy_send_timeout 60s;
    }

    }

3.2 生成ssl/tls证书并配置

3.2.1 设置DNS

注册一个cloudflare账号,添加自己已注册的域名,注意将域名A记录的Proxy status设置为橙色云朵状态,这样才会走cloudflare的CDN,如果设置为灰色云朵状态,表示不走cloudflare的CDN,而是域名直连你自己的服务器,然后在你的域名注册服务商那里将域名的dns服务器修改为cloudflare提供的dns。


点击cloudflare的SSL/TLS菜单,在SSL的那一栏,将右侧的下拉框设置为Full(Full表示客户端->CDN,CDN->服务器的数据传输都加密),默认为Flexible(Flexible表示客户端->CDN加密,CDN->服务器不加密),因为服务器已经开启了tls,所以这里需要设置为Full。

3.2.2 设置API TOKEN

访问 https://dash.cloudflare.com/profile/api-tokens

添加一个API TOKEN,设置Zone.Zone的读权限以及Zone.DNS的写权限,等会会用到这个API TOKEN。如下图:





3.2.3 找到Key

3.2.4 找到账号ID

登陆cloudflare后,在导航栏可以看到ID,红框内即是账号ID

3.2.5 配置acme

在cloudflare设置好后,接下来再在服务器上输入下列命令

1
2
3
4
5
6
7
[root@ecs-M79hl ~] yum install -y socat
[root@ecs-M79hl ~] curl https://get.acme.sh | sh
[root@ecs-M79hl ~] source ~/.bashrc
[root@ecs-M79hl ~] export CF_Token="3.2.2步"
[root@ecs-M79hl ~] export CF_Key="3.2.3步"
[root@ecs-M79hl ~] export CF_Account_ID="3.2.4步"
[root@ecs-M79hl ~] export CF_Email="[email protected]"

3.2.6 使用 ZeroSSL 进行注册

acme.sh 以前使用 Let’s Encrypt 进行证书注册,但是现在改用ZeroSSL 进行注册,所以需要进行相关配置

官网注册:https://zerossl.com/

注册完成之后进入 Dashboard,选择右侧的 Developer 标签,生成 EAB Credentials 并记录下来。

1
2
3
[root@ecs-M79hl ~]acme.sh --register-account --server zerossl \
--eab-kid 上图获得的EAB KID \
--eab-hmac-key 上图获得的EAB HMAC Key

3.2.7 签发证书

1
2
3
4
5
6
[root@ecs-M79hl ~]acme.sh --set-default-ca --server zerossl
[root@ecs-M79hl ~]acme.sh --issue --dns dns_cf -d dilidonglong.com -d pigyun.dilidonglong.com -k ec-256
[root@ecs-M79hl ~]cat ~/.acme.sh/dilidonglong.com_ecc/fullchain.cer > /etc/nginx/ssl/dilidonglong.com.crt
[root@ecs-M79hl ~]cat ~/.acme.sh/dilidonglong.com_ecc/dilidonglong.com.key > /etc/nginx/ssl/dilidonglong.com.key
[root@ecs-M79hl ~]systemctl restart nginx
[root@ecs-M79hl ~]acme.sh --installcert -d dilidonglong.com -d pigyun.dilidonglong.com --fullchainpath /etc/nginx/ssl/dilidonglong.com.crt --keypath /etc/nginx/ssl/dilidonglong.com.key --ecc --reloadcmd "systemctl reload nginx"

4.客户端配置