Contents
前言
自从6月初国内WARP近乎全军覆没,对一大批日常以WARP为主要学习手段的朋友来说,无异于天崩地裂般的打击,就连我这只是将WARP作为备用手段的人,也受影响而不得不考虑其他的备用方式。
不过,好消息来了:ios最新版WARP客户端(安卓的正式版还要等,目前可以用Beta版)通过支持”MASQUE”协议,已经”暂时”满血复活(为什么说暂时,留点悬念,文章最后说),目前我测试ios、ipad、win、mac上的WARP都已经恢复正常。
本文就简单描述一下”MASQUE”协议的原理以及各个平台上WARP客户端如何配置使用新协议。
MASQUE为什么能让WARP复活?
基于WireGuard协议的WARP
WARP最初(2019年)选择WireGuard协议是因为它具有以下几个显著优势:
- 简单性和易用性:WireGuard的设计非常简单,代码量较小,这使得它易于审计和维护。相较于其他VPN协议,WireGuard的实现更加直接。
- 高性能:WireGuard使用现代加密算法,能够在保持安全性的同时提供较低的延迟和较高的速度。这对于需要快速响应的应用场景(如游戏和视频流)非常重要。
- 安全性:WireGuard采用了最新的加密技术,提供强大的安全性,降低了安全漏洞的风险。
- 跨平台支持:WireGuard能够在多个平台(如Linux、Windows、macOS、iOS和Android)上运行,增强了其灵活性和可用性。
- 快速连接建立:WireGuard在建立连接时的时间相对较短,改善了用户体验。
因此,选择WireGuard作为WARP的基础协议,能够帮助Cloudflare提供更快速、安全和易用的网络连接体验。
不过,虽然WireGuard在VPN解决方案中非常受欢迎,但它并未被正式纳入IETF(互联网工程任务组)的标准,因此在互联网世界中未能得到“一等公民”的待遇,这意味着它在某些环境中可能不被广泛接受或识别(WireGuard默认使用非标准端口51820,Zero Trust WARP将其改为2408端口,但这仍然是一个非标准端口),尤其是在某些ISP或网络管理策略下。
对于管理自己防火墙的客户而言,这不是问题,他们只需允许该流量即可。然而,许多公共Wi-Fi网点和全球约7000家ISP对WireGuard并不知情,可能会阻止这些端口,还有些ISP会故意阻止(嗯,说谁呢?)。
另外,WireGuard本身只是一个VPN协议,在设计之初也没有考虑过”混淆”这个需求(这通常是科学或者魔法手段该考虑的事),所以流量特征非常明显,对于ISP来说,禁或者不禁只看愿意不愿意而已。
归根结底,基于WireGuard协议的WARP,本身就不适合有”混淆”需求的场合,因为太容易被针对(参考目前OpenVPN在国内的使用状态,规律性掉包就看你能不能忍)。
新协议”MASQUE”
MASQUE(Media Application Substrate for QUIC Encryption)是Cloudflare的WARP新协议,它使用并扩展了 HTTP/3 和 QUIC,目的在于增强隐私和性能:它通过QUIC协议提供更快的连接,同时保护用户数据不被窥探。
与WARP 最为相关的是,QUIC 通过数据包合并和多路复用,可在低延迟网络或高丢包率网络上提供更好的性能。 在握手过程中,处于不同上下文的 QUIC 数据包可以合并到同一个 UDP 数据报中,从而减少了接收和系统中断的次数; 通过多路复用,QUIC 可以在同一 UDP 连接中承载多个 HTTP 会话。WARP 还得益于 QUIC 的高保密性,协议中使用了TLS 1.3。
简单来说,MASQUE就是使用QUIC来替代曾经的”WireGuard”,虽然仍旧是使用UDP协议,但是却从非标的端口变成了标准且加密的443端口。
注:大家看出隐患了吗?
背景知识:
QUIC 和 HTTP/3 之间的关系可以概括为:HTTP/3 是基于 QUIC 协议构建的下一代 HTTP 协议。
1. QUIC 是传输层协议
• QUIC 是一种新的传输层协议,最初由 Google 开发,旨在取代 TCP,优化网络传输性能。QUIC 在设计时结合了 TCP 的可靠性和 UDP 的速度,能够提供低延迟和更好的连接恢复能力。
• 它内置了多路复用、快速握手(只需一个 RTT 或 0-RTT)和加密(通过 TLS 1.3 实现),这些特性大大提升了传输性能。
2. HTTP/3 基于 QUIC
• HTTP/3 是 HTTP 协议的最新版本,它取代了基于 TCP 的 HTTP/1.1 和 HTTP/2,转而使用 QUIC 作为底层传输协议。
• 在 HTTP/3 中,请求和响应的数据通过 QUIC 流来传输,利用 QUIC 的多路复用能力,避免了 HTTP/2 中的“队头阻塞”问题。QUIC 的加密和握手机制使 HTTP/3 的连接更快、更安全。
3. 改进的性能
• HTTP/3 通过使用 QUIC 改进了数据传输性能,减少了延迟、提高了连接速度,尤其是在高延迟或不稳定网络环境中表现更加优越。
各平台”MASQUE”配置方法
对于各平台的WARP客户端,只要升级到最新版,其实就已经同时支持”MASQUE”和”WireGuard”两种协议了,只不过,”WireGuard”优先级比较高,是默认的选择。对于其他区域的用户来说,这算是合理的默认值,但是对于国内的朋友来说,这个就很坑了,因为国内”WireGuard”方式已经被废了。所以,关键在于如何让WARP客户端使用”MASQUE”方式进行连接。
Zero Trust方式
注:cloudflare Zero Trust和WARP的相关设置参见文章:家庭数据中心系列 通过tunnel技术,让无公网IP的家庭宽带也能白嫖cloudflare实现快速建站(推荐)和家庭数据中心系列 合理利用cloudflare WARP来提高自己访问网站的速度(桌面版),文本中就不重复讲了。
如果WARP是采用Zero Trust方式连接,则只需要在Zero Trust上进行简单的设置,让所有连接的WARP客户端默认采用”MASQUE”协议进行连接即可,这是最省事的方式,不用去折腾客户端:
在”Device settings”中直接配置”Default”:
然后所有平台的WARP客户端(需要升级到最新版)都可以正常连接了,不需要在客户端上做任何修改:
非Zero Trust方式
对于其他没有办法使用Zero Trust方式的朋友而言,就要稍微折腾一下,在各个平台的客户端上分别进行设置了。
ios(iphone和ipad)
这是最简单的,只要把WARP客户端升级到最新版(6.25)即可直接按照以下流程设置即可。
点击右上角选项:
选择”高级”:
选择”连接选项”:
隧道协议选择”MASQUE”:
然后重新连接,就可以看到熟悉的画面:
注1:ios、ipad全新安装或者升级WARP客户端到最新版需要外区的Apple ID;
注2:如果WARP客户端不是全新安装,需要删除以前的设置(在WARP”账号”设置中删除已有的VPN策略)。
注3:这种方式如果要使用WARP+需要用其他方式获取流量(WARP是无限流量,但是WARP+不是,而Zero Trust方式直接是无限流量的WARP+)。
注4:我现在的情况是使用家里的有线宽带能连接上,但是使用蜂窝流量连不上。不过,如果是用家里宽带连上之后再出门用蜂窝流量是可以继续使用的,但是断开之后就连不上了,具体原因我没有深究,初步感觉和DNS有关。
注5:Android版貌似需要WARP 6.35版本才支持”MASQUE”,目前Google Play里WARP的最新版本为6.34,如果非要现在使用可以加入Beta测试,就会和ios版一样多出”MASQUE”的选项。
Win10/Win11
- 1、首先安装(升级到)WARP最新版客户端:WARP win版客户端官方下载地址。
- 2、新建”mdm.xml”文件,将以下内容粘贴进文件并保存:
warp_tunnel_protocol
masque
- 3、将”mdm.xml”文件拷贝到路径(这步操作其实就是直接告诉客户端使用MASQUE进行链接):
C:\ProgramData\Cloudflare
- 4、完全退出WARP客户端(任务管理器里杀掉进程),重新启动,然后直接连接即可。
Mac
mac版的WARP客户端有点麻烦,虽然升级到最新版(WARP mac版客户端官方下载地址)之后已经支持了”MASQUE”协议,但是和Win版一样,并没有提供”MASQUE”的设置项。Win版还可以通过”mdm.xml”的方式来让WARP客户端选择”MASQUE”协议,但是Mac版却不行。
其实我建议,如果非要现在使用mac版的WARP,就用Zero Trust方式来用,否则就再等等。
但是如果非要现在用的话,只能使用mac版WARP的beta版,下载地址如下:Cloudflare WARP macOS Beta,安装Beta版之后在终端下运行如下命令设置来启用”MASQUE”:
warp-cli tunnel protocol set MASQUE
Linux
linux下需要已经成功部署WARP(参见文章:家庭数据中心系列 云主机上部署cloudflare warp来提高网络访问速度(Linux cli版)),成功部署之后也是和win下一样,采用放置mdm.xml的方式,可以直接用vim命令:
vim /var/lib/cloudflare-warp/mdm.xml
将文章前面”mdm.xml”的内容粘贴进去,保存退出,然后重启WARP服务并连接:
systemctl restart warp-svc
warp-cli connect
不放心的话还可以查看下状态:
warp-cli status
注:如果用Zero Trust,哪有这部分的折腾,所以大家还是尽量用Zero Trust方式吧,一劳永逸,不用折腾客户端。
总结
虽然现在WARP看起来复活了,但是”MASQUE”基于QUIC有个巨大的隐患:需要使用UDP 443端口。这个对于国外网络倒是稳了,因为不可能封UDP 443端口,但是国内嘛~。从下图中可以看出,直接使用WARP我会被分到SJC(San Jose Center)数据中心:
也就是访问会出境,这时候是要通过某”wall”的,如果某”wall”把所有目标端口是UDP 443端口的来自国内的请求丢弃或者拒绝掉,那WARP又会死翘翘了,所以标题里我才用了”暂时”2个字。
但是不管怎么说,现在WARP算是复活了,虽然不知道能活多久~~~~。