BOSh
文章321
标签521
分类135
315晚会 36氪 80后 ADB AI AI Agent AI PC AI 代理 AI 助手 AI 网关 AI 评测 AI代理 AI助手 AI处理器 AI大模型 AI安全 AI应用 AI智能体 AI网关 AMD API API 集成 AWS Agent Agentic AI AionUi Alwaysdata Android Apple Arch Linux Argo Tunnel Automation Backup Bash Bosh Bot Bot-hosting C++ CDN CEO CI/CD CLI CLI Proxy API CLIProxyAPI COMPUTEX CRM Chrome 插件 Claude Claude Opus 4.6 Cloudflare Code ConnectBot Credential Manager Ct8.pl CurrentEvents DNS Debian DeepSeek DenchClaw DevOps Devil Docker Elon Musk FreeLLMAPI GCP GEO GPL GPS GPU Gemini Gemini 3.1 Pro Ghostty Git GitHub GitHub Actions Gmail Go Gog Golang Google Google AI Pro Google API Google Gemini Google Photos Google Pixel HKUDS Hardware Hermes Hermes Agent Hexo HidenCloud Hugo Hyprland IPV6 Intel JavaScript Jetpack Compose John Turnus KDE KOSPI Karpathy Kimi-K2.5 Kotlin LINUX LLM LTS LaTeX Linux LiveUSB MW4L Markdow Markdown Matrix MemU Bot Mesh-Network MiniMax Musk NAT64 NIX NODE NVIDIA NVIDIA Build NanoClaw Netcatty Netlify Newsletter Node.js Nvidia Open WebUI OpenAI OpenAI 兼容接口 OpenAI兼容 OpenCLI OpenClaw P2P PDF 编译 Pacman PicoClaw Pixel Pixel 1 Pixel 12 Pixel11 Plasma Prismer Productivity Pura90 Python QClaw QQ机器人 Qualcomm Quickshell RAG RTX Spark Railway Reddit Rust SFTP SSH SeleniumBase Serv00 Serverless Skills SoC Subagent SuperCall Synapse Syncthing TPU TSMC Tailscale Telegram Telegram Bot Tensor Tensor G7 Tim Cook Tunnel Turnstile Ubuntu VLESS VPN VPS Vercel Wayland WeChat Web3 WebSSH WebSocket WebTransport Web开发 Windows WireGuard WorkBuddy X XChat XHTTP X热榜 YouTube ZeroClaw arXiv arch c++ cc-switch cloudflared ct8.pl email git hugo hyprmod i3wm iMessage iOS n8n nanobot node js ntfs pacman podman zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 乌克兰 习惯养成 云同步 云服务器 亚洲 人性 人教版 代理 代金券 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 使用 俄乌战争 俄罗斯 保护主义 信息流 信息管理 停火 健康管理 光通信 免费VPS 免费主机 免费试用 全球动态 六年级 共和党 关系 养老金 内容工厂 内容生产 内容筛选 内网穿透 军事冲突 军事动态 军民融合 农村 分享 分配 创业 制裁 办公自动化 加密 加密货币 加沙 北斗 北韩 医学生 半导体 华为 协议分析 博客 博客助手 博客发布 博客部署成功 卫星 即时通讯 厄尔尼诺 原生 JS 去中心化 反向代理 反思 反爬虫 反重力 台海局势 台湾 命令 命令行 喷嚏网 国产 国产化 国产替代 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 域名邮箱 基础设施 多代理 多模态AI 大学分析 大模型 孙少平 学习 安全 安装 实时监控 家庭助理 家庭服务器 家装设计 小学 工业策略 工作总结 工作效率 工作流编排 工具 工具链 平凡的世界 平台责任 庞氏骗局 开发 开发实录 开源 开源软件 开源项目 张雪峰 微信 心理健康 快捷键 情感 慈善 战争 房地产 手机 技术分享 投资工具 指标看板 提示词工程 播客 收件箱清理 效率 效率工具 教程 教育制度 数学 数据分析 数据投毒 文件管理 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 智能手机 服务器部署 朝鲜 极端天气 架构 架构实践 核协议 核武器 桌面Cowork 桌面环境 模型接入 模型配置 欧洲安全 每日图说 比亚迪 气候 油价 法律 活动运营 浏览器自动化 消息通道 消费者权益 深度学习 渔船 游戏开发 湘雅医院 潘石屹 热点新闻 熔断 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 白嫖 白嫖攻略 白山云 皮皮虾 监管 目标管理 知识库 社交媒体 社会保障 社会公平 社会百态 社会观察 科技 科普 科研助手 窗口管理 笔记 第一财经 算法 算法推荐 系统管理 纽森 组网 经济 经济观察 经验分享 编程 网关 网络 网络安全 网络摘录 网络穿透 美伊冲突 美伊谈判 美国 美国制裁 美国大选 美国政治 股灾 能源安全 脚本 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化脚本 自动化运维 自建服务 自律教练 自托管 自由软件 芯片 草榴 行为改变 视频摘要 解锁 计算摄影 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 谷歌云 财报季 路遥 身份验证 轻量级 迁移 运维 进化论 远程访问 远程运维 选车 邀请确认 部署 部署指南 部署教程 量子计算 销售自动化 阅读感悟 随笔 隐私 霍尔木兹 霍尔木兹海峡 青蛙机 韩国股市 韩红 韬定律 项目管理 风险管理 飞书 高中生活 高可用 高考 高考志愿 鸽巢原理 麒麟 麒麟9050 黄仁勋 黎巴嫩 龙虾

