warp大杂烩
本文仅作为记录,存档用,无任何盈利目的.
关于warp
CloudFlare WARP 全球站点和服务状态:
- Operational = 正常。Re-routed = 检修状态: https://www.cloudflarestatus.com/
https://cloudflare.com/cdn-cgi/trace
https://blog.cloudflare.com/1111-warp-better-vpn/
https://blog.cloudflare.com/zh-cn/announcing-warp-plus-zh-cn/
https://developers.cloudflare.com/
https://developers.cloudflare.com/warp-client/get-started/linux/
https://www.cloudflare.com/zh-cn/learning/
今天,经过漫长的等待之后,我们将向公众开放WARP和WARP+(plus)。如果你还没听说过,WARP是一款为所有人设计的移动应用,它使用我们的全球网络来保护你手机的所有互联网流量。
我们在今年4月1日宣布了WARP,并期望在接下来的几个月里以稳定的速度推出,并在7月前发布给所有想要使用它的人。我们没能做到。事实证明,建立下一代服务来保护消费者的移动连接而不减慢他们的速度或增加耗电量比我们最初想象的要困难。
在今天之前,大约有200万人在排队等待试用WARP。这个需求量令我们大吃一惊。这也让我们很尴尬。人们普遍认为,消费者并不关心他们的安全和隐私,但事实证明,这种转移注意力的假设是多么荒谬。
这篇文章解释了为什么发布WARP花费了这么长时间,我们在此过程中学到的知识以及对那些急切等待的人的道歉。它还简要讨论了我们构建WARP的理由以及我们一直致力于的隐私原则。但是,如果您想更深入地了解最后两个主题,建议您阅读我们的原始发布公告。
WARP原理
原文:https://github.com/fscarmen/warp/blob/main/README.md#WARP%E5%8E%9F%E7%90%86
WARP是CloudFlare提供的一项基于WireGuard的网络流量安全及加速服务,能够让你通过连接到CloudFlare的边缘节点实现隐私保护及链路优化。
其连接入口为双栈(IPv4/IPv6均可),且连接后能够获取到由CF提供基于NAT的IPv4和IPv6地址,因此我们的单栈服务器可以尝试连接到WARP来获取额外的网络连通性支持。这样我们就可以让仅具有IPv6的服务器访问IPv4,也能让仅具有IPv4的服务器获得IPv6的访问能力。
- 为仅IPv6服务器添加IPv4
原理如图,IPv4的流量均被WARP网卡接管,实现了让IPv4的流量通过WARP访问外部网络。 
- 为仅IPv4服务器添加IPv6
原理如图,IPv6的流量均被WARP网卡接管,实现了让IPv6的流量通过WARP访问外部网络。 
- 双栈服务器置换网络
有时我们的服务器本身就是双栈的,但是由于种种原因我们可能并不想使用其中的某一种网络,这时也可以通过WARP接管其中的一部分网络连接隐藏自己的IP地址。至于这样做的目的,最大的意义是减少一些滥用严重机房出现验证码的概率;同时部分内容提供商将WARP的落地IP视为真实用户的原生IP对待,能够解除一些基于IP识别的封锁。 
- 网络性能方面:内核集成>内核模块>wireguard-go
Linux 5.6 及以上内核则已经集成了 WireGuard ,可以用 hostnamectl或uname -r查看版本。
甲骨文是 KVM 完整虚拟化的 VPS 主机,而官方系统由于版本较低,在不更换内核的前提下选择 “内核模块” 方案。如已升级内核在5.6及以上,将会自动选择 “内核集成” 方案。
EUserv是 LXC 非完整虚拟化 VPS 主机,共享宿主机内核,不能更换内核,只能选择 “wireguard-go” 方案。
技术文章或相关项目(排名不分先后):
- P3terx: https://p3terx.com/archives/use-cloudflare-warp-to-add-extra-ipv4-or-ipv6-network-support-to-vps-servers-for-free.html
- P3terx: https://github.com/P3TERX/warp.sh/blob/main/warp.sh
- 猫大: https://github.com/Oreomeow
- Luminous: https://luotianyi.vc/5252.html
- Hiram: https://hiram.wang/cloudflare-wrap-vps
- Cloudflare: https://developers.cloudflare.com/warp-client/setting-up/linux
https://blog.cloudflare.com/announcing-warp-for-linux-and-proxy-mode/
https://blog.cloudflare.com/argo-v2/ - WireGuard: https://lists.zx2c4.com/pipermail/wireguard/2017-December/002201.html
- Parker C. Stephens: https://parkercs.tech/cloudflare-for-teams-wireguard-config/
- Anemone: https://cutenico.best/posts/blogs/cloudflare-warp-fixed-youtube-location/
https://github.com/acacia233/Project-WARP-Unlock - wangying202: https://blog.csdn.net/wangying202/article/details/113178159
- LUBAN: https://github.com/HXHGTS/Cloudflare_WARP_Connect
- valetzx: https://gitlab.com/valetzx/pubfile
服务提供(排名不分先后):
- CloudFlare Warp(+): https://1.1.1.1/
- WGCF 项目原作者: https://github.com/ViRb3/wgcf/
- Coia 和 warp-go 团队: https://gitlab.com/ProjectWARP/warp-go
- WireGuard-GO 官方: https://git.zx2c4.com/wireguard-go/
- ylx2016 的成熟作品: https://github.com/ylx2016/Linux-NetSpeed
- ALIILAPRO 的成熟作品: https://github.com/ALIILAPRO/warp-plus-cloudflare
- mixool 的成熟作品: https://github.com/azples/across/tree/main/wireguard
- luoxue-bot 的成熟作品:https://github.com/luoxue-bot/warp_auto_change_ip
- lmc999 的成熟作品: https://github.com/lmc999/RegionRestrictionCheck
- WireProxy 作者: https://github.com/octeep/wireproxy
- 获取公网 IP 及归属地查询: https://ip.gs/
- 统计PV网:https://hits.seeyoufarm.com/
- Coia 的网页版提出 Teams Token: https://warp-team-api.herokuapp.com/
CloudFlare WARP 全球站点和服务状态:
- Operational = 正常。Re-routed = 检修状态: https://www.cloudflarestatus.com/
Wgcf生成基于WireGuard协议的WARP代理
原文: 使用Wgcf生成基于WireGuard协议的WARP代理节点
原作者: MisakaNo
在之前的文章中我介绍过CloudFlare WARP的官方版本客户端。但是官方的客户端对网络条件有些苛刻。今天我们就来使用第三方的Wgcf,生成WireGuard协议配置文件
准备材料
- 一台电脑
- WireGuard 客户端
步骤
- 打开Wgcf下载页面,选择最新的版本进行下载
- 在下载目录中打开命令行,输入以下命令
1 | |
- 如需升级WARP+账户,修改
wgcf-account.toml里面的license_key后面的字符串

