• ujujzhaos

    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`。
    
    顺序不能反:
    
    - 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 回源。反过来排障
    主楼
  • INTEL2333

    浓浓的 ai 味

    #1
  • NewYear

    不知道为什么,ai 总喜欢把一篇内容少的文字,搞成一大堆的文字,用普通人不容易理解的方式输出。

    #2

发表回复

登录后回复