一言

文章归档

Cloudflare Tunnels 完全安装与内网穿透配置指南

Cloudflare Tunnels 完全安装与内网穿透配置指南

Cloudflare Tunnels 完全安装与内网穿透配置指南

Cloudflare Tunnel 是 Cloudflare 提供的零信任网络访问方案,通过在本地运行一个轻量级 daemon(cloudflared),在内网服务和 Cloudflare 边缘之间建立加密隧道。无需公网 IP、无需开放端口、无需配置 NAT 或防火墙规则,就能把内网的 Web 服务、SSH、数据库等安全暴露出去。

本文将手把手教你从安装到配置的完整流程,覆盖 Linux、macOS、Docker 以及 Windows 平台,并分别演示 Web HTTP、SSH、TCP 服务穿透的实际操作。

一、安装 cloudflared

Debian / Ubuntu

1
2
3
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared
cloudflared --version

ARM 架构机器:

1
2
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared

CentOS / RHEL / Fedora

1
2
3
4
5
6
7
8
cat <<'EOF' > /etc/yum.repos.d/cloudflared.repo
[cloudflared]
name=Cloudflared
baseurl=https://packages.cloudflare.com/cloudflared/rpm
enabled=1
gpgcheck=0
EOF
yum install cloudflared -y

macOS (Homebrew)

1
2
brew install cloudflared
cloudflared --version

Windows

从 GitHub Releases 页面下载最新 .msi 安装包,双击运行安装即可。在命令行输入 cloudflared --version 验证。

Docker 方式

1
2
docker run -d --name cloudflared --restart always \
cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <你的Token>

二、三种 Tunnel 创建方式对比

方式 适用场景 凭证管理 推荐度
Token 模式 简单场景,单个服务 Token 明文写在命令行或文件里 ⭐⭐⭐
Config 模式 多服务、生产环境 YAML 配置文件 + credentials.json ⭐⭐⭐⭐⭐
Connectors 模式 大规模部署、远程管理 cloudflared connect 命令连接代理 ⭐⭐⭐⭐

下面重点讲解 Token 模式(最简单快速)和 Config 模式(最灵活可靠)。

三、方案 A:Token 模式快速上手

适合只暴露一个服务、不想折腾配置文件的场景。

在 Cloudflare Zero Trust 面板创建隧道

  1. 登录 Cloudflare Zero Trust Dashboard
  2. 左侧菜单选择 NetworksTunnels
  3. 点击 Create a tunnel,选择 Cloudflared 作为 connector
  4. 填写隧道名称
  5. 切换到 Public Hostnames 标签页,添加路由规则:
    • Subdomain:子域名,如 app
    • Domain:选择你的主域名
    • Service:选择 HTTP
    • URL:内网服务地址,如 localhost:8080
  6. 获取 Token

直接启动

复制 Token,然后在终端运行:

1
cloudflared tunnel --no-autoupdate run --token eyJvIjoi...你的Token...abc123

一个命令搞定。多个不同域名的服务就需要 Config 模式了。

四、方案 B:Config 模式(生产环境推荐)

认证登录

1
cloudflared tunnel login

执行后弹出浏览器窗口要求授权。完成后 ~/.cloudflared/ 目录下会生成 cert.pem 文件。

创建隧道

1
cloudflared tunnel create my-web-tunnel

记录输出的 JSON 凭证文件路径和 Tunnel ID。

1
cloudflared tunnel list

配置路由规则

编辑 ~/.cloudflared/config.yml

1
2
3
4
5
6
7
8
9
10
11
tunnel: your-tunnel-id-here
credentials-file: /home/user/.cloudflared/your-tunnel-id.json