- 输入下面命令升级账号,如出现“Limited”字样则为升级成功
1 | |

- 输入下面命令生成配置文件
1 | |
- 修改配置文件的EndPoint为下面说明中的任意一个IP和端口。如需使用WARP Teams账户需从客户端配置文件中找到私钥和IPv6地址,复制粘贴替换即可

Endpoint IPV4地址:
1 | |
Endpoint IPV6地址
1 | |
Endpoint端口:2408、1701、500、4500、908
- 在WireGuard客户端内新建一个空隧道,将配置文件内容复制粘贴至里面

- 连接隧道,如接收端出现非0数值,则为连接成功

检验地址:https://cloudflare.com/cdn-cgi/trace
# 1 VPS内安装Wgcf-WARP全局代理
原文: CloudFlare WARP 脚本系列①:VPS内安装Wgcf-WARP全局代理
原作者: MisakaNo
在VPS中,我们可以使用WARP的Wgcf-WARP模式,来实现在原来单栈的VPS添加IPv4/IPv6隧道以实现对应网络的访问能力或将VPS的网络全局交由WARP代理。在这期教程中我们将会使用博客的脚本,一起来安装Wgcf-WARP以实现添加IPv4/IPv6或将VPS的网络全局交由WARP代理。
博客脚本地址:https://gitlab.com/misakablog/warp-script
准备材料
- 一台任意网络形态的VPS(非香港区)
步骤
- SSH登录至VPS
- 复制粘贴以下指令
1 | |
- 选择1-3之内的任意选项。1为在当前VPS设置WARP IPv4隧道、2为在当前VPS设置WARP IPv6隧道、3为在当前VPS设置WARP双栈隧道

