前言
Cloudflare WARP 一键安装脚本(简称: WARP 脚本,英文名:Cloudflare WARP Installer)是一个简化在 Linux VPS 云服务器上安装和配置 Cloudflare WARP 的脚本。此脚本支持 Cloudflare WARP 官方 Linux 客户端 SOCKS5 代理和 WARP WireGuard 网络接口等多种 WARP 使用方式的一键部署,适用于 IPv4/IPv6 单双栈各类的网络环境,支持各类主流 Linux 系统、 CPU 架构和虚拟化平台。
本篇是 WARP 脚本介绍说明及使用教程。Cloudflare WARP 是什么?能干什么?以及这个脚本的实现原理等相关知识参见《Cloudflare WARP 教程》,本文不在赘述。
特别说明:自本站全网独家首发 WARP 脚本后出现了一些二次开发魔改版本,其中某些会下载来源不明的文件、与未知站点通讯,可能存在恶意行为,请仔细辨别、谨慎使用。任何解锁功能与脚本无关,是 WARP 出站 IP 的附加属性(详见《Cloudflare WARP 教程》中的《使用场景和局限性》章节)。
开源地址
https://github.com/P3TERX/warp.sh
支持本项目欢迎随手点个 star
,分享给更多小伙伴。你的支持是本站持续原创的动力。
脚本特点
- 纯净、开源、安全
- 无需手动更换 Linux 内核,更稳定、更自由
- 无需手动更新,随操作系统自动更新
- AI 智能识别网络算法,自动匹配最佳配置方案进行部署
- 独家网络优化算法,能获得更快、更好的 WARP 网络体验
- 直观的进程状态、网络状态和 WARP 状态显示功能
- Cloudflare WARP 官方 Linux 客户端支持
- “一把梭”式极致体验
适用操作系统
WARP WireGuard 网络接口模式:
- CPU 架构支持:x86(i386)、x86_64(amd64)、ARMv8(aarch64)、ARMv7(armhf) 等
- 系统支持:Debian 10+、Ubuntu 20+、Fedora、CentOS 7+、Rocky Linux 7+、Oracle Linux 7+、Arch Linux 等大部分现代主流 Linux 发行版。建议首选 Debian ,稳!
- 虚拟化平台支持:KVM、Xen、OpenVZ、LXC 等
WARP 官方 Linux 客户端 SOCKS5 代理模式:
- CPU 架构支持:仅 x86_64(amd64) 架构
- 系统支持:Debian 10/11、Ubuntu 18~22、CentOS 8 (及其它 RHEL 8 系) 系统中使用。其它发行版也许能正常安装,但可能存在无法正常启动的问题。
使用方法
- 首先使用 SSH 工具连上 VPS 。AD: 可访问 ChatGPT 的便宜 VPS 推荐
- 将系统更新一遍,以防止部分组件过旧导致异常。
以下两种模式按照自己的需求二选一,二者功能是独立的。
WARP WireGuard 网络接口模式
TIPS: 因部分用户的滥用行,官方已限制部分地区使用原版 WireGuard 连接 WARP 网络。比如中国香港,其它地区请自测。
WARP WireGuard 网络接口模式(简称:WG 模式),是指通过第三方 WARP 工具(ViRb3/wgcf)所生成的通用 WireGuard 配置文件创建名称为wgcf
的 WireGuard 网络接口的方式去连接 WARP 网络。按照自己的需求执行以下命令即可,整个过程将自动进行,几种网络状态可自由切换。
添加 WARP WireGuard 双栈全局网络,直接使用以下 WARP 脚本命令一把梭:
# 自动配置 WARP WireGuard 双栈全局网络(所有出站流量走 WARP 网络) bash <(curl -fsSL git.io/warp.sh) d
添加或更改 IPv4/IPv6 网络中的一个出口走 WARP WireGuard 网络,使用以下 WARP 脚本命令一把梭:
# 自动配置 WARP WireGuard IPv4 网络(IPv4 出站流量走 WARP 网络) bash <(curl -fsSL git.io/warp.sh) 4 # 自动配置 WARP WireGuard IPv6 网络(IPv6 出站流量走 WARP 网络) bash <(curl -fsSL git.io/warp.sh) 6
其它相关命令:
# 查看 WARP 脚本子命令列表 bash <(curl -fsSL git.io/warp.sh) help # 重启 WARP WireGuard 网络接口 systemctl restart wg-quick@wgcf # 禁用 WARP WireGuard 网络接口 systemctl disable wg-quick@wgcf --now
WARP 官方 Linux 客户端 SOCKS5 代理模式
TIPS: 官方客户端还有很多小问题待解决,主要是内存泄露严重,目前只建议作为备用方案。未来官方完全放弃 WireGuard 兼容后会成为主流方案。
Cloudflare WARP 官方 Linux 客户端的 Proxy Mode 功能可以让应用通过本地的 SOCKS5 代理端口去直接使用 WARP 网络。
使用以下命令一把梭后将自动安装 WARP 官方客户端并开启 SOCKS5 代理端口(
127.0.0.1:40000
):# 自动配置 WARP 官方客户端 SOCKS5 代理 bash <(curl -fsSL git.io/warp.sh) s5
如果觉得官方客户端不好用,那么一把梭干掉它:
# 卸载 WARP 官方 Linux 客户端 bash <(curl -fsSL git.io/warp.sh) uninstall
进阶使用
WARP 脚本的一些彩蛋及高级进阶功能的使用方法。
重要配置文件备份 (WG 模式)
接触 WARP 比较早的小伙伴可能还记得当年 Cloudflare 通过更新算法直接导致了所有第三方工具失效,所以记得备份。
目前 WARP 脚本通过调用 ViRb3/wgcf 自动申请 WARP 账户信息(wgcf-account.toml
)并生成通用 WireGuard 配置文件(wgcf-profile.conf
),脚本自动配置完成后会原样保存至/etc/warp
目录(注意备份),以便下次脚本自动调用,同时也避免了重复申请 WARP 账号导致 IP 被 Cloudflare 拉黑(429 Too Many Requests
)。
使用已有配置文件 (WG 模式)
若之前有生成过带有 WARP+ 流量的配置文件,又或者之前使用过其它古早第三方 WARP 工具或脚本生成过 WireGuard 配置文件,只要符合 WireGuard 配置文件标准即可。
- 方法一:恢复之前的备份
/etc/warp
目录后执行 WARP 脚本。 - 方法二:将配置文件命名为
wgcf-profile.conf
并上传至 VPS ,并在此配置文件所在目录执行 WARP 脚本。
脚本会截取关键信息生成符合所选网络方案的新配置文件(/etc/wireguard/wgcf.conf
)以便 WireGuard 调用。
路由标记分流 (WG 模式)
WARP WireGuard 双栈非全局网络,由双栈全局网络接口模式衍生而来,是指添加 WARP WireGuard 双栈网络接口并通过路由规则实现在已有 IP 栈的情况下不主动接管原有网络的一种方案。此模式下可通过指定网络接口 IP 、名称 (wgcf
) 或设置路由标记 (51888
) 的方式去走 WARP WireGuard 网络,用于分流,实现出站流量的可控性。
一把梭命令:
# 自动配置 WARP WireGuard 双栈非全局网络
bash <(curl -fsSL git.io/warp.sh) x
一个示例,其它懂得都懂。
Xray 路由标记 分流配置示例 | 点击查看
{
"log": {
"access": "none",
"error": "",
"loglevel": "debug"
},
"inbounds": [
{ // 入站 VMess ws 。协议不重要,重要的是思路。
"listen": "/dev/shm/v2ws.sock",
//"listen": "127.0.0.1",
//"port": 2443,
"protocol": "vmess",
"settings": {
"clients": [
{ // 常规路由规则用户 UUID
"id": "0ebc7d13-5ed4-4c45-a202-e4b7b1c86b20",
"alterId": 0
},
{ // WARP 全局用户 UUID
"email": "[email protected]", // 指定用户邮箱,用于分流
"id": "fe885a9f-4f3d-4162-a2a6-fd50aa6a8071",
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/vmess"
}
},
"sniffing": {
"enabled": true, // 开启流量探测,用于分流或屏蔽 BT 协议。
"destOverride": [ // 当流量为指定类型时,按其中包括的目标地址重置当前连接的目标。
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{ // 走服务器默认网络出站。路由规则未匹配的默认走第一个出口出站,所以这个要放在第一个位置。
"protocol": "freedom",
"settings": {
"domainStrategy": "AsIs"
}
},
{ // 出站 路由标记示例。WARP WireGuard 双栈非全局路由分流
"tag": "WARP_out",
"protocol": "freedom",
"streamSettings": {
"sockopt": {
"mark": 51888 // 路由标记
}
},
"settings": {
"domainStrategy": "UseIP" // "UseIP"(双栈自适应)、”UseIPv4”(IPv4 优先)、”UseIPv4”(Pv6 优先)
}
},
{ // 黑洞,丢弃流量
"tag": "blocked",
"protocol": "blackhole"
}
],
"routing": {
"domainStrategy": "AsIs",
"domainMatcher": "mph",
"rules": [ // 规则有优先级,注意顺序。
{ // 屏蔽私有地址
"ip": [
"geoip:private"
],
"outboundTag": "blocked",
"type": "field"
},
{ // 屏蔽 BT
"protocol": [
"bittorrent"
],
"outboundTag": "blocked",
"type": "field"
},
{ // 用户分流。指定 UUID 全局走 WARP
"user": [
"[email protected]"
],
"outboundTag": "WARP_out",
"type": "field"
},
{ // 网站分流。指定网站走 WARP
"domain": [
"geosite:google",
"geosite:netflix",
"geosite:openai"
],
"outboundTag": "WARP_out",
"type": "field"
},
{ // IP 分流。指定 IP 走 WARP
"ip": [
"geoip:cn"
],
"outboundTag": "WARP_out",
"type": "field"
}
]
},
"dns": {
"servers": [
"https://dns.google/dns-query",
"https://dns11.quad9.net/dns-query",
"localhost"
]
}
}
SOCKS5 分流 (官方客户端)
一个示例,其它懂得都懂。
Xray SOCKS5 分流配置示例 | 点击查看
{
"log": {
"access": "none",
"error": "",
"loglevel": "debug"
},
"inbounds": [
{ // 入站 VMess ws 。协议不重要,重要的是思路。
"listen": "/dev/shm/v2ws.sock",
//"listen": "127.0.0.1",
//"port": 2443,
"protocol": "vmess",
"settings": {
"clients": [
{ // 常规路由规则用户 UUID
"id": "0ebc7d13-5ed4-4c45-a202-e4b7b1c86b20",
"alterId": 0
},
{ // WARP 全局用户 UUID
"email": "[email protected]", // 指定用户邮箱,用于分流
"id": "fe885a9f-4f3d-4162-a2a6-fd50aa6a8071",
"alterId": 0
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/vmess"
}
},
"sniffing": {
"enabled": true, // 开启流量探测,用于分流或屏蔽 BT 协议。
"destOverride": [ // 当流量为指定类型时,按其中包括的目标地址重置当前连接的目标。
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{ // 走服务器默认网络出站。路由规则未匹配的默认走第一个出口出站,所以这个要放在第一个位置。
"protocol": "freedom",
"settings": {
"domainStrategy": "AsIs"
}
},
{ // 出站 SOCKS5 代理。WARP 官方客户端
"tag": "WARP_out",
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 40000
}
],
"domainStrategy": "UseIP" // "UseIP"(双栈自适应)、”UseIPv4”(IPv4 优先)、”UseIPv4”(Pv6 优先)
}
},
{ // 黑洞。丢弃流量
"tag": "blocked",
"protocol": "blackhole"
}
],
"routing": {
"domainStrategy": "AsIs",
"domainMatcher": "mph",
"rules": [ // 规则有优先级,注意顺序。
{ // 屏蔽私有地址
"ip": [
"geoip:private"
],
"outboundTag": "blocked",
"type": "field"
},
{ // 屏蔽 BT
"protocol": [
"bittorrent"
],
"outboundTag": "blocked",
"type": "field"
},
{ // 用户分流。指定 UUID 全局走 WARP
"user": [
"[email protected]"
],
"outboundTag": "WARP_out",
"type": "field"
},
{ // 网站分流。指定网站走 WARP
"domain": [
"geosite:google",
"geosite:netflix",
"geosite:openai"
],
"outboundTag": "WARP_out",
"type": "field"
},
{ // IP 分流。指定 IP 走 WARP
"ip": [
"geoip:cn"
],
"outboundTag": "WARP_out",
"type": "field"
}
]
},
"dns": {
"servers": [
"https://dns.google/dns-query",
"https://dns11.quad9.net/dns-query",
"localhost"
]
}
}
注意事项和其它说明
- WARP 脚本允许 WARP 官方客户端与 WG 网络同时开启,但在 WG IPv4 或 WG 双栈全局模式下,因官方客户端默认走 IPv4 出口,WARP 客户端的网络数据可能会走在 WG 隧道中,这属于套娃行为,不仅减速效果非常明显,而且官方会限制这种行为并导致网络不稳定,所以并不建议这样使用。
- OpenVZ 或 LXC 的 VPS 需要先启用 TUN/TAP 功能,一般在网页管理面板开启,不明白请自行咕鸽搜索开启方法,否则 WARP WireGuard 模式会启动失败。不要再问为什么不能用了,都什么年代了还不整一个全功能带内核级加速的 KVM VPS ?相同的价格,更好的体验:高性价比便宜 VPS 传送门点此
遇到问题如何处理
- 部分已知问题由于篇幅过长已经转移至《Cloudflare WARP 一键安装脚本已知问题和解决方法》这篇文章中,遇到问题可以先看看。
- 其它问题请在 WARP 脚本的 GitHub issues 页面进行反馈
(顺便点个星),提供虚拟化平台、系统版本、内核版本以及从脚本运行到末尾的详细日志或其它有用的信息,以便分析问题原因改进脚本。若未提供有用信息一律当做垃圾信息删除 - 重启、重装、重买是解决问题的三大法宝。
相关推荐
- 《Cloudflare WARP 教程:给 VPS 额外添加“原生” IPv4/IPv6 双栈网络出口》
- 《使用 HE Tunnel Broker 给 IPv4 VPS 免费添加公网 IPv6 支持》
- 《2023年国外高性价比便宜 VPS 推荐》
- 《可访问 ChatGPT 的便宜 VPS 推荐》
本博客已开设 Telegram 频道,欢迎小伙伴们订阅关注。
本文作者:P3TERX
本文链接:https://p3terx.com/archives/cloudflare-warp-configuration-script.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
很不错,特来拜访博主。
老哥,我在使用非全局网络时,执行完之后显示的是如下信息:
似乎ipv4没有配置,我该怎么操作才能让ipv4也走warp呢
这显示的是当前直接连接的网络状态,正常情况下的 IPv4 是不走 WARP 的。要配合路由标记分流用,可以设置分给 IPv6,教程有给 Xray 的分流例子,你要改一下
"domainStrategy"
部分。大佬,请问怎么指定某个节点入站的流量全部走warp
大佬,我想请教一下,我用了官方的warp-cli,我想把sock5代理共享给局域网内的其他机器,但是好像局域网内的其他设备连不上这个代理,是因为设置了只允许127.0.0.1访问吗,怎么设置才可以给0.0.0.0访问呢
小白太多说那么专业几个看得懂?非常赞,就是要这么简单直接,
你好,老哥,我在vps安装warp官方客户端的时候显示This operating system is not supported,我的vps是Vultr Ubuntu 23.04,为什么会不支持呢,是因为系统版本太新吗?谢谢!
是太新了,官方没给包。而且官方也只会做 LTS 版本的包,下一个版本理论是 24.04 。
使用双栈非全局网络时,vps原有ipv6就无法使用了,只有走warp时才有cf的ipv6。
你提供的信息太少没办法判断问题,我只能猜,应该是你 VPS 本来的 IPv6 网络就有问题。双栈非全局不会对原有的网络进行任何修改,只是加了一条路由表来接受指定的出站流量。
Operating System: Oracle Linux Server 7.9
[ERROR] This operating system is not supported.
哈哈哈,我也不知道我为啥当初选择了这个系统。。。。不能用到大佬的东西。要不然考虑做个镜像?
Oracle Linux Server 7.9 相当于 CentOS 7,WARP 官方没给包,WG模式理论可用。
其实你可以 DD 重装换系统。
debian执行脚本遇到这个问题了
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected].
把内核从4.15升级到5.10,能解决
您好,这个脚本今后是否有docker化的支持?
脚本本身不会做 Docker 化支持。
直接部署的 Docker 镜像以后可能有。
怎么升级为 Zero Trust 账号呢,有考虑加入这个功能吗
官方客户端可以用 warp-cli 命令行的方式设置,文档在这里:https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/
等客户端功能稳定了脚本会加一键设置功能。
WG 方式看 CF 后续态度,现在 CF 在搞私有协议,说不定哪天 WG 直接全禁掉了。现在瞎折腾没必要。
请问博主,ASCII艺术字体,你是用什么工具生成的?很好看!
toilet,虽然名字不好听,但是能输出五彩斑斓的黑。
此外,如果配置为双栈全局代理,一开始有可能会出现vps无法ping通外网的问题,有可能是dns或者是host受到了影响,不需要复杂的操作,直接运行
systemctl restart wg-quick@wgcf
重启一下服务就好了。
大佬,强烈求助
上面这个问题又复现了,看来不是偶发性的,过一段时间就会断网,非要重启才可以,有没有什么解决方案?我的是ubuntu18.04
看起来github上一样有人提出这个问题(https://github.com/P3TERX/warp.sh/issues/81)
有没有办法解决这个问题?
看到几个 Ubuntu 遇到类似的问题,感觉是独有的问题。建议用 Debian,稳定性更好。
再次感谢您的回复,前面提到,因为您的脚本,我可以顺利访问chatgpt,而我又使用chatgpt解决了前面说的配置双栈代理、每隔一段时间vpn出现无法ping通外网的情况,解决方法是“通过编辑 /etc/systemd/resolved.conf 文件,在 DNS= 行中添加 DNS 服务器地址。然后,重启 systemd-resolved 服务,以使更改生效。”
现在已经完美运行两个月有余。
感谢大佬的脚本,帮我解决了chatgpt锁vpsip的问题,现在这样也更安全了。
为卡在下面这条提示的朋友一点经验,配置不成功的朋友,只要运行
apt-get upgrade linux-image-generic
更新一下系统内核就可以了,加不加sudo看自己
感谢大佬 ,我的chatgpt也得救了
被拯救chatgpt +1
给个赞,chatgpt被封找到的这个方法,但是为什么v2ray的vless-mKCP无法使用了
我不知道怎么形容你们了,中文互联网没有你们简直就是黑暗一片!真心真心跪谢大佬!!!!!!!!!!!!!!!这个脚本可以用来解锁openai的ip封锁,复杂的我也不懂,但是你就是神!!!!!
你这留言怎么感觉像是我请来的水军?
哈哈,水军在此 OωO
套上cloudflare warp之后延迟会变高,带宽也会受限。可以用netns让部分进程绕过warp: https://seekstar.github.io/2023/03/27/使用netns绕过wireguard/。这样就可以在同一个VPS上部署两个梯子,一个用warp,一个不用。
佩服大佬的折腾能力。其实不需要这么复杂,怪我有些东西没写完。
这脚本有一个非全局模式:
bash <(curl -fsSL git.io/warp.sh) x
,梯子软件只要加几行配置就可通过指定网络接口(wgcf)或设置路由标记(51888)的方式去走 WARP WireGuard 出去实现分流。有点小问题还没解决,加上一直在忙,久了就忘了,鸽了快两年一直没写用法。
跪谢大佬的脚本,救活了我的chatgpt