如何在 Linux 上设置 Cloudflare 隧道
您现在可以使用 GUI 来设置 Cloudflare Tunnels 而不是 CLI,这更加简化且易于操作。 [ ](/realchaika)[ 如何设置 Cloudflare 隧道(新 - 使用 GUI 方法) RealChaika ・ 3 月 26 日 ・ 5 分钟阅读 #tutorial #devops #cloud ](/realchaika/how-to-setup-a-cloudfla
您现在可以使用 GUI 来设置 Cloudflare Tunnels 而不是 CLI,这更加简化且易于操作。
[
](/realchaika)[
如何设置 Cloudflare 隧道(新 - 使用 GUI 方法)
RealChaika ・ 3 月 26 日 ・ 5 分钟阅读
#tutorial #devops #cloud
](/realchaika/how-to-setup-a-cloudflare-tunnel-new-using-gui-method-4maf)
什么是 Cloudflare 隧道
Cloudflare 隧道可用于仅使用出站连接公开内部服务。想想 Ngrok 隧道。 Cloudflare Tunnels 可用于代理正常的 http/https 连接、ssh/vnc,以及更高级的东西,如任意 TCP,但有更多限制。
使用 Cloudflare Tunnels 的优点是不必在您的 Web 服务器上打开任何端口,不需要任何诸如 IP 限制、源证书检查等。Cloudflare Tunnels 还使用 http/2 连接到 Cloudflare 的 Edge(很快 http3/quic) ,而通常 Cloudflare 只会通过 http/1.1 连接到源。
本指南将重点介绍通过 http 为普通 Web 服务器设置隧道。重要的是要记住,由于隧道充当流量的代理,因此 Web 服务器(或您通过隧道公开的任何内容)会将所有传入流量视为 localhost。您将需要从标头中获取真实用户的 IP(正常的 cdn 事物),但也不要依赖于将任何资源限制为 localhost。
Cloudflare 隧道的定价/限制
Cloudflare 隧道完全免费。 Cloudflare Tunnels 曾经被命名为 Cloudflare Argo Tunnels,并且需要 Cloudflare Argo 订阅。Cloudflare Argo是 Cloudflare 提供的一项服务,他们将使用“更智能的路由”将请求路由到您的来源,从而避免网络拥塞,按传输的每 GB 收费。
现在 Cloudflare 已经完全分离了产品,而您仍然可以购买 Argo 订阅来尝试加快到您的来源的流量。任何流量的隧道都是免费的,只有几个限制:每个帐户1000 个隧道,以及从每个隧道到 Cloudflare 边缘的 100 个活动连接。
要求:
-
Cloudflare 帐户(免费)
-
域添加到 Cloudflare(使用 CF 名称服务器等)
-
已配置 Web 服务器的 Linux 服务器
-
不需要端口转发或允许通过防火墙
如何设置 Cloudflare 隧道
安装 Cloudflared
Cloudflare Tunnels 使用 Cloudflared,一个隧道守护程序来代理来自 Cloudflare 的流量,并提供 CLI 界面来创建和管理隧道。
.deb 安装(Ubuntu、Linux Mint、Debian 等)
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared-linux-amd64.deb
进入全屏模式 退出全屏模式
.rpm 安装(Centos、Fedora、Rhel、OpenSusu 等)
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm && sudo rpm -i cloudflared-linux-x86_64.rpm
进入全屏模式 退出全屏模式
登录 Cloudflared
cloudflared tunnel login
进入全屏模式 退出全屏模式
此命令应为您提供登录 Cloudflare 的链接,并选择一个区域(网站)以在其上创建隧道。
完成后,它将下载一个帐户证书(默认 cloudflared 目录中的 cert.pem 文件)。该证书将用于授权未来的 API 请求以创建和管理隧道。一旦您的隧道启动并运行,它将使用自己的凭据文件,您可以安全地删除它,除非您想继续从这台机器管理/创建/删除隧道。
创建隧道
cloudflared tunnel create <name>
进入全屏模式 退出全屏模式
此命令将根据输入的名称创建一个命名隧道。它将生成一个新隧道,这包括为隧道生成一个 UUID、默认 cloudflared 目录中的隧道凭据文件,以及可用于将请求路由到的 .cfargotunnel.com 子域。
在这个例子中,我将把我的隧道命名为“frontpage”。
创建你的隧道配置文件
在过去的两个步骤中,在登录并创建帐户证书、创建隧道、生成隧道证书之后,cloudflared 列出了您的 .cloudflared 目录的路径,该目录很可能基于您的主目录。
诸如“~/.cloudflared”或“/home/{username}/.cloudflared”之类的东西
现在导航到该文件夹。您应该会看到 cert.pem(您的帐户证书)和一个以隧道的 UUID 命名的 .json 文件。
在同一目录中创建一个新文件 config.yml,然后使用您喜欢的文本编辑器打开它。
url: http://localhost:80
tunnel: <Tunnel-UUID>
credentials-file: /home/{username}/.cloudflared/<Tunnel-UUID>.json
进入全屏模式 退出全屏模式
URL 行对应于您希望公开的内部服务。不需要使用 https://,Cloudflare Tunnel 和 Cloudflare 的数据中心之间的连接已经加密。这只是本地连接到 Web 服务器的隧道。
隧道 UUID 是一个 36 个字符的值,与您命名的隧道相对应。它在您创建隧道时显示。您还可以通过转到您的 .cloudflared 目录并为您创建的隧道查找新创建的 json 凭证文件来找到它。它应该被命名为 {Tunnel-UUID}.json。
将流量路由到您的隧道
您只需创建一个 CNAME 记录来将流量路由到您的隧道。您可以使用 cloudflared cli 轻松完成此操作
cloudflared tunnel route dns <Tunnel UUID or Name> <Hostname>
进入全屏模式 退出全屏模式
例如,我的隧道名为frontpage
,我希望它可以通过example.chaika.dev
访问。所以我做了
cloudflared tunnel route dns frontpage example.chaika.dev
进入全屏模式 退出全屏模式
运行你的隧道
最后,您可以测试您的隧道。
cloudflared tunnel run <UUID or Name>
进入全屏模式 退出全屏模式
您还可以指定要运行的特定配置文件
cloudflared tunnel --config path/config.yaml run
进入全屏模式 退出全屏模式
一旦您的隧道启用,请尝试通过您将其路由到的主机名访问它。隧道完全启用/可访问可能需要几秒钟。如果出现问题,在 CLI 中运行的隧道应该会告诉您有关错误的更多信息。
将隧道作为服务运行
手动运行隧道会起作用,但不是最好的。如果您的机器重新启动,它不会自动启动,必须确保其打开/运行等。
幸运的是,cloudflared 支持将自身安装为服务非常容易。
sudo cloudflared service install
进入全屏模式 退出全屏模式
您可能需要手动指定配置位置。就我而言,我确实必须指定它。
例如,
sudo cloudflared --config /home/{username}/.cloudflared/config.yml service install
进入全屏模式 退出全屏模式
请注意,您在“服务安装”命令参数之前指定配置参数。
配置将被复制到/etc/cloudflared
我建议也将隧道凭据文件 ({Tunnel-UUID}.json) 复制到那里。
然后,只需启动该服务并将其设置为在启动时启动
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
进入全屏模式 退出全屏模式
确保您的隧道已启动/运行良好:
sudo systemctl status cloudflared
进入全屏模式 退出全屏模式
通过访问您将其路由到的主机名来测试您的隧道。
运气好的话,一切正常,您的 Cloudflare Tunnel 现在已全部设置完毕,作为服务运行,在重新启动时自动启动,并且运行良好!
隧道的工作原理
您可能已经注意到,当您的隧道启动时,它会建立多个连接。 Cloudflare 表示它连接到多台机器,以防其中一台崩溃/重启,它可以使用其他连接。
与 Cloudflare 的每个单独连接一次不限于一个用户请求。 Cloudflare 表示,每个连接一次可以处理数百或数千个请求。
每个 Tunnel 最多支持 100 个连接,您可以启动更多的 cloudflared 副本/实例以提高可靠性。 Cloudflare 不建议为负载平衡执行此操作,并且不保证选择哪个连接。他们建议为此使用他们自己的负载平衡产品和隧道。
您可以使用“访问”、“隧道”下的Cloudflare Teams Dash来查看您拥有的每条隧道的良好视图、它有哪些路线、它的正常运行时间/连接以及所有其他相关信息。
Cloudflare for Teams/Cloudflare Access 有一个慷慨的免费计划,您也可以使用最多 50 人,使用 Google(或大量其他 sso 选项)进行身份验证。您可以非常轻松地制定应用程序策略来保护您的隧道并将其限制为仅特定的电子邮件或其他选项。
{Tunnel-UUID}.cfargotunnel.com 是一个虚拟/不存在的域,仅在您使 CName 指向您的隧道和其他引用时在内部使用。其他 Cloudflare 客户不能将他们的域指向您的隧道并绕过您的 Cloudflare 访问或其他限制。
结束语
希望这可以帮助您理解和创建 Cloudflare 隧道。我为自己编写了本教程的一部分,Cloudflare 的隧道文档确实存在,并且几乎涵盖了所有内容,但掩盖了很多细节,这可能会让初学者感到困惑。
谢谢阅读。如果您有任何问题,请告诉我。我使用 Cloudflare Tunnels 已经有一段时间了,尽管主要是在较小的网站/论坛中。
更多推荐
所有评论(0)