GoForum › 🌐 V2EX

Cloudflare + DMIT + edgetunnel:一条可切换的双入口节点

ujujzhaos · 2026-09-29 10:43 · 0 次点赞 · 0 条回复

https://s7ea.com/feed/37

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     出口 = 同一台 VPS

2. 环境

项 值
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。

顺序不能反:

  1. DNS 先灰云,A 记录指 VPS 。橙云会挡住 Let’s Encrypt 的 HTTP-01 。
  2. 安装 3x-ui 。3.8.5 会把订阅服务和面板抢同一个端口,把 subPort 改走或关掉订阅服务。
  3. 解析未好时先自签证书,入站能起来;解析通了再用 acme.sh standalone 换 Let’s Encrypt 。
  4. 入站: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,再绑自定义域。

必做三项:

  1. 变量 ADMIN、建议固定 UUID(与 3x-ui 同一枚)。
  2. KV 绑定的变量名必须是 KV,不是 kv。命名空间叫什么无所谓,先在「存储和数据库 → KV 」里创建一个再选。
  3. 未配 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 回源。反过来排障

0 条回复
添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: ujujzhaos
发布: 2026-09-29
点赞: 0
回复: 0