搭梯子或机场:V2RAY配置WebSocket + TLS + Web + CDN

v2ray现在最安全的配置就是WebSocket + TLS + Web + CDN 了,访问的是443端口,直接访问是一个网站,通过客户端连接后他是个梯子(飞机)。外观上看是一个刮胡刀,原来呢,它是一个吹风机。

1、检查系统的时间和时区是否正确,否则无法正常连接

  • 本站博主曾因为服务器时间和时区的问题,导致无法正常连接V2Ray,折腾了一整天。
date
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date

2、自备海外VPS服务器

  • 自行购买一台海外VPS服务器,需要KVM的VPS,不要买成了OpenVZ,便宜没好货
  • VPS服务器需要自带独立IP

推荐:VPEasy,老牌服务商,最低套餐1024M/1CPU/25G SSD/1T流量 ,KVM架构,每年28刀,首年使用FirstYear优惠码,可以75折。博主6年前开始购买,已经使用6年了。

  • 海外VPS服务器一般需要海外Paypal账号,Visa或者MasterCard的信用卡进行支付美元。

3、自备CloudFlare账号和域名

  • 自行注册一个顶级域名,并将域名解析到`CloudFlare

3.1、国内目前最便宜的域名

  • DNSPod国内.xyz域名注册,最低注册6元2年

访问https://cloud.tencent.com/act/pro/DNSPodDomainsCarnival,领取2张5元代金券
然后注册10位数字以下的.xyz域名,新注册8元,续费8元
注册时,可以使用5元代金券,减后只需要3元
然后立即续费1年,又可以使用5元代金券,减后又只需要3元
记得国内注册域名,都需要实名认证

3.2、海外注册域名

推荐:https://namesilo.com,推荐top域名,每年4.89刀
下面为namesile.com的修改域名解析服务器的方法,仅供参考

  • 自行注册一个CloudFlare账号,并添加自己的域名

入口:https://www.cloudflare.com



  • CloudFlare里面的域名管理DNS设置中,新增二级域名A记录指向VPSIP地址Proxy Status为默认值Proxied
  • 二级域名增加后,需要取域名管理界面的SSL/TLS设置,把SSL/TLS的加密模式改为Full(strict),如果已经是的,就不用改。

4、安装Caddy2

提供web服务的还有NginxApache,为什么选用Caddy2
因为他简单,可以自动申请SSL证书。
原文中的Caddy已经无法正常从官网安装,这里是安装Caddy2的方法

可选从官网下载,或者从本站下载

从官网下载Caddy2

  • 需要包含CloudFlare插件
  • 目前为最新版本v2.3.0 h1:fnrqJLa3G5vfxcxmOH/+kJOcunPLhSBnjgIvjXV/QTA=
  • 进入官网下载
  • 选择Platform(大部分都是选Linux amd64),勾选CloudFlare插件,再点击Download
  • 把下载到本地的Caddy2文件上传到VPS下面的~/tools/caddy目录即可。

从本站下载Caddy2

  • 已含CloudFlare插件
  • 目前为旧版本v2.2.1 h1:Q62GWHMtztnvyRU+KPOpw6fNfeCD3SkwH7SfT1Tgt2c=
  • 进入VPS下面的~/tools/caddy目录,运行wget命令即可
mkdir -p ~/tools/caddy
cd ~/tools/caddy
wget -O caddy2 https://download.margrop.net/d/oneindex/CENTOS/caddy2_2.2.1
  • 查看Caddy2版本
chmod +x caddy2
caddy2 -version

5、安装v2ray

  • v2ray一键安装命令
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
  • v2ray正常安装时的安装日志
installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/v2ray@.service
removed: /tmp/tmp.iO3bDdOqa9
info: V2Ray v4.33.0 is installed.
You may need to execute a command to remove dependent software: yum remove curl unzip
Please execute the command: systemctl enable v2ray; systemctl start v2ray

6、配置并启动v2ray

  • 编辑v2ray配置文件
vim /usr/local/etc/v2ray/config.json
  • JSON文件里面的UUID相当于密码,请务必自行生成并妥善保管

Mac/Unix/Linux系统:控制台输入uuidgen,即可生成UUID
Windows系统:PowerShell控制台输入[guid]::NewGuid(),即可生成UUID

  • JSON文件里面的{RANDOM_PATH}为WebSocket的访问URL,以目前的使用经验,最好使用随机字符串。
{
  "inbound": {
    "port": 10000,
    "listen":"127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "E5B33B5A-A241-4246-B8D9-A260FBBAFCCF",
          "alterId": 64
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
      "path": "/{RANDOM_PATH}"
      }
    }
  },
  "outbound": {
    "protocol": "freedom",
    "settings": {}
  }
}
  • 启动V2Ray
systemctl start v2ray
  • 设置V2Ray开机自启动
systemctl enable v2ray

7、配置Caddyfile2

/etc/caddy 目录创建 Caddyfile2 文件,没有目录就创建目录,编辑Caddyfile2文件

mkdir /etc/caddy
cd /etc/caddy
vim /etc/caddy/Caddyfile2
  • 下面为blog.margrop.net域名为本站域名,请自行修改,建议使用刚才配置的二级域名。
  • {RANDOM_PATH},必须和上面配置一样的。
  • dns cloudflare 这里的配置为CloudFlare的API_KEY,请自行修改,这是插件文档
blog.margrop.net
{
    root * /usr/share/caddy
    file_server
    log {
        output file /var/log/caddy/vps.log
    }
    tls {
        dns cloudflare g9_uKv1RrXXXXXXHOPfXXXXXXYNZGXXXXXXJh3qp
    }
    @v2ray_websocket {
        path /{RANDOM_PATH}
        header Connection *Upgrade*
        header Upgrade websocket
    }
    reverse_proxy @v2ray_websocket localhost:10000
}

8、配置Caddy JSON

  • Caddy2的主要配置文件是Caddy JSON,但这个配置文件太难写了。
  • 所以我们这里把上一步编辑好的Caddyfile2文件转换成Caddy JSON文件
cd ~/tools/caddy
./caddy2 adapt --config /etc/caddy/Caddyfile2 > ~/tools/caddy/config.json
cat ~/tools/caddy/config.json

9、启动并上传Caddy JSON

  • 启动Caddy2
cd ~/tools/caddy
./caddy2 start
  • 上传Caddy JSON
curl localhost:2019/config/
curl localhost:2019/load -X POST -H "Content-Type: application/json" -d @config.json
curl localhost:2019/config/

10、v2ray客户端配置

  • v2ray客户端建议和服务端的版本保持一致
  • 这里客户端同时启用的socks5代理和http代理,均无验证,socks5代理使用1080端口,http代理使用1081端口, 且都支持局域网内连接,方便同一局域网下的其他设备搭乘顺风机。
{
    "inbounds": [
        {
            "port": 1080,
            "listen": "0.0.0.0",
            "protocol": "socks",
            "domainOverride": [
                "tls",
                "http"
            ],
            "settings": {
                "auth": "noauth",
                "udp": false
            }
        },
        {
            "port": 1081,
            "listen": "0.0.0.0",
            "protocol": "http",
            "domainOverride": [
                "tls",
                "http"
            ],
            "settings": {
                "auth": "noauth",
                "udp": false
            }
        }
    ],
    "outbound": {
        "protocol": "vmess",
        "settings": {
            "vnext": [
                {
                    "address": "blog.margrop.net",
                    "port": 443,
                    "users": [
                        {
                            "id": "E5B33B5A-A241-4246-B8D9-A260FBBAFCCF",
                            "alterId": 64
                        }
                    ]
                }
            ]
        },
        "streamSettings": {
            "network": "ws",
            "security": "tls",
            "wsSettings": {
                "path": "/{RANDOM_PATH}"
            }
        }
    }
}

UUID域名{RANDOM_PATH},必须和服务端配置一样的。

11、试运行

看看有没有报错,没有报错就访问下网站看是否正常,如果正常就证明caddy2配置无误。

以上全部操作在CentOS 7上亲自验证,可行。
目前这个文档还属于简版操作手册,后续再慢慢补充每一步详细的操作流程。

12、Caddy2配置自动启动

创建或编辑 caddy2.service 文件
使用以下命令编辑服务文件:

sudo nano /etc/systemd/system/caddy2.service

将服务文件内容更新为以下内容

[Unit]
Description=Start Caddy with Config on Boot
After=network.target

[Service]
User=root
WorkingDirectory=/root/tools/caddy
ExecStart=/root/tools/caddy/caddy2 run --config /root/tools/caddy/config.json
wqRestart=on-failure
Environment=HOME=/root

[Install]
WantedBy=multi-user.target

重新加载 systemd 配置并启动服务
保存并关闭文件后,执行以下命令:

sudo systemctl daemon-reload
sudo systemctl restart caddy2.service
sudo systemctl enable caddy2.service

验证服务状态
检查服务是否正常运行:

sudo systemctl status caddy2.service

13、存档,Caddy1使用方法

#测试运行
caddy -agree -conf /etc/caddy/Caddyfile
#正式运行
nohup caddy -agree -conf /etc/caddy/Caddyfile > /root/caddy.log 2>&1 &

参考

搭梯子:V2RAY配置WebSocket + TLS + Web
WebSocket+TLS+Web
Module dns.providers.cloudflare
Caddyfile Quick-start
Install