- 等待安装完成,结果理应如下图所示:
添加IPv4

添加IPv6

全局双栈代理

- 可以通过再次进入菜单选择1-3之内的选项,快速切换Wgcf-WARP的隧道配置

# 2 VPS安装WARP-Cli或WireProxy代理模式,实现VPS内本地Socks5代理
原文: CloudFlare WARP 脚本系列②:VPS安装WARP-Cli或WireProxy代理模式,实现VPS内本地Socks5代理
原作者: MisakaNo
在本系列的第一期文章中,我讲解了如何去安装Wgcf-WARP全局模式。而在今天的这篇文章中,我接着第一期的尾巴,讲一下WARP-Cli或WireProxy代理模式,实现VPS内的本地Socks5代理
准备材料
- 一台任意网络形态的VPS(如需使用WireProxy代理模式请使用非香港区的VPS)
步骤
- SSH登录至VPS
- 复制粘贴以下指令
1 | |
WARP-Cli 代理模式
由于其官方客户端限制,故只支持纯IPv4或原生双栈、CPU架构为amd64的VPS
- 选择12选项

- 等待安装必要组件,然后设置本地Socks5端口。安装成功之后会在显示IP处显示WARP-Cli客户端代理地址及端口

WireProxy-WARP 代理模式
- 选择16选项

- 等待安装必要组件,然后设置本地Socks5端口。安装成功之后会在显示IP处显示WireProxy客户端代理地址及端口

# 3 切换VPS中WARP客户端的WARP账户类型
原文: CloudFlare WARP 脚本系列③:切换VPS中WARP客户端的WARP账户类型
原作者: MisakaNo
在之前两篇教程中,我们已经了解了如何安装Wgcf-WARP、WARP-Cli和WireProxy。但是脚本默认只会安装WARP免费账户。我们如果有WARP+密钥或提取出来的WARP Teams账户的话,就可以直接升级至WARP+或WARP Teams账号了
准备材料
- 一台任意网络形态的VPS并且已安装了脚本
- WARP+密钥(可选)
- Teams配置文件(可选)
步骤
- 进入WARP脚本
- 选择22选项

以下教程均讲升级成WARP+或Teams账户,WARP免费账户由于太简单就不提了
Wgcf-WARP和WireProxy 代理模式
WARP+
- 按照下图进入选项菜单,然后输入提取出来的WARP+密钥及设备名称

- 出现升级成功,即视为为成功升级至WARP+账户

WARP Teams
- 将提取出来的配置文件的全部内容复制粘贴上传至Github Gists

- 右键raw链接,复制备用

- 按照下图进入选项菜单,然后粘贴第二步的raw链接
- 脚本会二次确认配置文件,如一切就绪输入“y”
- 出现升级成功,即视为成功升级至WARP Teams账户

WARP-Cli
- 按照下图进入选项菜单,然后输入提取出来的WARP+密钥
- 出现升级成功,即视为为成功升级至WARP+账户

WARP-Go
WARP+
- 按照下图进入选项菜单,然后输入提取出来的WARP+密钥和设备名

- 出现升级成功,即视为为成功升级至WARP+账户

WARP Teams
- 打开提取TOKEN网址
- 输入团队名称

- 输入邮箱

- 输入验证码

- 复制以下的TOKEN,备用

- 按照下图进入选项菜单,然后输入提取出来的WARP Teams TOKEN
- 出现升级成功,即视为成功升级至WARP Teams账户

