对于访问在内网的站点,通常可以使用 DDNS,VPN 隧道或者在拥有公网 IP 的服务器做反向代理。在没有公网 IP 的情况下采用最多的是 DDNS,如NoIP,花生壳。Cloudfalre Tunnel 提供了另外一种无需公网 IP 访问内网资源的途径。
Cloudfalre Tunnel 工作方式如下。Cloudfalre 托管一个网站,通常只是一个域名的 DNS 解析。例如 yoursite.com,其中一个是 tunnel.yoursite.com。在 Cloudfalre Tunnel 创建一个隧道,绑定域名 tunnel.yoursite.com。在一个内网服务器上运行后台程序 cloudflared,由其提供 tunnel.yoursite.com 所需的业务,如 HTTPS/SSH/TCP 等连接 。当用户访问 tunnel.yoursite.com 时,Cloudfalre 的云服务会自动从对应隧道的 cloudflared 获取需要的数据并将其提供给访问的用户。
第一步点击 Cloudfalre Dash 的 Zero Trus。点开 Access -> Tunnels,点击右边的 Create a tunnel,输入一个隧道的名称。
第二步,根据内网服务器的操作系统和 CPU 类型,复制自动生成的命令,并在服务器上运行。运行成功后,服务器与 Cloudfalre Tunnel 就建立了连接。Tunnel 目前已经支持了 Win/Mac/Debian/Docker 多种系统。CPU 也涵盖了 X86,Arm64,Arm32。
第三步,点击建立隧道的 Public Hostname 标签页。点击右边的 add a public hostname。
Subdomain 是该隧道的子域名。Domain 下来菜单中选择在 Cloudflare 托管的站点。Service 是对应内网服务器提供的业务类型。:// 后面的 URL 是内网服务器上业务侦听的地址和端口。点击 Save hostname 后即可。
此时,在 DNS 记录里可以看到一条 CNAME 解析,UUID.cfargotunnel.com 被指向了刚才设置的隧道子域名。
Cloudfalre Tunnel 能在没有公网 IP 的情况下建立一个隧道。同时可以避免客户端直接连接内网服务器。数据交互通过 Cloudfalre 的云服务器中转,所以连接速度可能受到网络环境的限制。