CFTunnels教程

CFTunnels教程
落魄君子使用 Cloudflare Tunnel 结合 Sing-box 实现无公网 IP 内网穿透
更新于 2026-08-13。Cloudflare 控制台的菜单名称可能继续调整,请以 Cloudflare Tunnel 官方文档 为准。
Cloudflare Tunnel(cloudflared) 会由源站主动建立到 Cloudflare 的出站连接,因此发布 HTTP/HTTPS 应用时不必为源站开放公网入站端口,也不要求源站拥有公网 IP。它并不能保证解决所有网络阻断,也不等于隐藏了账户、域名或 Cloudflare 可见的流量;使用前应确认业务符合 Cloudflare 服务条款。
本文配合当前维护的 Sing-box-EV 管理脚本演示。菜单编号会随版本变化,操作时应按菜单名称选择,不要照抄旧编号。
🛠️ 课前准备
- 一个 Cloudflare 账号,并且已经在 CF 托管了一个属于你的域名(例如
example.com)。 - 一台可运行
cloudflared与 Sing-box-EV 的 Linux 主机,并已安装 Sing-box-EV。
🟢 第一阶段:初始化 Zero Trust 控制台 (首次使用必看)
如果你是第一次使用 Cloudflare 的高级安全功能,你需要先激活 Zero Trust 专属面板。
- 登录 Cloudflare 主页,在左侧菜单栏找到并点击 Zero Trust。
- 如果界面显示 **”Welcome to Cloudflare Zero Trust”**,请点击蓝色的 Get started (开始使用) 按钮。
- 按照向导提示,设置一个团队名称(Team domain),随意输入英文字母即可。
- 如果出现套餐选择,按实际需求选择 Free 或付费计划,并在确认页核对价格与功能。
- Cloudflare 的开户与支付要求会随账户、地区和产品变化。不要依据旧教程承诺“必然要求绑卡”或“绝对不会扣费”,以控制台当时显示的条款为准。
- 完成引导后进入 Zero Trust 控制台。
🟡 第二阶段:创建隧道并提取核心 Token
在这个专属的控制台中,我们将创建一条专属隧道,并获取脚本部署所需的核心凭证(Token)。
- 在 Cloudflare One / Zero Trust 控制台进入 Networks -> Connectors -> Cloudflare Tunnels;如果界面名称不同,可直接搜索
Tunnels。 - 点击蓝色的 Add a tunnel (创建隧道) 按钮。
- 选择隧道类型:页面会提供两个选项,**必须点击左侧的 “Cloudflared (推荐)”**,切勿选择右侧的 WARP。
- 命名隧道:随意填写一个好记的名字(如
LPMG-Node),点击下一步/保存。 - 选择操作系统:在环境选择页面,点击 Debian 或 Ubuntu。
- **🔑 提取通关密码 (Token)**:
- 在页面下方会生成一个黑色的代码框,包含类似
sudo cloudflared service install eyJh...的安装命令。 - 推荐点击控制台提供的复制按钮,再按脚本提示粘贴 Token;不要依赖 Token 一定以某些字符开头,也不要手工截断。
- Tunnel Token 是可运行该隧道的敏感凭据。 不要写入文章、截图、终端历史或公开 Issue;怀疑泄露时应立即在 Cloudflare 控制台轮换 Token。
- 在页面下方会生成一个黑色的代码框,包含类似
🟠 第三阶段:在 VPS 终端一键部署节点
拿到 Token 后,剩下的脏活累活全部交给脚本自动完成。
- SSH 登录你的 Linux 服务器,输入命令
sb打开 Sing-box-EV 管理面板。 - 输入
1选择 **[添加配置]**。 - 在协议列表中找到 CFtunnel / Cloudflare Tunnel,按当前界面显示的序号选择。
- 分配端口:提示输入端口时,直接敲回车,脚本会为你自动分配一个 20000 以上的空闲内部端口。
- 输入 Token:根据提示,将你在第二阶段复制的 Tunnel Token 粘贴进去并回车。
- 填写备注:为节点起一个自定义备注(例如
LUOPOMG)。 - 🔔 牢记端口号:屏幕会打印绿色成功提示,并显示 “✅ CFtunnel 穿透守护服务 (关联内部端口: 61505) 已创建”。请务必记住这个五位数的端口号(本文以
61505为例)。
🔴 第四阶段:配置公网域名路由 (打通任督二脉)
节点已经在 VPS 内部跑起来了,现在我们需要告诉 Cloudflare,把哪个域名的流量转发给这个内部端口。
回到刚才的 Cloudflare 网页端,点击右下角的 **下一步 (Next / 路由隧道)**。
在 Public Hostnames (公共主机名) 页面,进行如下关键配置:
- **Subdomain (子域名)**:随意填写前缀(如
www,node1,vless)。也可留空直接使用主域名。 - **域 (Domain)**:下拉选择你在 CF 托管的域名(如
example.com)。 - Path (路径):保持完全空白,什么都不要填!
- **Subdomain (子域名)**:随意填写前缀(如
在下方的 服务 (Service) 区块配置内部映射:
- **类型 (Type)**:下拉选择 **
HTTP**。(注意:即便跑的是 WS 流量,这里也必须选 HTTP)。 - URL:填写
127.0.0.1:你的端口号或localhost:你的端口号。(例如:**127.0.0.1:61505**)。
- **类型 (Type)**:下拉选择 **
点击右下角的蓝色按钮 **完成设置 (Save hostname)**。
🚀 最终阶段:组合链接,完美起飞
你的终端脚本在部署完成后,会吐出一条包含模板字符的原始 VLESS 链接,类似这样:
vless://f917...2cc6a@你的CF绑定域名(需修改):443?encryption=none&security=tls&type=ws&host=你的CF绑定域名(需修改)&path=/f917...2cc6a#LUOPOMG
最后的组装
将链接中的 你的CF绑定域名(需修改) 替换为你在第四阶段配置的完整域名(例如 www.example.com)。
成品示例
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=www.example.com&path=/f917...2cc6a#LUOPOMG
使用方法
复制完整链接后,导入到明确支持该 VLESS + WebSocket + TLS 参数组合的客户端。导入成功不代表链路一定可用或“完全隐匿”,仍需检查 Cloudflare Tunnel 状态、公开主机名、回源端口、WebSocket 路径以及客户端日志。
更新与排错
在服务器执行:
1 | sb status |
同时在 Cloudflare 控制台确认 Tunnel 为 Healthy,并检查 Public Hostname 的目标是否仍是正确的 http://127.0.0.1:端口。Cloudflare 官方说明:Tunnel 是源站到 Cloudflare 的出站连接;公开主机名用于把域名映射到本地 HTTP 服务。本文没有覆盖 Cloudflare Access 身份验证,如需公开管理后台,应另外配置 Access 策略,不能只依赖一个难猜的路径。





