使用 Cloudflare Tunnel 实现内网穿透
建立 Tunnel
-
在 Cloudflare Zero Trust 打开
网络>Tunnels,点击添加隧道。
-
选择
Cloudflared,然后为隧道命名。 -
安装连接器:
# 添加 cloudflare gpg 公钥 curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list # 安装 cloudflared sudo apt update sudo apt install cloudflared -
运行连接器:
sudo cloudflared service install xxxxxxxxxxxxxxxxxxxxx -
路由隧道:
- 添加公共主机名:选择一个你托管在 Cloudflare 的域名,这将是你从公网访问内网服务时使用的域名。
- 添加服务:比如
http://192.168.1.2:8080,这是你想要访问的内网服务的地址。
-
保存隧道。
现在你已经成功建立了一条 Cloudflare 隧道。可以在本地开一个服务测试网络连通性:
python -m http.server 8080如果一切正常,你将能够从
http://app.yourdomain.com:8080访问到内网机器的文件目录。
SSH
⚠️ 不要将弱密码机器暴露在公网
-
建立 SSH Tunnel 的方式和 HTTP 相同,只是添加服务时使用
ssh://192.168.1.2:22。 -
接下来,编辑
~/.ssh/config:Host ssh.example.com HostName ssh.example.com ProxyCommand cloudflared access ssh -T %h -
接下来就可以通过
ssh ssh.example.com连接你的内网主机了。
参考:Cloudflare tunnel 实现内网穿透 SSH, SMB 和 web: 老旧笔记本第二春 | nanguoyu.com
建立 Application
直接将内网服务暴露到公网是非常危险的。我们需要身份验证功能确保只有正确的人才能访问内网服务。
-
在 Cloudflare Zero Trust 打开
Access>应用程序,点击添加应用程序。
-
选择
自托管,然后配置应用程序。- 添加公共主机名。选择你刚才创建隧道时使用的主机名。
- 创建 Access 策略。Access 策略决定了哪些用户有权访问应用程序。可以在 Access 策略中添加一个基于 Email 的规则,以允许我们的邮箱通过认证。
- 管理登录方法,用户必须使用你设置的登录方法登录。保持默认的
One-time PIN即可。 - 其他选项保持默认值,完成配置。
-
此时访问
http://app.yourdomain.com:8080,你将会看到身份验证窗口,验证通过后才可以访问内网服务。
如果你的用户无法通过 Access 策略,你将无法收到验证码。

浙公网安备 33010602011771号