📌 一句话摘要
本文详细介绍了 Cloudflare 构建 WARP 的最初方法,这是一个利用 Linux 网络堆栈的高性能 VPN,重点是 NAT、conntrack 和数据包标记。
📝 详细摘要
本文详细介绍了 Cloudflare 构建 WARP 的最初方法,WARP 是一款移动优先的性能和安全应用程序,通过构建利用 Linux 网络堆栈的高性能第 3 层 VPN。它解决了为数百万移动客户端安全有效地出口用户数据包的挑战。该解决方案涉及关键的 Linux 组件:通过 Netfilter 和 `nftables` 配置的网络地址转换 (NAT),用于重写 IP 数据包源地址,以及用于有状态 NAT 和连接跟踪的 `conntrack` 模块。此外,本文还详细阐述了如何利用带有 `conntrack` 和 `nftables` 的数据包标记来实现细粒度的防火墙策略,并为 WARP 客户端流量做出路由决策,从而通过深度防御策略增强安全性。虽然最初有效,但本文最后强调了由于 IPv4 地址耗尽,这种方法的可扩展性存在局限性,暗示了未来像 IP 共享这样的解决方案。
💡 主要观点
-
WARP 最初的 VPN 解决方案利用 Linux 的核心网络功能来实现安全高效的数据包出口。
Cloudflare 通过配置 Linux 的 Netfilter 子系统为 WARP 构建了一个自定义的第 3 层 VPN,展示了基本的操作系统功能如何构成大型网络服务的基础。
-
网络地址转换 (NAT) 对于将专用网络 IP 桥接到公共互联网 IP 至关重要。
本文解释了如何在 Linux 上通过 Netfilter 和 `nftables` 实现的 NAT 使具有私有 IP 地址的多个客户端能够共享单个公共 IP,这是 VPN 和本地网络的一个基本方面。
-
Linux 的 `conntrack` 模块对于有状态防火墙至关重要,有助于 NAT,并支持高级数据包标记以实现细粒度控制。
`conntrack` 维护连接状态,这对于有状态防火墙保护至关重要,并且对于准确的 NAT 实现至关重要。它为数据包分配持久标记的能力允许 `nftables` 和路由规则应用特定的防火墙策略或控制路由决策,从而增强安全性和网络灵活性。
-
由于 IPv4 地址耗尽,最初的 WARP VPN 架构面临可扩展性问题。
为每个 WARP 服务器分配一个专用的公共 IPv4 地址变得成本高昂且操作复杂,因此需要转向更高级的 IP 共享解决方案,以满足 Cloudflare 的庞大网络。
💬 文章金句
- WARP 的最初实现类似于允许通过它访问互联网的虚拟专用网络 (VPN)。具体来说,是第 3 层 VPN - IP 数据包的隧道。
- Linux——为我们的服务器提供支持的操作系统——可以配置为在其 Netfilter 子系统中执行带有 NAT 的路由。
- Linux Netfilter 具有 conntrack 模块,该模块广泛用于实现有状态防火墙......这种能力意味着它非常适合实现 NAT。事实上,所有数据包重写都由 conntrack 实现。
- 使用标记允许您根据强大的 Netfilter 规则选择数据包。
- 由于 IPv4 地址耗尽,这种方法无法扩展到 Cloudflare 的大型网络。
📊 文章信息
AI 评分:89
来源:The Cloudflare Blog
作者:Chris Branch
分类:软件编程
语言:英文
阅读时间:8 分钟
字数:1923
标签:
网络, VPN, Linux, Netfilter, NAT