前言

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 系) 系统中使用。其它发行版也许能正常安装,但可能存在无法正常启动的问题。

使用方法

以下两种模式按照自己的需求二选一,二者功能是独立的。

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 页面进行反馈(顺便点个星),提供虚拟化平台、系统版本、内核版本以及从脚本运行到末尾的详细日志或其它有用的信息,以便分析问题原因改进脚本。若未提供有用信息一律当做垃圾信息删除
  • 重启、重装、重买是解决问题的三大法宝。

相关推荐


本博客已开设 Telegram 频道,欢迎小伙伴们订阅关注。