字节笔记本字节笔记本

Cloudflare tunnel Linux 本地设置隧道指南

2024-06-11

本指南详细介绍了如何在Linux系统上设置Cloudflare隧道,包括安装cloudflared、验证账户、创建隧道、配置文件、路由流量以及运行和检查隧道的步骤。

先决条件

在开始之前,请确保您:

  1. 向 Cloudflare 添加网站。
  2. 将域名服务器更改为 Cloudflare。

1. 下载并安装 cloudflared

Debian 和 Ubuntu APT:

  1. 添加 Cloudflare 的软件包签名密钥:
    sudo mkdir -p --mode=0755 /usr/share/keyrings
    curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
    
  2. 将 Cloudflare 的 apt 仓库添加到您的 apt 仓库中:
    echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
    
  3. 更新软件源并安装 cloudflared:
    sudo apt-get update && sudo apt-get install cloudflared
    

RHEL RPM:

  1. 添加 Cloudflare 的存储库:
    curl -fsSL https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
    
  2. 更新软件源并安装 cloudflared:
    sudo yum update && sudo yum install cloudflared
    

Arch Linux:

  1. 使用 pacman 安装 cloudflared:
    pacman -Syu cloudflared
    

其他:

  1. 访问 Cloudflare Downloads 页面,找到适合你操作系统的软件包并下载。

2. 验证 cloudflared

cloudflared tunnel login

运行此命令将:

  1. 打开浏览器窗口并提示您登录 Cloudflare 账户。登录账户后,选择您的主机名。
  2. 在默认的 cloudflared 目录中生成账户证书,即 cert.pem 文件。

3. 创建隧道并为其命名

cloudflared tunnel create <NAME>

运行此命令将:

  1. 通过在您提供的名称和隧道的 UUID 之间建立持久关系来创建隧道。
  2. 在默认 cloudflared 目录中生成隧道凭据文件。
  3. 创建 .cfargotunnel.com 的子域。

确认隧道已成功创建:

cloudflared tunnel list

4. 创建配置文件

.cloudflared 目录中,使用任何文本编辑器创建 config.yml 文件。

如果您正在连接应用程序:

url: http://localhost:8000
tunnel: <Tunnel-UUID>
credentials-file: /root/.cloudflared/<Tunnel-UUID>.json

如果连接的是专用网络:

tunnel: <Tunnel-UUID>
credentials-file: /root/.cloudflared/<Tunnel-UUID>.json
warp-routing:
    enabled: true

确认配置文件已成功创建:

cat config.yml

5. 开始路由流量

现在分配一个 CNAME 记录,将流量指向您的隧道子域:

如果要连接应用程序:

cloudflared tunnel route dns <UUID or NAME> <hostname>

如果要连接专用网络:

cloudflared tunnel route ip add <IP/CIDR> <UUID or NAME>

确认路由已成功建立:

cloudflared tunnel route ip show

6. 运行隧道

运行隧道,将从隧道传入的流量代理到本地运行的服务:

cloudflared tunnel run <UUID or NAME>

如果配置文件有自定义名称或不在 .cloudflared 目录中,请添加 --config 标记并指定路径:

cloudflared tunnel --config /path/your-config-file.yml run <UUID or NAME>

7. 检查隧道

隧道配置完成!要获得刚刚创建的隧道的信息,可以运行:

cloudflared tunnel info <UUID or NAME>

现在,您可以使用 Cloudflare DNS 将流量路由到您的隧道,或使用 Cloudflare Access 确定谁可以访问您的隧道。