内网穿透:白嫖 Cloudflare Tunnel 免费 HTTPS 和访问防护


前置条件

使用 Cloudflare 的 Tunnel 服务需要使用 cf 提供的域名解析。

如果没有域名,建议花钱注册,很便宜(不推荐找免费域名,Freenom 已停止用户申请,如果想碰碰运气,可以申请 nom.za 域名,参考:教程,我等了十多天还在显示 Pending)

如果没有域名,可以注册免费的 US.KG 域名,参考这篇文章:《注册 US.KG 免费域名》

另外,服务有免费的额度,但使用服务前需要绑定信用卡。

添加 Website

选择免费方案

获取到 NS

得到 Cloudflare nameservers 地址

grace.ns.cloudflare.com
todd.ns.cloudflare.com

在购买域名的地方配置上这个 NS 地址,等待一段时间后,面板上显示 “Active” 即配置完成


创建隧道(Tunnel)

Tunnel 功能的入口不太好找,点击侧边栏 Zero Trust,跳转后找到 “Networks” - “Tunnels”

首次使用需要填写 team name 和付款方式

Free,启动!

点击 “Create a tunnel” 创建隧道,选择 “Cloudflared” 类型

创建名为 “vpc-01” 的 Tunnel

安装 Connector,注意一个 Tunnel 搭配一个 Connector,这个 Connector 作为 Agent 运行在设备上,即 Cf 网络跟设备建立起了一个安全的隧道

根据面板的命令安装 cloudflared 类型的 Connector

执行安装

$ sudo cloudflared service install eyJhIjoiYj...

(可选)如果机器已安装过,需要重新安装服务,需要先卸载

$ sudo cloudflared service uninstall

服务启动后,Connectors 处可以看到已有机器连接

下一步,添加转发规则

如上配置即通过 https://abc.donx-done.xyz 访问内网服务器的 http://127.0.0.1:3000 端口提供的 HTTP 服务

这就是 Tunnel 的用法

为服务添加额外验证

可以使用 Application 功能为服务添加额外的安全验证。

还是在 Zero Trust 页面的左侧区域,点击 “Access” - “Applications”,选择 Self-hosted 类型

填写要保护的域名,跟 Tunnel 规则中的域名相同

添加访问策略

允许配置规则如验证邮箱后缀、IP 地址、国家地区等

其余配置暂保持默认,创建即可

刷新网站,可以看到 CF 的访问保护已开启

输入邮箱,点击发送,会收到一个验证码,填入后即可访问服务

补充

使用 CloudFlare Tunnel 有如下用途,摘自参考一

总结

之前体验了 Tailscale 提供的服务 Funnel —— 《Tailscale 异地组网服务使用体验记录》

相较于 Funnel,CloudFlare Tunnel 更容易使用,它将用户内网的服务通过 CF Connector Agent 连接到 CF 网络暴露到互联网,由 CF 确保链路安全,免费用户可白嫖 HTTPS 和访问防护等服务,侧重内网穿透。

而 Tailscale 则更侧重于为用户提供安全的设备间组网,认证设备间的共享和访问,其中的 Funnel 更像是 Tailscale 整体服务的一个子功能,跟 Tunnel 功能类似,单从暴露服务来说,我认为 CloudFlare Tunnel 更加易用。

以个人用户的 NAS 为例,Tailscale 和 CloudFlare Tunnel 选择考量如下(GPT-4o 回答)

如果你希望你的 NAS 服务可以被公网访问(例如分享某些资源给非技术用户或合作伙伴),并且希望利用 Cloudflare 的安全和性能增强功能,选择 Cloudflare Tunnel

如果你主要是自己和少数信任的设备需要访问你的 NAS,并且不想将服务公开到互联网,可以选择 Tailscale 来实现安全内网访问,Tailscale 提供了很好的安全性和便捷性,并且很适合需要私密、点对点连接的场景。

总结来说,Cloudflare Tunnel更适合公开访问和利用高级安全功能,而Tailscale更适合创建一个安全私人网络来访问你的 NAS。根据你的具体需求和首要考虑点(安全性、便捷性、公开访问需求等),你可以做出相应选择。

参考