家庭软路由OpenWRT安装内网穿透 Cloudflare Tunnel 教程
Cloudflare Tunnel 内网穿透部署指南
项目优势与局限
✅ 核心优势
- 零成本方案
免费套餐满足个人需求,无需购买VPS/服务器 超高可用性
- 多ISP运营商支持(电信/联通/移动)
- 支持HTTP3/QUIC协议(海外节点)
- 无限流量+百兆级带宽
极简部署
- 无需客户端安装(智能家电/机顶盒直连)
- 免域名北岸(海外CDN特性)
- 无限服务数量支持
⚠️ 使用限制
- 网络质量波动
晚高峰延迟约150ms(国内访问CF共性) 协议支持限制
- 国内暂不支持HTTP3/QUIC
- UDP协议被运营商QOS限制
- 域名依赖
需将域名托管至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配置
- 访问Cloudflare Zero Trust控制台
- 进入
Access > Tunnels
- 创建新隧道 → 自定义隧道名称 → 保存
- 记录生成的连接令牌(形如
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 # 检查日志
域名映射配置
- 返回Zero Trust控制台 → 隧道管理页
- 点击隧道右侧
Configure
添加Public Hostname:
- Subdomain:二级域名(根域名使用@)
- Domain:选择托管域名
Service Type:按需选择协议类型
- HTTP/HTTPS → 填写内网IP:端口
- TCP → 支持VNC/RDP等应用
疑难排查
- 隧道状态异常:检查令牌有效性/网络连通性
- 域名解析失败:确认DNS已完全生效(TTL影响)
- 服务无法访问:检查目标服务防火墙设置
- 日志实时监控:
tail -f /var/log/cloudflared.log
技术提示:建议搭配DDNS-GO实现动态IP更新,可通过Docker部署实现自动化管理。