[ PROMPT_NODE_24374 ]
Tunnel 常见陷阱
[ SKILL_DOCUMENTATION ]
# Tunnel 常见问题 (Gotchas)
## 常见错误
### "Error 1016 (Origin DNS Error)"
**原因:** Tunnel 未运行或未连接
**解决方案:**
bash
cloudflared tunnel info my-tunnel # 检查状态
ps aux | grep cloudflared # 验证是否运行
journalctl -u cloudflared -n 100 # 查看日志
### "Self-signed certificate rejected"
**原因:** 源站使用自签名证书
**解决方案:**
yaml
originRequest:
noTLSVerify: true # 仅限开发环境
caPool: /path/to/ca.pem # 自定义 CA
### "Connection timeout"
**原因:** 源站响应缓慢或超时设置过短
**解决方案:**
yaml
originRequest:
connectTimeout: 60s
tlsTimeout: 20s
keepAliveTimeout: 120s
### "Tunnel not starting"
**原因:** 配置无效、缺少凭据或 Tunnel 不存在
**解决方案:**
bash
cloudflared tunnel ingress validate # 验证配置
ls -la ~/.cloudflared/*.json # 验证凭据
cloudflared tunnel list # 验证 Tunnel 是否存在
### "Connection already registered"
**原因:** 多个副本使用相同的连接器 ID 或存在陈旧连接
**解决方案:**
bash
# 检查活动连接
cloudflared tunnel info my-tunnel
# 等待 60 秒以清理陈旧连接,或使用新的连接器 ID 重启
cloudflared tunnel run my-tunnel
### "Tunnel credentials rotated but connections fail"
**原因:** 旧的 cloudflared 进程正在使用过期的凭据
**解决方案:**
bash
# 停止所有 cloudflared 进程
pkill cloudflared
# 验证是否已停止
ps aux | grep cloudflared
# 使用新凭据重启
cloudflared tunnel run my-tunnel
## 限制
| 资源/限制 | 数值 | 备注 |
|----------------|-------|-------|
| 免费层级 | 无限 Tunnel | 无限流量 |
| Tunnel 副本 | 每个 Tunnel 1000 个 | 最大并发 |
| 连接时长 | 无硬性限制 | 数小时至数天 |
| 长连接 | 更新期间可能会断开 | WebSocket, SSH, UDP |
| 副本注册 | ~5s TTL | 5秒无心跳后旧副本被丢弃 |
| 令牌轮换宽限期 | 24 小时 | 旧令牌在宽限期内有效 |
## 最佳实践
### 安全性
1. 使用基于令牌的 Tunnel(配置源:Cloudflare)以实现集中控制
2. 为敏感服务启用 Access 策略
3. 定期轮换 Tunnel 凭据
4. 轮换后:在 24 小时宽限期内停止所有旧的 cloudflared 进程
5. 验证 TLS 证书 (`noTLSVerify: false`)
6. 限制 `bastion` 服务类型
### 性能
1. 运行多个副本以实现高可用性 (HA) (2-4 个)