Cloudflare Tunnel 零信任隧道搭建教程
Cloudflare Tunnel(原名 Argo Tunnel)是 Cloudflare 提供的零信任网络隧道服务,通过在本地运行一个轻量级的 cloudflared 守护进程,将内网服务安全地暴露到互联网。最大的优势在于不需要在防火墙上开放任何入站端口,所有连接都是出站发起的,从根本上消除了端口扫描攻击的风险。本教程将介绍如何在搬瓦工 VPS 上配置 Cloudflare Tunnel。
一、Cloudflare Tunnel 的优势
- 零端口暴露:不需要在防火墙上开放任何入站端口。
- 自动 HTTPS:Cloudflare 自动提供 SSL/TLS 证书。
- DDoS 防护:流量经过 Cloudflare 全球 CDN 网络,自带 DDoS 防护。
- 访问控制:集成 Cloudflare Access,可配置邮箱验证、SSO 等认证方式。
- 免费使用:基础隧道功能完全免费。
二、前提条件
- Cloudflare 账户(免费即可)。
- 一个已添加到 Cloudflare 的域名(DNS 托管在 Cloudflare)。
- 搬瓦工 VPS 已部署要暴露的服务。
三、安装 cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
dpkg -i cloudflared-linux-amd64.deb
CentOS 系统使用 RPM 包:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
rpm -i cloudflared-linux-x86_64.rpm
验证安装:
cloudflared --version
四、认证登录
cloudflared tunnel login
命令会输出一个 URL,在浏览器中打开并选择要使用的域名进行授权。授权后会在 ~/.cloudflared/ 目录下生成证书文件。
五、创建隧道
cloudflared tunnel create my-tunnel
创建成功后记录隧道 ID(UUID),后续配置需要使用。
六、配置隧道路由
创建配置文件:
mkdir -p ~/.cloudflared
cat > ~/.cloudflared/config.yml <<EOF
tunnel: 隧道UUID
credentials-file: /root/.cloudflared/隧道UUID.json
ingress:
- hostname: app.yourdomain.com
service: http://localhost:8080
- hostname: ssh.yourdomain.com
service: ssh://localhost:22
- hostname: nas.yourdomain.com
service: http://localhost:5000
- service: http_status:404
EOF
最后一条 http_status:404 是必须的默认规则,处理所有未匹配的请求。
6.1 配置 DNS 记录
cloudflared tunnel route dns my-tunnel app.yourdomain.com
cloudflared tunnel route dns my-tunnel ssh.yourdomain.com
cloudflared tunnel route dns my-tunnel nas.yourdomain.com
此命令会自动在 Cloudflare DNS 中创建 CNAME 记录。
七、启动隧道
cloudflared tunnel run my-tunnel
验证隧道状态:
cloudflared tunnel info my-tunnel
7.1 注册为系统服务
cloudflared service install
systemctl enable cloudflared
systemctl start cloudflared
八、通过 Dashboard 创建隧道
除了命令行方式,也可以直接在 Cloudflare Zero Trust Dashboard 中创建和管理隧道。登录 Cloudflare Dashboard,进入 Zero Trust - Networks - Tunnels 页面,点击创建隧道后会生成一条安装命令,直接在 VPS 上执行即可:
cloudflared service install eyJhIjxxxxxxxxxxxxxxxxx
Dashboard 创建的隧道可以在网页上直接管理路由规则,无需编辑配置文件。
九、配置 Cloudflare Access 访问控制
对于敏感服务(如 SSH、管理面板),建议配置 Cloudflare Access 进行身份验证:
- 在 Zero Trust Dashboard 中创建 Access Application。
- 设置允许访问的邮箱地址或域名。
- 用户访问时会先经过 Cloudflare 的登录页面验证身份。
这为内网服务增加了一层强大的身份认证保护,即使不小心泄露了域名也不用担心。
十、SSH 通过浏览器访问
配合 Cloudflare Access,可以实现通过浏览器直接访问 SSH 终端,在 ingress 规则中使用 SSH 协议后,在 Access 中启用 Browser Rendering 功能即可。
十一、常见问题
隧道连接不稳定
查看 cloudflared 日志排查原因:
journalctl -u cloudflared -f
502 错误
通常是本地服务未启动或端口配置错误,确认本地服务正常运行:
curl -v http://localhost:8080
总结
Cloudflare Tunnel 是目前最安全便捷的内网服务暴露方案,不需要管理证书,不需要开放端口,还附带了 CDN 加速和 DDoS 防护。在搬瓦工 VPS 上配合使用,可以让你的各种自部署服务安全地对外提供访问。如果需要纯自建的穿透方案,可以参考 FRP 教程 或 NPS 教程。购买搬瓦工 VPS 请查看 全部方案,使用优惠码 NODESEEK2026 可享 6.77% 折扣,购买链接:bwh81.net。