Windows WireGuard 节点分流方案
原作者: MisakaNo
在我们使用WireGuard的节点时,由于其本意并非设计给中国人的,故只能使用全局链接节点。但是,有一位大佬开发了WireGuard节点分流解决方案。下面我们就以之前的wgcf WireGuard配置文件为基础,详细讲解如何在Windows的WireGuard给节点分流
准备材料
- 一台Windows的电脑
- WireGuard
步骤
- 关闭WireGuard,打开管理员模式命令行运行以下命令
1 | |
- 下载此页面中的
wireguard.zip压缩包,然后解压到”C:\Program Files\WireGuard\bat”处

- 修改节点配置,DNS修改为127.0.0.1,然后在MTU下方加入这几段。最终配置文件如下所示
1 | |

- 测试链接,如出现接收数据则为连接成功

- 测试节点分流效果

提取WARP Teams账户配置文件
原作者: MisakaNo
在之前的教程中,我已经教会大家去如何申请CloudFlare Teams账户。那么我们这篇文章就来手把手的教大家如何去提取WARP的Teams账户配置文件。
准备材料
- CloudFlare Teams账户
- 电脑,支持VT虚拟化
步骤
- 安装Android Studio模拟器,下载地址

- 下载并解压Android SDK Platform Tools(以下简称adb),下载地址


- 从此处下载1.1.1.1 6.9版本的的APK文件,然后复制到adb的程序目录下,命名为“warp.apk”

- 打开Android Studio,选择More Actions里面的Virtual Devices Manager

- 点击Create device

- 选择如下图所示的平板电脑

- 选择安卓5.1系统,点击下一步

- 自定义设备名,点击Finish

- 启动模拟器之后,在adb目录打开命令行,输入以下命令安装warp
1 | |

- 按照步骤登录WARP Teams账户

- 模拟器连接上WARP Teams账户后,在命令行输入以下命令提取配置文件
1 | |
- WARP Teams配置文件提取成功
申请CloudFlare Teams(Zero Trust)账户教程
原文: https://blog.misaka.rest/2022/09/25/cf-teams/
原作者: MisakaNo
在之前的文章中,我们已经大概了解到了WARP官方客户端的WARP和WARP+账户。那么我们这一篇文章就来和大家一起了解并申请CloudFlare Teams(Zero Trust,下面简称Teams)账户
准备材料
- CloudFlare 账户
步骤
- 打开https://dash.cloudflare.com/,登录CloudFlare账户。如未注册账户的请自行去注册
- 进入主页,点击左下角的“Zero Trust”

- 输入团队名称,点击“Next”

- 选择左边的Free计划,点击“Select Plan”

- 点击蓝色的“Proceed”按钮,如在添加银行卡页面无法跳过的话请更换账户重试申请过程

- 按照下图操作

- 点击蓝色的“Manage”按钮

- 点击“Add a rule”按钮

- 按照下图配置,Value处请填写你的邮箱后缀(例:hello@gmail.com,后缀为@gmail.com)。点击“Save”保存规则

- 在此处点击“Save”保存规则

简略版: 创建cloudflare账号 -> 点击左栏Zero Trust -> 填好团队名 选好free plan -> setting -> warp client -> Device enrollment 下的 蓝色Manage -> add a rule -> rule name 随意 include 下Selector选择 Emails ending in -> Value填你拥有的邮箱后缀 如123456@gmail 就填@gmail -> save
Win端warp升级Zero Trust
- 创建好团队账户后点击Preferences

- 点击
Account下的 Login zero trust

- 输入你一开始设置的团队名(
tips: 在zero trust页面setting下的general里可以查看当前团队名 也可以更改)

- 跳转浏览器输入邮箱填入验证码跳转回去就变成zero trust了
【WGCF】连接CF WARP为服务器添加IPv4/IPv6网络
原文链接: 【WGCF】连接CF WARP为服务器添加IPv4/IPv6网络
原作者: Luminous
WARP是CloudFlare提供的一项基于WireGuard的网络流量安全及加速服务,能够让你通过连接到CloudFlare的边缘节点实现隐私保护及链路优化。

