通过 Cloudflare Tunnel 内网穿透实现公网访问内网服务
简介
Cloudflare Tunnel 提供了一种将资源连接到 Cloudflare 的安全方法,无需公共可路由 IP 地址。使用 Tunnel 不会将流量发送到外部 IP,而是由基础设施中的轻量级守护程序 (cloudflared) 创建与 Cloudflare 全球网络的仅出站连接。
Cloudflare Tunnel 可以将 HTTP Web 服务器、SSH 服务器、远程桌面和其他协议安全地连接到 Cloudflare。这样,您的源站就可以通过 Cloudflare 提供流量,而不会受到绕过 Cloudflare 的攻击。
换句话说,于我而言,由于在中国大陆地区家庭宽带不允许提供 Web 服务,并且 80、443 端口基本都被封禁,那么可以通过 Cloudflare Tunnel 来访问家庭内网的一些服务,例如路由器、AdGuard Home 后台管理面板进行管理等等
开通 Zero Trust 套餐
首先需要前往「Cloudflare Zero Trust」开通一个套餐,一般来说选择「Free」免费套餐就可以了
部署 Tunnel
在「Networks」的「Tunnels」,创建一个新隧道
隧道类型选择「Cloudflared」
填写隧道名称
选择通过什么方式部署,因为我本地网络有 Docker 索性就选择 Docker,页面提供了完整命令复制到终端运行即可:
sudo docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiMjNjNTU1OWJhMzdhOWRiYTgxMTRhMTEyMmFjNzA3NWIiLCJ0IjoiMDdmYjY5NzYtZjY4YS00MDRjLTkxYjUtOTkxOWM1MTE0NjNhIiwicyI6Ik5UQmxOakl3TldFdE16YzNOQzAwTUdVNUxXRXdOREF0TjJWaE9UTTBaVEV6Tm1VeCJ9
然后选择设置一个托管于 Cloudflare 域名(如 example.com
)并设置一个子域名用于访问,例如打算将 AdGuard Home 的管理后台弄成外网可访问的,则子域名自定义成 adguard
,然后「协议」选择 HTTP
,「URL」设置成 localhost
或内网相应 IP 加上端口号
然后在浏览器访问如 https://adguard.example.com
就可以看到成功了,没错是 https 噢,Cloudflare 真是特别棒 👍🏻