跳转到内容
搜索文档

系统要求

最后更新 查看 MarkdownAgent 设置

我们的连接器 cloudflared 旨在保持轻量级和足够的灵活性,以有效地部署在 Raspberry Pi、您的笔记本电脑或数据中心中的服务器上。

与吞吐量由服务器内存、CPU 和其他硬件规格决定的旧版 VPN 不同,Cloudflare Tunnel 的吞吐量主要受系统软件中配置的端口数限制。因此,在调整您的 cloudflared 服务器大小时,最重要的元素是调整机器上可用端口的大小,以反映 TCP 和 UDP 流量的预期吞吐量。

建议

对于大多数使用场景,我们推荐以下基准配置:

  • 在每个网络位置的两台专用主机上运行 cloudflared 副本。使用两台主机可实现服务器端冗余。
  • 每台主机的配置至少为 4GB 内存和 4 核 CPU。
  • 在每台主机上为 cloudflared 进程分配 50,000 个端口

这种设置通常足以处理来自 8,000 个 Cloudflare One Client 用户(每台主机 4,000 个用户)的流量。cloudflared 使用的实际资源量取决于许多变量,包括每秒请求数、带宽、网络路径和硬件。随着更多用户的加入,或者如果网络流量增加并超出了您现有的隧道容量,您可以通过在该位置添加额外的 cloudflared 主机来扩展您的隧道。

端口数量

cloudflared 接收到来自设备的请求时,它会使用主机上的端口来评估并将请求转发给您的源站服务。由于系统设计的原因,每台机器在硬件上都受限于最多 65,535 个端口。此外,机器上的每个服务可以消耗的端口数量也是有限的。因此,我们推荐以下部署模型:

  • cloudflared 应该部署在专用的主机上。这种模型通常是合适的,但在某些无服务器或集群工作流中,可能无法使用专用主机。
  • 主机应分配 50,000 个端口供 cloudflared 服务使用。其余端口保留给系统管理进程。

要在 Linux 上增加 cloudflared 的可用端口数:

如果您的机器有 /etc/sysctl.d/ 目录:

echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.d/99-cloudflared.conf
sudo sysctl -p /etc/sysctl.d/99-cloudflared.conf

否则:

echo 'net.ipv4.ip_local_port_range = 11000 60999' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf

要在 Windows 上增加 cloudflared 的可用端口数,请设置 TCP 和 UDP 的动态端口范围

netsh int ipv4 set dynamicport tcp start=11000 num=50000
netsh int ipv4 set dynamicport udp start=11000 num=50000
netsh int ipv6 set dynamicport tcp start=11000 num=50000
netsh int ipv6 set dynamicport udp start=11000 num=50000

私有 DNS

与 TCP 和非 DNS UDP 请求相比,DNS 查询会消耗更多系统资源。为了优化服务可用性,Cloudflare 建议将私有 DNS 流量拆分到其专属的 Cloudflare Tunnel 中。该隧道应在专用主机上运行,并且仅包含指向您内部 DNS 解析器 IP 的路由。

ulimits

在 Linux 和 macOS 上,ulimit 设置决定了已登录用户可用的系统资源。我们建议在 cloudflared 服务器上配置以下 ulimit:

ulimit 描述
-n 打开的文件或文件描述符的最大数量 ≥ 70,000

要查看您当前的 ulimits,请打开终端并运行:

ulimit -a

要设置打开文件的 ulimit

ulimit -n 70000

上述命令仅为当前终端会话设置打开文件限制,在重启或重新登录后不会保留。要永久应用此限制,请使用适用于您操作系统的持久化方法进行配置。

估计吞吐量

cloudflared 代理的大多数私有网络流量属于以下两类之一:

  • TCP 请求(更常见,资源消耗较少)
  • UDP 请求(较少见,资源消耗较多)

TCP 流量几乎是即时使用和释放端口的。这意味着,为了使拥有 50,000 个可用端口的 cloudflared 实例过载,您的组织需要每秒持续产生 50,001 个 TCP 请求。

UDP 流量更为特殊。DNS 查询(通常是 UDP 流量的大部分)在 cloudflared 中会被端口持有五秒钟。非 DNS UDP 流量在连接期间会一直持有每个端口,这可以是任何时长。这意味着,为了使拥有 50,000 个可用端口的 cloudflared 实例过载,您需要每秒持续产生 10,000 个指向您的私有解析器的 DNS 查询,或者在短于您连接重置率的时间内累计产生 50,000 个 non-DNS UDP 请求。

计算您的隧道容量

我们的基准建议可以作为部署 Cloudflare Tunnel 的起点。一旦您有代表性的用户群体与您的网络互动至少一周,您就可以根据自己的流量模式定制隧道的规模。

要计算您的隧道容量:

  1. 运行隧道时设置 指标服务
  2. 大约一周后,查询以下隧道指标
    • cloudflared_tcp_total_sessions
    • cloudflared_udp_total_sessions
  3. 将总会话数除以总时间,计算出平均每秒 TCP 请求数每秒非 DNS UDP 请求数
  4. 在您的私有 DNS 解析器中,获取平均每秒私有 DNS 请求数
  5. 将您的数值输入到我们的容量计算器中:

System configuration





Metrics




Result




This calculator is for informational purposes only and all results are estimates.

您可以使用这些结果来确定您的隧道规模是否合适。要增加您的隧道容量,请添加运行 cloudflared 副本的相同主机。

这篇文档对您有帮助吗?