- ujujzhaos2026-09-293830
Cloudflare + DMIT + edgetunnel:一条可切换的双入口节点
本文记录一次完整落地:DMIT VPS 上的 VLESS 作为可控出口,Cloudflare Workers 上的 edgetunnel 作为边缘入口,FlClash 里两套节点并存。最后链式 SOCKS 验证通过,落地 IP 回到同一台洛杉矶机器。
公开前请轮换面板密码、UUID 和 SOCKS 账密。文中参数来自这次实测,仅作过程说明。
1. 要解决什么
需求很具体:
- 有一台 DMIT (洛杉矶),希望出口 IP 稳定、自己可控。
- 域名已在 Cloudflare ,希望必要时用 CDN/Workers 藏源站、走 443 。
- 客户端用 FlClash 和小火箭,不要两套互不相干的订阅。
后来又加了一层:能否「不靠自己的 2083 端口」进网,但仍从这台 VPS 出网。这就是 edgetunnel 链式代理要做的事。
最终形态:```
客户端
├─ DMIT-直连 v.s7ea.com:2083 VLESS + WS + TLS 出口 = VPS
└─ CF-边缘 edt.s7ea.com:443 edgetunnel Worker
└─(可选) SOCKS5 → VPS:10808 出口 = 同一台 VPS2. 环境 项 | 值 | VPS | DMIT ,Ubuntu ,密钥登录 | IPv4 / IPv6 | 45.59.186.107 / 2605:52c0:3:6a7:be24:11ff:fea2:929a | 直连域名 | v.s7ea.com (先灰云指源站) | Worker 域名 | 先 `edgetunnel.zhoh2019.workers.dev`,后绑 `edt.s7ea.com` | 面板 | 3x-ui + Xray | 边缘 | cmliu/edgetunnel ,fork 在 zhostev/edgetunnel | 客户端 | FlClash 、Shadowrocket | --- 3. 第一段:只做 VPS 上的 VLESS 方案是 VLESS + WebSocket + TLS ,端口 2083 ( Cloudflare 可反代的 HTTPS 端口),路径 `/cfws`。 顺序不能反: - DNS 先灰云,A 记录指 VPS 。橙云会挡住 Let’s Encrypt 的 HTTP-01 。 - 安装 3x-ui 。3.8.5 会把订阅服务和面板抢同一个端口,把 `subPort` 改走或关掉订阅服务。 - 解析未好时先自签证书,入站能起来;解析通了再用 acme.sh standalone 换 Let’s Encrypt 。 - 入站:VLESS 、2083 、TLS 、WS 、`/cfws`、SNI/Host 均为 `v.s7ea.com`,flow 留空。 直连分享链接形态:``` vless://<UUID>@v.s7ea.com:2083?encryption=none&security=tls&sni=v.s7ea.com&fp=chrome&type=ws&host=v.s7ea.com&path=%2Fcfws#cf-vless ```测通标准是访问 `https://www.cloudflare.com/cdn-cgi/trace`:``` ip=2605:52c0:3:6a7:be24:11ff:fea2:929a colo=LAX loc=US warp=off ```出口是这台机器的 IPv6 ,不是本地 ISP 。 --- 4. FlClash 的两个坑 FlClash 「添加配置」只有二维码、文件、URL 。 - URL 只要 `https://` 订阅,不要 `vless://`。把分享链接贴进去会报「必须为 URL 」,还容易把 UUID 截断。 - 单节点应走「从剪贴板导入」,或写一份 Clash Meta YAML 用「文件」导入。 直连节点在 Clash 里对应:``` - name: DMIT-直连 type: vless server: v.s7ea.com port: 2083 uuid: <UUID> network: ws tls: true servername: v.s7ea.com client-fingerprint: chrome ws-opts: path: /cfws headers: Host: v.s7ea.com ```小火箭可以直接吃 `vless://`,没有这个问题。 --- 5. 第二段:加上 edgetunnel edgetunnel 把 VLESS 入站放到 Cloudflare Workers / Pages ,不需要再买一台机器。它不是「没有服务器」,只是入站不跑在你的 Linux 上。出站默认走 Worker 自己的连接或项目内置的 ProxyIP 。 部署选择: - Pages 上传 zip:适合不想碰 Git 的人。 - Pages 连 GitHub:适合以后要改代码。 - 本次实际生效的是 **Workers** 域名 `*.workers.dev`,再绑自定义域。 必做三项: - 变量 `ADMIN`、建议固定 `UUID`(与 3x-ui 同一枚)。 - KV 绑定的**变量名**必须是 `KV`,不是 `kv`。命名空间叫什么无所谓,先在「存储和数据库 → KV 」里创建一个再选。 - 未配 `ADMIN` 时,所有路径都会显示伪装页(例如 Welcome to nginx ),`/admin` 也不例外。 面板起来后会出现「随机优选 16 个 CF IP 」。那是给 `workers.dev` 被干扰时换 Anycast IP 用的,和「出口锁定自己的 VPS 」是反着的。自用应改成自定义列表只留自己的域名,或直接「复制节点」。 --- 6. `workers.dev` 通不了,要换自己的域名 FlClash 里一度出现:DIRECT 有延迟,Worker 节点全 Timeout 。原因不是 UUID ,是 `*.workers.dev` 在客户端网络里不稳定。 绑定 `edt.s7ea.com` 之后,从公网看: - 解析到 Cloudflare Anycast - 证书 SAN 包含 `edt.s7ea.com` - `/admin` 已是中文设置页 但面板会弹窗:**当前访问域名是 `edt.s7ea.com`,节点伪装域名仍是 `workers.dev`**。不改 HOST ,复制节点和订阅就会继续下发打不开的地址。 在「详细配置信息」把 **HOST** 改成 `edt.s7ea.com` 并保存。客户端的 server / SNI / Host 必须一致,路径用后台生成的,不要套用 VPS 上的 `/cfws`。 改完后 FlClash 出现:``` DMIT-直连 225 ms CF-边缘 196 ms ```两条都绿。此时若走 CF-边缘看 `cdn-cgi/trace`,出口可能是:``` ip=104.28.163.182 colo=AMS loc=NL ```说明 Worker 自己出网了,还没有回到 DMIT 。 --- 7. 链式 SOCKS:从 Loop 到验证通过 为了让 CF-边缘的出口也是 VPS ,在 3x-ui 增加 mixed 入站( SOCKS5 + HTTP ),端口 10808 ,账密认证。Worker 作为客户端去连这个端口。 edgetunnel 「添加链式代理」里有一个容易踩的验证逻辑: > Worker → SOCKS → 再访问「优选」地址 「优选」若填 `edt.s7ea.com` 或 `1.1.1.1`,会绕回 Cloudflare 。Worker 运行时禁止再连 CF 自己的地址,报错:``` TCP Loop detected, contact us if this doesn't seem right. ```正确填法: 栏 | 值 | 优选 | `8.8.8.8`(不要 1.1.1.1 ,不要自己的 Worker 域名) | 链式代理 | `socks5` | 地址 | `用户:密码 @45.59.186.107:10808`(端口不能省) | 验证通过时面板显示:``` 优选入口 8.8.8.8 → SOCKS5 → 落地 2605:52c0:3:6a7:… 地区 US ,约 540ms ```落地 IPv6 与直连测速是同一台机器。链式比直连多一跳,延迟从约 200ms 升到约 540ms ,符合预期。 点「添加」保存后,再走 CF-边缘看 `cdn-cgi/trace`,目标是 `ip` 回到 VPS 、`colo` 靠近 LAX 。 若验证长期 Loop:可以放弃链式,两套节点分开用。公网再暴露 10808 收益有限。本次最后是验证通过,链式可以留作「 CF 入口 + VPS 出口」。 --- 8. 客户端怎么组织 一份 YAML 足够:``` proxies: - name: DMIT-直连 type: vless server: v.s7ea.com port: 2083 # ws + tls + path /cfws - name: CF-边缘 type: vless server: edt.s7ea.com port: 443 # ws + tls + path 用后台给出的,常见 /?ed=2560 proxy-groups: - name: PROXY type: select proxies: - DMIT-直连 - CF-边缘 - DIRECT ```策略建议: - 要稳定出口、流媒体、可控 IP:选 DMIT-直连。 - 2083 或源站 IP 被干扰:选 CF-边缘(已链式则出口仍是 VPS )。 - 不要用「随机优选 16 」那种自动选择组当主力,Timeout 时会整组挂掉。 - 全局模式下 DIRECT 探活变红可以忽略。 --- 9. 排障备忘 现象 | 原因 | FlClash 「必须为 URL 」 | 把 `vless://` 贴进订阅框 | `/admin` 是 nginx 欢迎页 | 未设置 `ADMIN`,或 KV 变量名不是 `KV` | 列表里全是「 CF 官方优选」 | 开了随机优选,不是自己的域名 | workers.dev 节点 Timeout 、直连正常 | 换自定义域,并改面板 HOST | 自定义域能开后台,节点仍下发 workers.dev | HOST 未改 | `cdn-cgi/trace` 在 AMS / 104.28.* | Worker 未走 SOCKS | 链式报 TCP Loop | 优选填了 CF 地址或自身域名 | 链式验证通过但延迟高 | 正常,多一跳 | --- 10. 安全 - 3x-ui 面板不要长期裸奔在公网明文端口。 - SOCKS 10808 必须强密码;不用链式就关掉入站。 - UUID 、订阅 token 、SOCKS 账密不要写进公开 Git 。fork 仓库只放说明,机密放 Workers 变量。 - `workers.dev` 和订阅 URL 都相当于入口,token 泄漏等于节点泄漏。 --- 11. 结论 可以合成,但不要幻想「一个 Worker 取代 VPS 」。 - VPS 提供出口质量和 IP 归属。 - Worker 提供 443 、CF 证书、自定义域、在 `workers.dev` 不好用时的另一条入口。 - 链式 SOCKS 能把两条合成「同一出口」,代价是延迟和一次容易误报的 Loop 检测。 - FlClash 要用对导入方式,HOST 要和正在访问的域名对齐。 落地顺序压缩成一句:先灰云把 2083 跑通,再上 Worker 和自定义域,最后才考虑 SOCKS 回源。反过来排障主楼 - INTEL23332026-09-2948408
浓浓的 ai 味
- NewYear2026-09-2946110
不知道为什么,ai 总喜欢把一篇内容少的文字,搞成一大堆的文字,用普通人不容易理解的方式输出。