Margrop
Articles158
Tags353
Categories21
1password AC AP API AppDaemon Aqara Cron Date Diagrams.net HA HADashboard HomeAssistant IP IPv4 Java LVM‑Thin Linux MacOS MySQL NAS PPPoE PostgreSQL ProcessOn Proxmox VE SSL Shell TTS TimeMachine UML Uptime Kuma Web Windows activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https idea image img img2kvm import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl tap tap-windows tapwindows telecom template terminal tls token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 光猫 公网IP 内存 内网IP 升级 启动 夏令时 天猫精灵 天翼云 安装 容器 导入 小米 常用软件 广告屏蔽 序列号 应用市场 异常 抓包 描述文件 时区 显卡虚拟化 智能家居 智能音箱 梯子 模块 流程 流程图 浏览器 漫游 激活 火绒 电信 画图 直播源 续期 网关 网络风暴 群晖 腾讯 虚拟机 证书 路由 路由器 软件管家 软路由 运维监控 镜像 镜像源 门窗传感器 防火墙 阿里云 阿里源 集客

Hitokoto

Archive

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

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

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

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

  • 本站博主曾因为服务器时间和时区的问题,导致无法正常连接V2Ray,折腾了一整天。
    1
    2
    3
    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命令即可

    1
    2
    3
    mkdir -p ~/tools/caddy
    cd ~/tools/caddy
    wget -O caddy2 https://download.margrop.net/d/oneindex/CENTOS/caddy2_2.2.1
  • 查看Caddy2版本

    1
    2
    chmod +x caddy2
    caddy2 -version

5、安装v2ray

  • v2ray一键安装命令

    1
    bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
  • v2ray正常安装时的安装日志

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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/[email protected]
    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配置文件

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

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

  • JSON文件里面的{RANDOM_PATH}为WebSocket的访问URL,以目前的使用经验,最好使用随机字符串。

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
{
"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

    1
    systemctl start v2ray
  • 设置V2Ray开机自启动

    1
    systemctl enable v2ray

7、配置Caddyfile2

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

1
2
3
mkdir /etc/caddy
cd /etc/caddy
vim /etc/caddy/Caddyfile2
  • 下面为blog.margrop.net域名为本站域名,请自行修改,建议使用刚才配置的二级域名。
  • {RANDOM_PATH},必须和上面配置一样的。
  • dns cloudflare 这里的配置为CloudFlare的API_KEY,请自行修改,这是插件文档
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    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文件
    1
    2
    3
    cd ~/tools/caddy
    ./caddy2 adapt --config /etc/caddy/Caddyfile2 > ~/tools/caddy/config.json
    cat ~/tools/caddy/config.json

9、启动并上传Caddy JSON

  • 启动Caddy2

    1
    2
    cd ~/tools/caddy
    ./caddy2 start
  • 上传Caddy JSON

    1
    2
    3
    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端口, 且都支持局域网内连接,方便同一局域网下的其他设备搭乘顺风机。
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    {
    "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、试运行

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

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

12、Caddy2配置自动启动

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
[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 配置并启动服务
保存并关闭文件后,执行以下命令:

1
2
3
sudo systemctl daemon-reload
sudo systemctl restart caddy2.service
sudo systemctl enable caddy2.service

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

1
sudo systemctl status caddy2.service

13、存档,Caddy1使用方法

1
2
3
4
#测试运行
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

Author:Margrop
Link:http://blog.margrop.com/post/fuckgfw-v2ray-websocket-tls-web-cdn/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可