0%

3X-UI面板扩展功能-WARP分流

功能简介

WARP背景及目标

Cloudflare WARP旨在为移动设备与互联网之间建立更安全、更快速的连接。它基于Cloudflare遍布全球的庞大数据中心网络,目的是通过加密用户流量提高隐私保护,同时利用智能路由优化网络性能。WARP并非传统VPN,设计上更注重连接速度和可靠性,而非匿名和IP定位变更。

Cloudflare网络架构基础

Cloudflare拥有194个城市、90多个国家的数据中心,采用Anycast IP地址宣布技术使流量自动路由到最近的数据中心。每个数据中心使用高效的网络路由器而非传统负载均衡器,将流量根据ECMP(Equal-Cost Multi-Path)策略分配给多个服务器。ECMP通过源IP和端口、目的IP和端口的四元组保证同一TCP连接的所有数据包都落在同一台服务器,确保数据包的顺序和连接的连续性。

image.png

WARP面临的路由和连接挑战

WARP利用基于现代WireGuard协议的加密隧道,通过UDP传输加密数据包。WireGuard以简洁、安全、高性能著称,采用公钥加密进行会话密钥协商,保证数据包只有目标服务器能解密。

与传统Web请求相比,WARP连接的持续时间远长于一般TCP连接,且用户设备经常切换网络(如移动网络与Wi-Fi切换),导致源IP和源端口频繁变化。加之NAT(网络地址转换)导致端口映射短暂,端口变化导致ECMP路由的四元组变化,流量可能被分配至不同服务器,破坏加密会话,导致连接断开,这成为WARP最大难题。

为解决此问题,Cloudflare创造性地绕过传统ECMP限制,通过内部负载均衡机制,先将数据包路由到任意一台服务器,再由该服务器根据WARP客户端提供的唯一标识clientid转发给正确的会话服务器。clientid被嵌入WireGuard协议头部未使用的3字节空间,允许服务器在解密前识别流量归属,保证即使设备IP或端口变化,数据包始终能到达同一台服务器,从而保持连接稳定。

WireGuard协议的巧妙应用

WireGuard使用UDP而非TCP,降低了协议头开销和重传复杂度,包内携带完整TCP头数据,结合TCP的可靠传输机制,既保证性能,又确保数据可靠性。WireGuard会定期更换密钥增强安全性,但这带来了连接持久性的新挑战,Cloudflare通过clientid机制有效应对这些问题。cloudflare

软件实现与平台适配

Cloudflare第一次大规模开发跨多个移动平台的底层网络客户端,克服了iOS、Android提供的网络API性能限制和BUG,特别是在iOS中,处理大量UDP数据包时遇到系统缓冲区限制(ENOBUFS错误)和连接管理复杂性。为此他们采用兼容机制(类似Happy Eyeballs技术)在IPv4和IPv6之间选择最快连接,增强IPv6支持,合理调度连接重建,最大化性能与稳定性。cloudflare

智能路由与加速(WARP+)

WARP整合了Cloudflare的Argo智能路由技术,类似互联网的“交通GPS”,动态选择最快路径传输流量。Argo原为HTTP应用加速设计,WARP将其升级为支持全协议流量的路径优化。非Cloudflare托管的HTTP流量通过HTTP CONNECT协议转发至目标服务器,保持透明隧道加速,同时提供速度和安全提升。

简单来说就是:cloudfalre使用自己位于世界各地的边缘服务器通过客户端的分流技术以及wireguard协议并整合来为用户选择最佳的连接节点,以此加速用户的网络访问(同时具有类似VPN的匿名特征)。


WARP installation on Linux

安装WARP前提是:您的系统已经安装好3X-UI且已测试通过。
WARP仅仅是辅助进行分流的,主要代理任务依旧是Xray内核承担。

因apt和yum的存储库中并没有warp的包,所以请根据您的系统选择使用以下的提示步骤安装cloudfalre gpg key后再拉取软件包。

Linux Support List

OS version CentOS 8, RHEL 8, Debian 10, Debian 11, Debian 12, Fedora 34, Fedora 35, Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04
Processor AMD64 / x86-64 or ARM64 / AArch64
HD space 75 MB
Memory 35 MB
Network interface type WIFI or LAN
Minimum MTU 1360 bytes1

