Cloudflare Tunnel 内网穿透部署指南

项目优势与局限

✅ 核心优势

  1. 零成本方案
    免费套餐满足个人需求,无需购买VPS/服务器
  2. 超高可用性

    • 多ISP运营商支持(电信/联通/移动)
    • 支持HTTP3/QUIC协议(海外节点)
    • 无限流量+百兆级带宽
  3. 极简部署

    • 无需客户端安装(智能家电/机顶盒直连)
    • 免域名北岸(海外CDN特性)
    • 无限服务数量支持

⚠️ 使用限制

  1. 网络质量波动
    晚高峰延迟约150ms(国内访问CF共性)
  2. 协议支持限制

    • 国内暂不支持HTTP3/QUIC
    • UDP协议被运营商QOS限制
  3. 域名依赖
    需将域名托管至Cloudflare

前置准备

  • 已完成域名托管至Cloudflare(NS记录已生效)
  • 推荐搭配:Scaleway IPv6 VPS(无限流量)

部署教程

1. 获取Cloudflared客户端

# 下载最新官方客户端(以x86架构为例)
VERSION="2023.3.1"  # 需同步Github最新版本号
curl -O -L \
https://github.com/cloudflare/cloudflared/releases/download/${VERSION}/cloudflared-linux-amd64 \
&& chmod +x cloudflared-linux-amd64 \
&& mv cloudflared-linux-amd64 /usr/bin/cloudflared

2. Zero Trust配置

  1. 访问Cloudflare Zero Trust控制台
  2. 进入 Access > Tunnels
  3. 创建新隧道 → 自定义隧道名称 → 保存
  4. 记录生成的连接令牌(形如eyJh...J9

3. OpenWRT服务配置

# 创建启动脚本
touch /etc/init.d/cloudflared
chmod +x /etc/init.d/cloudflared

# 编辑启动脚本(使用nano/vim)
nano /etc/init.d/cloudflared
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=95
STOP=01

cfd_token="替换为你的连接令牌"  # 重要!此处填入步骤2获取的令牌

boot() {
    ubus -t 30 wait_for network.interface network.loopback 2>/dev/null
    rc_procd start_service
}

start_service() {
    if [ $("/etc/init.d/cloudflared" enabled; printf "%u" ${?}) -eq 0 ]
    then
        procd_open_instance
        procd_set_param command /usr/bin/cloudflared --no-autoupdate tunnel run --token ${cfd_token}
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
        procd_close_instance
    fi
}

stop_service() {
    pidof cloudflared && kill -SIGINT pidof cloudflared
}

4. 启动服务

/etc/init.d/cloudflared enable  # 设置开机自启
/etc/init.d/cloudflared start   # 立即启动

# 验证运行状态
ps | grep cloudflared          # 查看进程
logread | grep cloudflared     # 检查日志

域名映射配置

  1. 返回Zero Trust控制台 → 隧道管理页
  2. 点击隧道右侧 Configure
  3. 添加Public Hostname:

    • Subdomain:二级域名(根域名使用@)
    • Domain:选择托管域名
    • Service Type:按需选择协议类型

      • HTTP/HTTPS → 填写内网IP:端口
      • TCP → 支持VNC/RDP等应用

疑难排查

  • 隧道状态异常:检查令牌有效性/网络连通性
  • 域名解析失败:确认DNS已完全生效(TTL影响)
  • 服务无法访问:检查目标服务防火墙设置
  • 日志实时监控:tail -f /var/log/cloudflared.log
技术提示:建议搭配DDNS-GO实现动态IP更新,可通过Docker部署实现自动化管理。

标签: openwrt, 家庭软路由, 内网穿透, Cloudflare Tunnel

添加新评论