如何构建你自己的 VPN,或者 - WARP 的历史

10/29/2025, 1:00:00 PM

📌 一句话摘要

本文详细介绍了 Cloudflare 构建 WARP 的最初方法,这是一个利用 Linux 网络堆栈的高性能 VPN,重点是 NAT、conntrack 和数据包标记。

📝 详细摘要

本文详细介绍了 Cloudflare 构建 WARP 的最初方法,WARP 是一款移动优先的性能和安全应用程序,通过构建利用 Linux 网络堆栈的高性能第 3 层 VPN。它解决了为数百万移动客户端安全有效地出口用户数据包的挑战。该解决方案涉及关键的 Linux 组件:通过 Netfilter 和 `nftables` 配置的网络地址转换 (NAT),用于重写 IP 数据包源地址,以及用于有状态 NAT 和连接跟踪的 `conntrack` 模块。此外,本文还详细阐述了如何利用带有 `conntrack` 和 `nftables` 的数据包标记来实现细粒度的防火墙策略,并为 WARP 客户端流量做出路由决策,从而通过深度防御策略增强安全性。虽然最初有效,但本文最后强调了由于 IPv4 地址耗尽,这种方法的可扩展性存在局限性,暗示了未来像 IP 共享这样的解决方案。

💡 主要观点

  1. WARP 最初的 VPN 解决方案利用 Linux 的核心网络功能来实现安全高效的数据包出口。 Cloudflare 通过配置 Linux 的 Netfilter 子系统为 WARP 构建了一个自定义的第 3 层 VPN,展示了基本的操作系统功能如何构成大型网络服务的基础。
  2. 网络地址转换 (NAT) 对于将专用网络 IP 桥接到公共互联网 IP 至关重要。 本文解释了如何在 Linux 上通过 Netfilter 和 `nftables` 实现的 NAT 使具有私有 IP 地址的多个客户端能够共享单个公共 IP,这是 VPN 和本地网络的一个基本方面。
  3. Linux 的 `conntrack` 模块对于有状态防火墙至关重要,有助于 NAT,并支持高级数据包标记以实现细粒度控制。 `conntrack` 维护连接状态,这对于有状态防火墙保护至关重要,并且对于准确的 NAT 实现至关重要。它为数据包分配持久标记的能力允许 `nftables` 和路由规则应用特定的防火墙策略或控制路由决策,从而增强安全性和网络灵活性。
  4. 由于 IPv4 地址耗尽,最初的 WARP VPN 架构面临可扩展性问题。 为每个 WARP 服务器分配一个专用的公共 IPv4 地址变得成本高昂且操作复杂,因此需要转向更高级的 IP 共享解决方案,以满足 Cloudflare 的庞大网络。

💬 文章金句

📊 文章信息

AI 评分:89
来源:The Cloudflare Blog
作者:Chris Branch
分类:软件编程
语言:英文
阅读时间:8 分钟
字数:1923
标签: 网络, VPN, Linux, Netfilter, NAT
阅读完整文章

阅读原文 QR Code 返回目录