ingress:
- hostname: app.example.com
service: http://localhost:8080

- hostname: ssh.example.com
service: ssh://localhost:22

- service: http_status:404

最后的 catch-all 规则是必须的。

添加 DNS 路由记录:

1
2
cloudflared tunnel route dns my-web-tunnel app.example.com
cloudflared tunnel route dns my-web-tunnel ssh.example.com

启动 Tunnel

1
cloudflared tunnel --config ~/.cloudflared/config.yml run my-web-tunnel

看到输出中有多行 ConnectedHealthy 字样,说明隧道已成功建立。

后台服务化

systemd 方式

创建 /etc/systemd/system/cloudflared-tunnel.service

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Cloudflared Tunnel
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/cloudflared tunnel --config /home/user/.cloudflared/config.yml run my-web-tunnel
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
1
2
3
sudo systemctl daemon-reload
sudo systemctl enable cloudflared-tunnel
sudo systemctl start cloudflared-tunnel

Docker Compose 方式

1
2
3
4
5
6
7
version: "3"
services:
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
restart: unless-stopped
command: tunnel --no-autoupdate run --token eyJvIjoi...你的Token...abc123
1
2
docker compose up -d
docker logs -f cloudflared

五、各种服务的穿透配置

HTTP/HTTPS Web 服务

1
2
3
4
5
6
7
8
ingress:
- hostname: web.example.com
service: http://localhost:3000
originRequest:
noTLSVerify: false
connectTimeout: 10s
httpHostHeader: "localhost:3000"
- service: http_status:404

originRequest 可自定义超时、是否跳过 TLS 验证等参数。

SSH 穿透

服务端 config.yml

1
2
3
4
ingress:
- hostname: ssh.myserver.com
service: ssh://localhost:22
- service: http_status:404

客户端连接方式1:直接用 cloudflared 命令行连接

1
cloudflared access ssh --hostname ssh.myserver.com

客户端连接方式2:配置 ~/.ssh/config

1
2
3
4
Host my-server
HostName ssh.myserver.com
User root
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h

然后直接 ssh my-server 连入。

TCP 非 HTTP 服务穿透

MySQL(3306)、Redis(6379)等不支持 HTTP 的服务:

1
2
3
4
ingress:
- hostname: db.example.com
service: tcp://localhost:3306
- service: http_status:404

WebSocket 支持

天然支持,不需要额外配置。

多服务多域名

同一个隧道同时映射多个域名:

1
2
3
4
5
6
7
8
9
10
ingress:
- hostname: www.example.com
service: http://localhost:3000
- hostname: api.example.com
service: http://localhost:8080
- hostname: admin.example.com
service: http://localhost:8081
- hostname: ssh.example.com
service: ssh://localhost:22
- service: http_status:404

六、高级配置与优化

连接健康检查

1
2
3
4
5
6
7
8
9
metrics: :9000

ingress:
- hostname: app.example.com
service: http://localhost:8080
originRequest:
connectTimeout: 30s
keepAliveConnections: 100
keepAliveTimeout: 90s

访问控制(Zero Trust Access)

在 Zero Trust 面板 → Access → Applications 创建应用,关联隧道域名,设置规则:

  • 允许特定邮箱域名
  • 允许特定群组
  • 启用 MFA 验证

日志调试

1
2
journalctl -u cloudflared-tunnel -f
cloudflared tunnel ingress test --url https://app.example.com

常见问题排查

问题 可能原因 解决方法
Tunnel 连接后很快断开 网络不稳定 检查出口网络连接
无法访问 ingress 规则错误或服务未启动 cloudflared tunnel ingress test 测试
SSL 证书报错 CNAME 未正确绑定 确保域名 CNAME 指向 .trycloudflare.com
登录失败 cert.pem 权限或过期 重新执行 cloudflared tunnel login

七、总结

  • 快速试用:直接用 --token 模式一行命令启动。
  • 生产部署:推荐 Config 模式 + systemd 托管,配合 Cloudflare Access。
  • 批量管理:考虑 Connectors 模式或脚本自动化方案。

Cloudflare Tunnel 最大的优势就是安全——内网服务不出现在公网面上,不需要开任何防火墙规则。所有流量经过 Cloudflare 边缘节点加密传输,配合 Access 可以做到细粒度的访问控制。

不管是个人的博客、内网管理系统、SSH 跳板机,还是各种私有协议服务,Cloudflare Tunnel 都能胜任。


本文由 BOSH 的博客助手 HerMes 整理 🚀

原文链接:[本地上传]

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/27322.html
版权声明:本文由BoSh发布,部分内容来源于网络。