其连接入口为双栈(IPv4/IPv6均可),且连接后能够获取到由CF提供基于NAT的IPv4和IPv6地址,因此我们的单栈服务器可以尝试连接到WARP来获取额外的网络连通性支持。这样我们就可以让仅具有IPv6的服务器访问IPv4,也能让仅具有IPv4的服务器获得IPv6的访问能力。
题图来源微博@Ratto,本站仅做引用,如果喜欢请务必关注画师太太啊≧ ﹏ ≦!
零、前言
在这之前我就写过利用WARP为流量计费教育网节省流量开销的文章,后来听有人说可以安装在服务器上来为服务器增加连通性支持。想了一下也确实是这个道理,毕竟双栈任选入口、连接后可提供双栈网络,而且CF本身接驳有主流的上游,不论是从打通v4还是打通v6的角度,其各方面稳定性都是其他方案无法比拟的。
作为测试,这一次为IPv4实例打通IPv6网络选择的是腾讯云香港区域的轻量应用服务器,为IPv6服务器打通IPv4网络则使用的是Scaleway的Stardust实例。

一、WGCF配置
首先我们需要通过WGCF(点击前往)注册WARP账户并提取为WG配置文件。在这之前我写过一次有关教育网利用其IPv6连接以减少计费流量开销的文章。
【WGCF】提取WARP配置为CERNET提供IPv6流量转发
校园网的IPv4收费不少高校都比较贵,而IPv6是不限速不限量的。经过2020年9月10日教育网的路由变动后,CERNET在HKIX与HE以Peer via IX的形式进行了互联。因 …
https://luotianyi.vc/4500.html
文中第【一】、【二】两节即为此步骤的详细操作,最终目标是获取到如图所示的wgcf-profile.conf。最近不知道什么原因经常出现429报错,在wgcf register执行之后看到目录里生成wgcf-account.toml即可,然后多次执行wgcf generate直至正常生成即可。

二、处理配置文件
WG连接后是内核层级的软件,会建立自己的虚拟网卡,且WARP客户端均为内网NAT地址,当双栈流量均被WG接管后我们就无法再从原有的IP连接到服务器了。因此在IPv4与IPv6之间我们必须做一个取舍,以防这样的情况发生。所以这个应用场景也就被限制到了在原有基础上提供另一种协议的连通性支持,后文会以配图以解释。
修改配置文件就两种情况:
①上文图中
11行Endpoint修改为162.159.192.1:2408,删除掉第9行接管本地IPv4路由的配置
②上文图中11行Endpoint修改为[2606:4700:d0::a29f:c001]:2408,删除掉第10行接管本地IPv6路由的配置
为仅IPv4服务器添加IPv6
原理如图,由于AllowedIPs = ::/0的参数使得IPv6的流量均被WARP网卡接管,实现了让IPv6的流量通过WARP访问外部网络。这样的需求请参考情况①对配置文件进行修改。

为仅IPv6服务器添加IPv4
原理如图,由于AllowedIPs = 0.0.0.0/0的参数使得IPv4的流量均被WARP网卡接管,实现了让IPv4的流量通过WARP访问外部网络。这样的需求请参考情况②对配置文件进行修改。

双栈服务器置换网络
有时我们的服务器本身就是双栈的,但是由于种种原因我们可能并不想使用其中的某一种网络,这时也可以通过WARP接管其中的一部分网络连接隐藏自己的IP地址。至于这样做的目的,最大的意义是减少一些滥用严重机房出现验证码的概率;同时部分内容提供商将WARP的落地IP视为真实用户的原生IP对待,能够解除一些基于IP识别的封锁。

