抛弃花生壳 用CF Tunnel实现本机Web服务发布

2021-05-30|

估计很多都用过花生壳的动态域名来做过一些有意义的事情,可以打通内网,发布网站,远程控制啥的,但是配置麻烦,网络限制(80端口)可能会都会让这一切变得艰难。有什么很简单便捷而又安全好用的工具呢,今天我们就给大家介绍一个工具Cloudflare Tunnel,由世界最大的免费CDN运营商推出的SSL安全隧道服务。

概述

Cloudflare,简称CF真是良心厂商继免费CDN,陆续提供了Team、Pages等服务,最近又免费了Argo Tunnel。免费CDN提供站点统计、无限制Ddos防护,免费全站HTTPS,站点统计等很多人都在用(我自己的站点也在用),而其他服务可能鲜为人知,之前虫虫介绍过Pages服务,而Argo Tunnel则是更为有用的一个免费服务。

Cloudflare Tunnel提供一个安全便捷,跨网络的轻量级连接器,可以让我们在本机服务和Cloudflare之间创建安全的,仅出站连接。使用这种方式,用户无需配置防火墙,无需监听对外的IP地址,只要能访问公网就是能CF发布服务,把本机服务代理发布到公网。

Cloudflare Tunnel源于CF的Argo Smart Routing(Cloudflare的流量加速功能)部分功能,之前叫Argo Tunnel,是收费功能,基于带宽流量收费。最近该产品被分离出来免费开放并重命名为Cloudflare Tunnel。

安装部署

Cloudflare Tunnel的运行需要部署一个Golang开放的工具cloudflared,可以下载二进制版本,支持Linux,Mac和Windows版本。可以通过其官方Github仓发布下载,最新版本为2021.4.0。

在Mac下,可以通过brew命令来下载安装

brew install cloudflare/cloudflare/cloudflared

Linux下可以在官方网站下载Rpm和Deb包方式下载安装:

wget bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.rpm

rpm -ivh cloudflared-stable-linux-amd64.rpm

安装完成后,就可以使用。

简单使用

Cloudflare Tunnel可以以简单模式使用,无需认证CF帐户你可以使用。 只需装好Cloudflare守护程序,cloudflared命令就可以临时创建一个随机名称“trycloudflare.com”子域,并将流量代理到当前主机。

首先启动本机Web服务,可以是nginx,apache也可以其他的简单的Web服务器。

运行以下终端命令以启动免费隧道。cloudflared将开始将请求代理到的本地主机服务器,默认代理本机8080端口。

cloudflared tunnel

可以使用--url标志指定其他的端口端口,比如3000端口可以使用:

cloudflared tunnel --url localhost:7000

cloudflared将在连接到Cloudflare网络时生成一个随机子域并将其打印在终端中,显示类似如下:

注意其中的地址:

这就是临时生成地址,将该地址复制到任何浏览器,就可以访问了:

这是上次虫虫文章中提到的Docker部署的个Linux桌面应用。

简单模式,适用于任何临时情况下,任何主机(需要能访问公网)发布要给Web服务,可以用于测试,演示、共享等,基本流程:

在主机安装cloudflared,启动Web服务,然后创建隧道,将链接发给需要的的人,比如协作的伙伴,测试人员,你的客户等等。

创建命名隧道

命名隧道

上面的创建的隧道是临时,服务停止后,或者由于连接,网络等问题断开后,重连都会破坏临时隧道,新启动后隧道就会改变。实际上要在生产中使用,固定不变的持久化隧道可能是更有用。这个持久化隧道就是Cloudflare命名隧道。命名隧道隧道,具有要给固定的名称和不可变ID的 ,可以根据需要运行和停止。可以将其添加到DNS或Cloudflare Load Balancer记录中,实现固定的访问路径。

用户认证

命名隧道的建立需要CF用户认证,并关联到你名下一个域中,首先通过运行cloudflared tunnel login

