Cloudflare Tunnel 让没有公网 IP 的用户也能轻松实现内网穿透,但暴露的内网服务始终存在安全隐患——你的服务可能没有密码、使用弱密码,或者存在未公开的漏洞。本文将详细介绍如何结合 Cloudflare Access 叠加一层企业级身份鉴权,让你的内网服务多一道坚实的安全防线。

一、为什么要给 Tunnel 加 Access?
很多使用 Cloudflare Tunnel 做内网穿透的用户,以为只要用了 Tunnel 就万事大吉了。但事实并非如此:Tunnel 虽然比公网端口映射更安全、更可控,但它本质上是将内网服务暴露到了公网。很多内网服务根本没有密码,或使用 123456 之类的弱密码;部分用户开启了 IPv6,配合 DDNS 同样会让内网服务暴露在公网之下。
Cloudflare Access 就是解决这个问题的终极方案。它可以在 Tunnel 前面增加一层验证,只有通过身份认证的用户才能访问你的内网服务。
二、Access 的核心能力
Cloudflare Access 提供了丰富的访问控制能力:
- 多种登录方式:支持邮箱一次性验证码(One-time PIN)、GitHub OAuth、Google OAuth 等多种身份认证方式
- IP 和地区限制:可以精确控制哪些 IP 段或哪些国家的用户可以访问,策略外的 IP 直接显示 Forbidden
- 精细化路径控制:支持整站鉴权,或仅对 /admin、/wp-admin 等特定路径单独加鉴权
- 会话管理:可设置登录后的 Session Duration,控制重新认证的频率

三、前置条件
- 已通过 Cloudflare Tunnel 配置好内网穿透
- 一个 Cloudflare 账号(免费版即可)
- Access 属于 Zero Trust 产品,需要绑定支付方式才能启用,但免费计划完全足够个人使用,不会产生任何费用
四、详细配置步骤
第一步:配置登录方式(身份认证)
Cloudflare Access 默认使用 One-time PIN(邮箱接收一次性验证码)作为登录方式。你也可以添加 GitHub OAuth 登录,实现一键登录:在 GitHub → Settings → Developer Settings → OAuth Apps → New OAuth app 创建应用。Homepage URL 填写 https://<your-team-name>.cloudflareaccess.com,Authorization callback URL 填写 https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback。其中 your-team-name 可在 Zero Trust → Settings → Team name and domain 中查看。
复制生成的 Client ID 和 Client secrets(secrets 只显示一次,务必及时保存到密码管理器),返回 Zero Trust 设置页面填入即可。

第二步:配置访问策略(最关键的一步)
策略是 Access 的核心。如果不配置好策略,任何人都能通过验证访问你的服务。策略由三类规则组成:
| 规则类型 | 说明 |
|---|---|
| Include | 满足任一条件即可(如邮箱属于某域名) |
| Require | 满足全部条件才通过(如特定 IP + 特定邮箱) |
| Exclude | 排除特定条件(如屏蔽某 IP 段) |
推荐配置:IP ranges 只允许你常用的 IP 段访问(其他 IP 直接显示 Forbidden);Emails 只允许你的个人邮箱登录;Login Methods 只允许 GitHub OAuth。
第三步:创建应用绑定域名
进入 Access → Applications → Add Application,类型选择 Self-hosted。填写应用名称和 Session Duration,在 Public hostname 处填写需要鉴权的域名和路径(整站鉴权则路径留空,仅后台鉴权则填 /admin)。关联前面创建的策略,勾选登录方式,确认即可。

五、配置完成后的效果
配置完成后:未授权的 IP 地址直接显示 Forbidden 页面,连验证页面都看不到;授权 IP 且未登录时跳转到 Cloudflare Access 鉴权页面,显示登录选项;已登录 GitHub 账号时自动通过 OAuth 验证,直接跳转到目标网站。
六、安全建议
- 策略中一定要配置好邮箱、IP 等限制,否则任何人都能通过验证
- 建议先使用 Test policies 功能测试策略是否符合预期
- Zero Trust 免费计划已足够个人使用,但需要绑定支付方式
- Client secrets 只显示一次,务必及时保存
- Session Duration 建议根据需要设置,过长降低安全性
七、总结
Cloudflare Tunnel + Access 的组合是目前最安全、最便捷的内网穿透方案之一。即使内网服务本身没有密码,Access 也能提供企业级的身份验证保障。这一切都是免费的——对于个人用户来说,没有比这更划算的安全方案了。强烈推荐所有使用 Cloudflare Tunnel 的用户都配置上 Access。
原创文章,作者:kp51,如若转载,请注明出处:https://www.kepu51.com/instant-messaging/700.html
