Cloudflare 从入门到精通 10. Tunnel 内网穿透神器

Cloudflare 从入门到精通 10. Tunnel 内网穿透神器

DeBill Lv2

📜 前言

如果你有网站或者应用部署在自己的家用电脑上,又想通过公网的访问的你的网站,要怎么办呢?

方式一:将应用搬到有公网 ip 的服务器上

这种方式需要你购买一台服务器,同时要会一些基础的项目部署技巧,但是如果你想在服务器跑一些用到 GPU 的应用,那么你需要租用非常昂贵的服务器,同时所有操作都必须使用命令行,有些朋友也未必熟悉 Linux,而家用电脑的独立显卡除了可以玩游戏还可以跑模型,部署现在大火的大模型比租用服务器便宜多了,租用云服务器并不是一个好选择

方式二:跟运营商申请公网 ip

找运营商获取公网 ip 很麻烦,会问你要公网 ip 做什么,还要备案等一系列手续,而且 ip4 的公网 ip 还不一定有等等问题。

此时你可以考虑使用 Cloudflare Tunnel 无需公网 ip 实现内网穿透。本文会教你快速上手 Cloudflare Tunnel、如何查看 Tunnel 日志、同时对其优缺点进行讲解。

🧾 教程

创建 Tunnel

登录 Zero Trust ↗  选择  Networks > Tunnels. 点击 Create a tunnel 创建一个通道

create-a-tunnel

我们选择 Select Cloudflared, 不要选择 WARP

select-cloudflared

给你的 tunnel 命个名,然后点击Save tunnel

tunnel-name

接下来进入安装页面,cloudflared 支持多平台安装,甚至包括 Docker 的安装方式,我的 Macbook 已经安装过 cloudflared 了,所以选择右侧的安装命令。

install-tunnel

本地安装成功后,在 tunnel 的后台可以看到 Connectors 下面已经联通的 tunnel,再点击右下角的 Next

connectors

这个页面是用于配置公网访问的域名和你本地服务的映射关系,注意!这个域名必须托管在 Cloudflare 上。这里我让所有访问 https://tunnel.debill.cc 的流量都转到本地的 4000 端口

tunnel-config

启动本地服务

这里我以我的博客举例,在本地机器上启动服务。

blog-local-run

在 Cloudflare tunnel 的后台可以看到 tunnel 的状态是 healthy,说明我们可以直接通过刚刚设置的域名访问本地服务。

PS:如果刚启动完本地服务访问不通可以再等等再试试,偶尔会遇到这样的情况

tunnel-status-healthy

通过刚刚设置的域名可以正常访问本地应用

tunnel-debill-cc

当我将本地应用停了,再次访问 https://tunnel.debill.cc/ 就变成 Error code 502

access-502

📝 日志查看

有两种方式可以查看 tunnel 的访问日志,一种是在 Cloudflare 的控制面板查看,另一种方式是启动的时候指定日志参数

在控制台查看日志

回到 Cloudflare tunnel 的后台,点击 Connector ID

connector-id

再点击 Begin log stream 就可以获取当前访问服务的实时日志,还能将日志下载成 csv 格式的文件,当然这种方式只适合偶尔查看日志。

log-stream

使用命令行输出日志

前面我们启动 cloudflared 的时候没有设置日志输出,其实可以在启动的时候执行以下命令,就能将后台日志打印到我们本地文件

1
cloudflared tunnel --logfile mytunnel.log run <UUID>

🌟 优点&缺点

优点

核心组件开源

tunnel 依赖的核心组件 cloudflared是用 go 语言编写的开源项目,相比其他内网穿透软件安全性有极大的保障,任何问题也可以通过社区去寻找答案。我了解不少号称免费的内网穿透软件都被爆出有安全问题。

跨平台支持

Cloudflare tunnel 可以做到全平台支持(Windows / MacOS / Linux), 其他的内网穿透软件只支持个别平台

缺点

访问不稳定

有不少朋友反馈,在境内使用 tunnel 会不稳定,有时候访问速度很慢,甚至有无法访问应用的情况

学习成本

Cloudflare 官方提供的安装方式很多都需要命令行,这对不懂代码的朋友有一定学习的成本,不像其他内网穿透的软件,一键安装就可以使用

📝 总结

使用 Cloudflare tunnel 实现内网穿透,前置条件是域名必须托管在 Cloudflare 上,如果你有一些自用的服务部署在了家用服务器,又难以获取公网 ip,可以尝试用 tunnel 内网穿透,唯一的缺点可能是境内访问不稳定,如果是对外提供的服务还是建议使用正常的部署方式,不要使用内网穿透。

本文只介绍了 http 协议的内网穿透方式,实际 cloudflared 还能支持 SSH/ gRPC 等协议,想深入了解的朋友可以自己多尝试尝试

  • 标题: Cloudflare 从入门到精通 10. Tunnel 内网穿透神器
  • 作者: DeBill
  • 创建于 : 2024-12-31 20:54:00
  • 更新于 : 2025-01-09 23:09:41
  • 链接: https://debill.me//cloudflare-series/cloudflare-tunnel-10/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论