受保护的 Quick Tunnels:为你的下一个开发项目提供简单的无账户身份验证

💡 原文英文,约2100词,阅读约需8分钟。
📝

内容提要

Cloudflare 为 Quick Tunnels 推出 --allowed-mail 功能,开发者无需账户即可限制访问者。cloudflared 在本地校验邮箱白名单,Cloudflare Access 验证邮箱所有权,访客通过一次性 PIN 登录。策略保存在本机,Cloudflare 不获知邀请名单。该功能由两名实习生开发,免费使用。

🔎

延伸解读

设计取舍:为何不集中管理策略

文章指出,团队最初考虑用 Cloudflare Access 应用为每个 Quick Tunnel 托管策略,但数十万隧道同时运行且生命周期短,集中管理不现实。最终方案将授权决策放在本地 cloudflared,认证交给 Access,既保持无账户,又避免中心化策略查询。这体现了在规模与隐私间的权衡。

隐私保护:邀请名单不离开本机

根据文章,cloudflared 在本地校验邮箱白名单,Cloudflare 仅知晓隧道启用了邮箱认证,但无法获知具体邀请名单。认证通过 Workers 上的无状态代理完成,不存储策略或会话。这种设计让开发者无需担心邮箱地址泄露给第三方。

使用限制与替代方案

文章说明,--allowed-mail 仅支持邮箱和域名通配,更改名单需重启隧道,且会话最长四小时。若需要稳定主机名或更丰富规则(如身份提供商组),应使用 Cloudflare Tunnel 配合 Cloudflare Access;若想从自有设备访问家中代理且不暴露公网,可考虑 Cloudflare Mesh。

对代理工作流的实际影响

文章提到,代理常自动创建 Quick Tunnel 分享预览,但可能忽略安全指令。开发者可在 AGENTS.md 中要求代理始终添加 --allowed-mail,并通过 cloudflared 输出确认隧道是否启用邮箱认证及规则数量。这为代理辅助开发增加了一层可控的访问保护。

❓

Q&A

Quick Tunnels 的 --allowed-mail 功能是什么?

这是 cloudflared 2026.9.3 版本引入的功能,允许开发者在启动 Quick Tunnel 时通过 --allowed-mail 参数指定允许访问的邮箱地址或域名。访客需通过 Cloudflare Access 的一次性 PIN 验证邮箱所有权,cloudflared 在本地校验白名单,只有匹配的访客才能访问本地服务。

如何使用 --allowed-mail 保护 Quick Tunnel?

在 cloudflared 命令中添加 --allowed-mail 参数,例如:cloudflared tunnel --url http://localhost:8080 --allowed-mail alice@example.com。可以重复该标志允许多个邮箱,或使用通配符允许整个域,如 '*@example.com'。若省略该参数,隧道保持公开。

受保护的 Quick Tunnel 如何验证访客身份?

访客打开 URL 后,cloudflared 将其重定向到 login.trycloudflare.com。Cloudflare Access 向访客邮箱发送一次性 PIN 并验证。验证后,一个无状态的 broker 返回短期签名断言,cloudflared 在本地校验该断言并将邮箱与规则比对,匹配则创建本地会话。

使用 --allowed-mail 时,Cloudflare 能看到我的邀请名单吗?

不能。策略保存在本机,cloudflared 在本地进行授权决策。Cloudflare 只知道隧道需要邮箱认证,但不会获知具体的邀请名单。broker 是无状态的,不存储隧道策略、访客会话或身份记录。

受保护的 Quick Tunnel 会话持续多久?

本地会话最长持续四小时,如果访客的 Access 登录提前过期则会更短。会话在 cloudflared 进程停止时立即结束。会话 cookie 只包含随机值和过期时间,不包含访客身份信息。

如何让我的编码代理默认使用受保护的 Quick Tunnel?

在代理读取的指令文件(如 AGENTS.md)中添加一行,例如:'When you start a Quick Tunnel, always add --allowed-mail me@example.com.'。由于代理不一定遵守指令,可以通过 cloudflared 的输出检查隧道是否启用了邮箱认证以及规则数量。

受保护的 Quick Tunnel 是免费的吗?

是的,邮箱保护功能与 Quick Tunnels 本身一样免费。只需安装或更新 cloudflared,启动本地服务器,并添加 --allowed-mail 标志即可使用。

🏷️

标签

➡️

继续阅读