Files
mnote/design/cloudflare.md
T
2026-01-15 20:54:21 +08:00

3.5 KiB
Raw Blame History

在 Cloudflare Tunnel 中遇到本地到 Cloudflare 的高延迟,通常和隧道连接的节点选择、网络路由、本地环境配置有关,以下是针对性的解决步骤(按优先级排序):

一、优先优化:切换 Cloudflare Tunnel 连接的边缘节点

Cloudflare Tunnel 默认会自动选择“最近”的边缘节点,但实际网络路由可能导致延迟高,可手动指定低延迟节点:

  1. 查看当前连接的节点 在本地运行隧道的终端中,执行 cloudflared tunnel info <你的隧道名称>,查看输出中的 Connected to 字段(如 ams 对应阿姆斯特丹节点)。
  2. 手动指定低延迟节点 修改隧道启动命令,添加 --edge-ip-version auto --region <目标区域代码> 参数(区域代码参考 Cloudflare 边缘节点列表,如 hkg 对应香港、sfo 对应旧金山):
    # 示例:指定香港节点(适合国内/亚洲地区)
    cloudflared tunnel run --region hkg <你的隧道名称>
    
  3. 测试不同区域节点的延迟ping 测试 Cloudflare 边缘节点的延迟(如 ping hkg.cloudflare.com),选择延迟最低的区域(通常国内选 hkgsin 新加坡,欧美选 sfolax)。

二、检查本地网络与路由问题

  1. 测试本地网络基础延迟 先排除本地网络本身的问题:
    • 测试本地到 Cloudflare 公共 IP 的延迟:ping 1.1.1.1Cloudflare DNS 地址),若延迟本身超过 100ms,说明本地网络到 Cloudflare 骨干网的路由存在拥堵。
    • 切换本地网络(如从 Wi-Fi 换有线、换不同运营商网络),验证是否是网络环境导致。
  2. 关闭本地代理/VPN 干扰: 若本地开启了代理、VPN,可能会改变隧道的网络路由,导致延迟升高,建议临时关闭后重新启动隧道测试。

三、优化 Cloudflare Tunnel 配置

  1. 启用 QUIC 协议 Cloudflare Tunnel 支持更高效的 QUIC 协议(默认用 HTTP/2),可降低延迟: 在隧道配置文件(通常是 ~/.cloudflared/config.yml)中添加:
    protocol: quic
    
    然后重启隧道。
  2. 调整隧道连接池大小: 增加隧道的连接数,避免单连接拥堵: 在 config.yml 中添加:
    max-conns: 10  # 默认为 4,可适当增大到 8-12
    

四、检查 Cloudflare 账号与隧道状态

  1. 查看隧道的健康状态 在 Cloudflare 控制台的“网络→隧道”页面,检查隧道的“状态”是否为“健康”,若显示“不稳定”,可重启本地 cloudflared 进程。
  2. 确认隧道绑定的域名解析: 若隧道绑定了自定义域名,检查域名的解析是否指向 Cloudflare 边缘节点(而非直接解析到本地 IP),错误的解析会绕开 Cloudflare 导致延迟升高。

五、极端情况:更换 Cloudflare 区域

若以上方法无效,可尝试将 Cloudflare 账号的“默认区域”切换到离本地更近的区域:

  1. 登录 Cloudflare 控制台,进入“我的个人资料→区域”;
  2. 选择离本地物理位置最近的区域(如国内选“Asia”),保存后重新启动隧道。

通过以上步骤,通常能解决大部分 Cloudflare Tunnel 的高延迟问题。优先尝试切换边缘节点+启用 QUIC 协议,这两个操作对延迟的优化最明显。

要不要我帮你整理一份隧道延迟测试的脚本,可以自动检测不同区域节点的延迟并推荐最优选项?