Warnning

以上是WARP在不同Linux发行版的支持列表,请根据自己服务器的具体系统版本来确认您的服务器是否支持WARP.一般情况下我们都会选择使用Debian或者Ubuntu作为选定系统使用,但是有个别玩家可能会选择CentOS使用,这都是在支持列表的。在旧版本的系统中安装最新版本的3x-ui面板时可能会出现libssl版本过低的问题,此时请进行系统更新。保证您的Ubuntu版本为Ubuntu 22.04.5 LTS或者更新。如在安装面板过程中出现问题。可尝试使用低版本的面板或者在线更新您的系统。

Ubuntu

The supported releases are:

  • Noble (24.04)
  • Jammy (22.04)
  • Focal (20.04)

Older builds exist for:

  • Bionic (18.04)
  • Xenial (16.04)
1
2
3
4
5
6
7
8
9
10
# 添加 cloudflare gpg key
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg


# 将此 repo 添加到您的 apt 存储库
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list


# 安装
sudo apt-get update && sudo apt-get install cloudflare-warp

Debian

The supported releases are:

  • Bookworm (12)
  • Bullseye (11)
  • Buster (10)

Older builds exist for:

  • Stretch (9)
1
2
3
4
5
6
7
8
9
10
# 添加 cloudflare gpg key
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg


# 将此 repo 添加到您的 apt 存储库
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list


# 安装
sudo apt-get update && sudo apt-get install cloudflare-warp

Red Hat Enterprise Linux & CentOS

Install the repository with yum (replace with the release version number):
The supported versions are:

  • 8
1
2
3
4
5
6
7
8
# Add cloudflare-warp.repo to /etc/yum.repos.d/
curl -fsSl https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo

# Update repo
sudo yum update

# Install
sudo yum install cloudflare-warp

初始化WARP

依次运行以下命令即可按预期启动服务并开启需要的端口(该端口在内部开放,不需要在防火墙开放端口)

1
2
3
4
5
6
warp-cli registration new 

warp-cli connect

warp-cli set-mode proxy

使用以下命令查看从40000端口获取到的IP是否和vps实际IP不同

1
curl -4 ip.gs -x socks5://127.0.0.1:40000

最后使用命令warp-cli status查看服务状态。

添加WARP++ key

从Telegram群组Warp Plus - Free VPN Keys获取KEY并将其填入到面板的【Xray设置】–【出站规则】–【☁WARP】。
clipboard-image-1758530231.png

添加完成后点击更新即可获取几乎无限多的WARP流量。

出站规则

在面板的Xray设置出站规则中添加一个叫做warp的规则,将协议设置为socks,标签为warp,地址为127.0.0.1.端口设置为40000,点击确定并添加。
image.png

路由规则

新建一个路由规则,将Outbound Tags标签设置为出站规则的warp,添加规则。

WARP路由

Xray设置中的【基础配置】内找到【WARP路由】,在框内填入你需要进行代理的域名,比如ecosia.org.ecosia是一个搜索引擎,但是会对可以IP及逆行拦截要求进行cloudflare验证,而WARP路由则可以将你的节点流量路由到cloudfalre网络,使得ecosia将你的流量是识别为cloudfalre自己的流量,借此突破5秒盾。也就是说,此时通往ecosia的流量在经过VPS时会被WARP识别并拦截,WARP将拦截到的数据包转送至cloudflare边缘服务器,由边缘服务器代为访问(此时的IP就会是边缘服务器IP,以隐藏自身IP并突破5秒盾)。

测试

以下是开启WARP路由前后访问ecosia的页面:

clipboard-image-1758528545.png clipboard-image-1758528465.png

借此分流即可突破指定网站的cloudfalre WAF防御。

image.png clipboard-image-1758528994.png

劣势

通过该方式进行的分流仅仅可以代理【WARP路由】中添加的服务域名,并不是全局代理!!!

如需要进行全局代理,请参考【wgcf项目

WARP靠的是在本地创建一个socks代理,通过面板将流量重定向到Cloudfalre边缘服务器。只能代理列表中的域名服务。和局域网代理的逻辑差不多。