三、安装客户端
WireGuard是内核级别的工具,来自官方的包需要加载内核模块,所以在安装前请保证你的服务器是KVM/HyperV/XEN HVM这样完全虚拟化的服务器。
OpenVZ和LXC因为不具有内核权限,如果确有需要自己装WireGuard-Go作为内核模块的替代,其提供的文档要求自己配置go环境进行编译,并没有现成的二进制预编译包。当然安装后的配置操作都是相差无几的,在这因为并不推荐就补充在最后面好了。
博主在这些”玩具”机器上使用的均是Debian系统,所以作为一篇记录我就只考虑Ubuntu和Debian系统了~
安装前先确定kernel-header已安装,并且检查下resolv是正确安装上的:
安装依赖
1 | |
安装主程序,Debian需要添加unstable源,Ubuntu则只需要添加库即可:
1 | |
经过群友的补充,CentOS 7因为内核比较老不能支持,需要安装添加elrepo源并更换kernel-ml内核。个人不推荐使用CentOS进行安装,7得换内核,8还成了弃子,有点麻烦。
1 | |
DKMS会将WG的内核模块编译并加载上去,出现DKMS: install completed.并且无错误即可。如果出现内核模块未加载成功,可以尝试reinstall一下wireguard-dkms,最终以如下命令检查:
1 | |
确认模块有返回后,就可以把上文【二】中你需要的配置文件拿出来,配置文件目录放在/etc/wireguard下。比如我选择命名为wgcf.conf,则开启与关闭命令与配置文件对应:
1 | |
开启后可通过ifconfig看到名称为你配置文件的WARP虚拟网卡,此时便可以通过WARP进行外部访问了。
安装Go版本模块
OpenVZ和LXC因为不具有内核权限,如果确有需要自己装WireGuard-Go作为内核模块的替代,WG主程序在检测不到内核的模块时会fallback到go的模块启动程序;同时这个也可以解决部分人不想给内核加载模块的问题,只是效率略低。
在这之前我们要检查一下你的服务器是否开启了TUN支持,如果未开启的话需要联系你的服务商开启:
检查TUN模块
1 | |
既然是go语言写的,自己编译和用现成别人编译好的都可以,自己编译的话需要go语言版本高于1.13才可以。
1 | |
直接用别人编译好的包也是可以的,loc上的@52mfzy提供了一个预编译64位的项目的地址。
1 | |
其他的架构我找到一个比较老的20181222版本,如有需要可以按自己需求选择(点击前往),tar.xz包用tar -xf命令解压。注意这里提供的旧版本软件包因为是测试版本,需要添加确认运行的系统变量(新版本就没问题了);你可以在启动隧道前执行一次,也可以添加到/etc/profile永久生效。
1 | |
go模块安装正确后,请参考前文添加源并安装主程序,Debian仅安装wireguard-tools即可,Ubuntu安装wireguard,CentOS仅安装wireguard-tools,内核模块无需安装。其余的写配置文件和使用也与前文一致。
开机自启
我不建议把WARP设置为开机自启,不过也没什么问题,官方提供的文档是通过systemctl管理的,所以比较老的系统就不用考虑了。
1 | |
四、结语
本文最初的目的就是因为买了Scaleway的Stardust纯IPv6实例,实测效果是非常不错的。相比于DNS64等方案,CloudFlare提供的网络非常优秀。

腾讯云轻量这边,服务器到CF的Endpoint才0.4ms,添加IPv6后到本地谷歌的CDN节点仅仅3ms,基本可以当作本地具备的IPv6使用了。鹅厂的服务器最近用的也蛮舒服的,别具一格的升配活动连学生机都可以参与,有需要的话也可以考虑一下~

经过实际测试,与WARP建立的隧道在5天的时间中均未出现明显的波动,其连通性及稳定性相较于HE.NET的TunnelBroker好很多;并且作为商业化的应用,其速度得到了很好的保证。
至于前文AllowIPs讲的非常简单,只用了仅保留IPv4/IPv6其一,其实可以不必如此,它是以路由表的形式接管流量,你可以自己通过修改参数自己指定路由表的内容。这里就不展开讲了,附一个从loc大佬那里拿来的IP库(点击下载)。
最后还是那句话,且用且珍惜,不要将公共的资源肆意加以滥用~