对于GUI用户,会自动在浏览器中打开连接要求登陆CF账号,由于此处是shell终端,需要将显示URL的手动复制到浏览器中打开,并登陆。

会让你选择一个你的一个域名,并授权

这样为完成认证,并生成一个cert.pem证书文件,其中包含一个令牌,该令牌使cloudflared实例能够在帐户中创建命名隧道,并最终将DNS记录指向它们。

创建命名隧道

现在,就可以可以创建一个具有永久名称的隧道。运行

cloudflared tunnel create <name>

注意此处指定的name不必是主机名,可以按照实际情况分配一个代表应用程序,特定服务器或运行它的云环境的名称。DF将使用提供的名称并提供一个UUID共同创建一个隧道。名称将与cloudflared帐户相关联,只有该帐户中的DNS记录才会将流量代理到该连接。

可以用

cloudflared tunnel list

列出本机启动的命名隧道。

cloudflared tunnel delete <NAME>

删除一个隧道,对于运行中的隧道,需要-f强制删除。

cloudflared tunnel delete <NAME> -f

注意以上命令都需要前面认证中生成的cert.pem文件,为了安全可以在只在需要要时候才配置cert.pem文件(将其从默认目录挪走)。

配置隧道

cloudflared的实例,包括cloudflared会将流量代理到的URL 配置文件配置。 或者,可以使用以下步骤从命令行以临时模式运行“隧道”。

运行隧道

可以使用以下命令开始运行隧道:

cloudflared tunnel run <name> (<UUID>)

开始代理流量。如果运行的隧道没有cert.pem文件,而只有凭据文件,则必须使用

cloudflared tunnel run <UUID>。

转发流量

现在,可以决定如何将流量发送到此持久隧道。如果要在Cloudflare仪表板中创建长期DNS记录,则可以将其指向格式为“隧道UUID”子域的记录UUID.cfargotunnel.

也可以在“Cloudflare负载平衡器”面板中执行相同的操作,将该对象添加到负载平衡池中,在该池中,该对象将仅被视为一个其他来源。

也能用cloudflared命令创建DNS记录:

cloudflared tunnel route dns <name> <hostname>

cloudflared tunnel route dns <UUID> <hostname>

将DNS记录与隧道地址相关联。

重新启动该cloudflared实例后,无需重新创建名称,UUID和DNS记录,隧道就可以正常工作了。

凭证和证书管理

创建命名隧道后,就无需cert.pem文件就可以运行隧道并连接到Cloudflare的网络。

可以通过复制隧道的凭据文件,其位置为/home/用户/.cloudflared/UUID.json到其他主机,然后可以用它运行运行隧道。

也可以,将该凭据文件发给团队中的其他人运行隧道。

但是对隧道的管理,比如create,list和del仍然需要cert.pem文件来创建其他隧道,列出现有隧道,管理DNS记录或删除隧道。

凭证文件包含一个范围为特定隧道UUID的密码,该密码从以下位置建立连接 cloudflared 到Cloudflare的网络。cloudflared 像客户端一样运行,并建立从基础架构到Cloudflare边缘的TLS连接。

总结

Cloudflared tunnel给我们提供了一个便捷安全的Web服务发布方式,尤其是其简单模式下的临时隧道模式,可以非常有用,随用随起用,完即关特!别适合作为一个Web服务的共享。而且持久化的命名隧道则可以用来发布要给安全持续的Web服务,可以绑定到自己域,就可以发布要给安全的服务,也可以结合Cloudflared Team的零信任Access服务建立一个安全的内部网关,用来进行内部服务的共享、团队协作等,可以替代VPN来用。当然Cloudflared Tunnel还有很多应用场景,需要大家尝试发现和回复该文分享。


标签: 隧道 cloudflared 可以 Cloudflare Tunnel 一个 运行 创建 服务 使用
出处: https://www.toutiao.com/i6962073920455361036/

推荐

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护