Total Pageviews

Friday, 16 July 2021

Cloudflare WARP configuration script


Quickly configure and use Cloudflare WARP on your Linux Server, which works with the latest major Linux distributions.

Features

  • Automatically install CloudFlare WARP Official Linux Client
  • Quickly enable WARP Proxy Mode, access WARP network with SOCKS5
  • Automatically install WireGuard related components
  • Configuration WARP IPv4 Network interface (with WireGuard)
  • Configuration WARP IPv6 Network interface (with WireGuard)
  • Configuration WARP Dual Stack Network interface (with WireGuard)
  • ...

Usage

bash <(curl -fsSL git.io/warp.sh) [SUBCOMMAND]

Subcommands

install         Install Cloudflare WARP Official Linux Client
uninstall       uninstall Cloudflare WARP Official Linux Client
proxy           Enable WARP Client Proxy Mode (default SOCKS5 port: 40000)
unproxy         Disable WARP Client Proxy Mode
wg4             Configuration WARP IPv4 Network interface (with WireGuard)
wg6             Configuration WARP IPv6 Network interface (with WireGuard)
wgd             Configuration WARP Dual Stack Network interface (with WireGuard)
rewg            Restart WARP WireGuard service
unwg            Disable WARP WireGuard service
status          Prints status information
version         Prints version information
help            Prints this message or the help of the given subcommand(s)
menu            Chinese special features menu

Credits

from https://github.com/P3TERX/warp.sh
-----

Cross-platform, unofficial CLI for Cloudflare Warp.

wgcf

wgcf is an unofficial, cross-platform CLI for Cloudflare Warp

   

Features

  • Register new account
  • Change license key to use existing Warp+ subscription
  • Generate WireGuard profile
  • Check account status
  • Print trace information to debug Warp/Warp+ status

Download

You can find pre-compiled binaries on the releases page.

Usage

Run wgcf in a terminal without any arguments to display the help screen. All commands and parameters are documented.

Register new account

Run the following command in a terminal:

wgcf register

The new account will be saved under wgcf-account.toml

Generate WireGuard profile

Run the following command in a terminal:

wgcf generate

The WireGuard profile will be saved under wgcf-profile.conf. For more information on how to use it, please check the official WireGuard Quick Start.

Maximum transmission unit (MTU)

To ensure maximum compatibility, the generated profile will have a MTU of 1280, just like the official Android app. If you are experiencing performance issues, you may be able to improve your speed by increasing this value. For more information, please check #40.

Change license key

If you have an existing Warp+ subscription, for an example on your phone, you can bind the account generated by this tool to your phone's account, sharing its Warp+ status. Please note that there is a current limit of maximum 5 linked devices active at a time.

This device's private key will be changed!

First, get your Warp+ account license key. To view it on Android:

  1. Open the 1.1.1.1 app
  2. Click on the hamburger menu button on the top-right corner
  3. Navigate to: Account > Key

Edit wgcf-account.toml directly with the new license key and run:

wgcf update

or, using an environment variable:

WGCF_LICENSE_KEY="123412341234" wgcf update

The license will be applied, and a new private key will be created for your account. Regenerate your WireGuard configuration and use the new private key.

Check device status

Run the following command in a terminal:

wgcf status

Verify Warp/Warp+ works

Connect to the WireGuard profile generated by this tool, then run:

wgcf trace

If you look at the last line, it should say warp=on or warp=plus, depending on whether you have Warp or Warp+ respectively.

Development

Sub-packages

  • api_tests - Tests for API documentation generation
  • spec_format - OpenAPI3 specification formatter to post-process the spec generated by Optic

API

This project uses Optic to automatically generate API documentation using the tests defined in api_tests. These tests cover all endpoints used by wgcf. The documentation is exported as an OpenAPI3 specification, which is then used with openapi-generator to generate the Go client API code under wgcf/openapi.

To update the API documentation, install Optic, then run:

api start

Resolve and save all the differences in the Web UI.

To regenerate the Go client API code, install openapi-generator, then run:

bash generate-api.sh

This script supports both Linux and WSL.

from https://github.com/ViRb3/wgcf

-----

Cloudflare WARP一键配置脚本使用教程

前言

Cloudflare WARP 一键配置脚本是一个简化在 Linux VPS 上安装和配置 Cloud­flare WARP 的脚本,它支持 WARP 官方客户端和 Wire­Guard 两种主流 WARP 使用方式,适用于 IPv4/​IPv6 单双栈各类的网络环境,操作系统、 CPU 架构和虚拟化平台支持全面。本篇是介绍说明及简单使用教程。

Cloud­flare WARP 是什么?能干什么?好不好用?

项目地址

https://github.com/P3TERX/warp.sh

支持本项目欢迎随手点个 star,可以让更多的人发现、使用并受益。你的支持是持续开发维护的动力。

脚本特点

  • CPU 架构支持:x86(i386)、x86_64(amd64)、ARMv8(aarch64)、ARMv7 等
  • 虚拟化平台支持:KVM、Xen、OpenVZ、LXC 等
  • 操作系统支持:Debian、Ubuntu、CentOS 等
  • 智能识别网络方案并自动匹配最佳配置方案进行部署
  • 独家优化配置方案,获得更好的 WARP 网络体验
  • 无需更换 Linux 内核,更稳定、更安全、更自由
  • 直观的进程状态、网络状态和 WARP 状态显示
  • Cloudflare WARP 官方 Linux 客户端支持
  • “一把梭”式极致体验

使用方法

SSH 连上 VPS .

  • 无论 VPS 是 IPv4 还是 IPv6 又或都有,添加 WARP Wire­Guard 双栈全局网络,直接使用以下命令一把梭:

    # 自动配置 WARP WireGuard 双栈全局网络
    bash <(curl -fsSL git.io/warp.sh) d
  • 添加或置换 IPv4/​IPv6 网络中的一个为 WARP Wire­Guard 网络,使用以下命令一把梭:

    # 自动配置 WARP WireGuard IPv4 网络
    bash <(curl -fsSL git.io/warp.sh) 4
    # 自动配置 WARP WireGuard IPv6 网络
    bash <(curl -fsSL git.io/warp.sh) 6
  • Cloud­flare 官方于近期发布了 WARP Linux 客户端,同时也带来了全新的 Proxy Mode 功能,它使得我们可以让应用通过本地的 SOCKS5 代理端口去直接使用 WARP 网络。对于想尝鲜官方客户端的小伙伴,可以使用以下命令一把梭自动安装 WARP 官方客户端并开启 SOCKS5 本机代理端口 (127.0.0.1:40000):

    # 自动配置 WARP 官方客户端 SOCKS5 代理
    bash <(curl -fsSL git.io/warp.sh) s5
  • 给喜欢功能菜单的小伙伴特别准备的功能,执行以下命令显示功能菜单和贴心的状态显示:

    # Cloudflare WARP 一键配置脚本 功能菜单
    bash <(curl -fsSL git.io/warp.sh) menu

注意事项和其它说明

  • 脚本目前处于公测阶段,可能还存在少量未知的 bug ,虽然不会导致毁灭性的问题,但不建议在生产环境中使用。
  • 自动配置 WARP WireGuard 双栈全局网络已做到适配目前大多数主流的系统和 IDC 网络方案,但不排除极个别的差异没考虑到,因此可能会因为路由规则不适用而导致 SSH 失联。若失联可以使用网页 VNC 登录到 VPS 然后执行systemctl stop wg-quick@wgcf命令停止 WARP WireGuard 进程即可恢复。
  • 因 WireGuard 的 bug 与 WARP 网络偶发性连接故障,可能会出现网络状态显示均为未连接且网络访问异常的情况,使用systemctl restart wg-quick@wgcf命令重启 WARP WireGuard 进程即可。这个问题在 Linux 内核 5.6 以上更新频繁且激进的版本很大概率会遇到。
  • 功能菜单中的手动选择 WARP WireGuard 双栈配置方案最初设计为自动配置失联后的备用方案,一般来说几乎不会用到。当然你喜欢也可以直接用,如果需要使用可根据实际情况与需求选择,遵循“无则添加、有则置换”原则。注意确认 IP 地址是否需要修改,如需修改可以手动输入 IP。
  • 脚本使用 wgcf 生成通用 WireGuard 配置文件,配置完成后会原样备份至~/.wgcf目录,以便下次脚本自动调用,避免重复申请 WARP 账号导致 IP 被 Cloudflare 拉黑。
  • 若之前自行生成过 WireGuard 配置文件,在文件名为wgcf-profile.conf的情况下在此配置文件所在目录执行脚本会优先调用并截取关键信息生成符合所选方案的新配置文件。这个功能对已生成过有 WARP+ 流量配置文件的小伙伴应该会很有用。
  • WARP WireGuard 双栈全局网络可能会导致 Docker 应用在 Bridge 网络模式下无法通过 IP 直接访问。可以使用 Host 网络模式,或者用 nginx 反代的方式去使用。暂时还没有完美解决方案。
  • WARP 官方 Linux 客户端由于才上线不久,还处在待完善阶段,且系统支持不全,目前只建议在 x86_64(amd64) 架构的 Debian 10+、Ubuntu 20.04、CentOS 8 系统中安装和使用。
  • WARP 官方客户端与 WARP WireGuard 网络可以同时使用,但 WARP 客户端的网络数据可能会走在 WARP WireGuard 隧道中,属于套娃行为,减速效果非常明显。
  • WARP 官方客户端可能无法在部分 IPv6 Only VPS 上使用,可以先添加 WARP WireGuard IPv4 网络,但正如前面所说套娃减速。

遇到问题如何处理

  • 脚本运行失败或错误请在 GitHub issues 页面进行留言,提供虚拟化平台、系统版本、内核版本以及从脚本运行到末尾的详细日志,以便分析问题原因改进脚本。
  • 重启、重装、重买是解决问题的三大法宝。

最后

这个脚本从方案设计到代码编写全部都是由博主个人原创,且花费了大量时间和精力打磨而成,最初只是自己使用,觉得达到了近乎完美的状态也就开源分享了出来。如果觉得这个脚本对你有帮助,可以去 WARP 脚本的 Github 项目页面,点下 Star 点亮小星星支持一下,也欢迎小伙伴们分享出去让更多的人看到、使用并受益。

from https://p3terx.com/archives/cloudflare-warp-configuration-script.html

--------------------------------------------------------------

Cloudflare WARP给VPS服务器额外添加IPv4网络,获得“原生”IP


前言

WARP 是 Cloud­flare 提供的一项基于 Wire­Guard 的网络流量安全及加速服务,能够让你通过连接到 Cloud­flare 的边缘节点实现隐私保护及链路优化。之前有很多小伙伴拿来当做某科学的上网工具来使用,应该很熟悉了。不过由于 Wire­Guard 数据传输使用的 UDP 协议,中国大陆运营商会对其进行 QoS ,加上多数 IP 被封锁,现在可以说几乎处于不可用的状态了。而对于自由网络的地区来说没有这些限制,加上有国外开发者制作的工具可以生成通用的 Wire­Guard 配置文件,这使得我们可以在海外 VPS 上部署并获得如下效果加成:

  • WARP 网络出入口均为双栈 (IPv4/​IPv6),因此单栈服务器可以连接到 WARP 来获取额外的网络连通性支持:

    • IPv6 Only VPS 可获得 IPv4 网络的访问能,不再局限于 DNS64 的束缚,能自定义任意 DNS 解析服务器。对使用某科学的上网工具有奇效。
    • IPv4 Only VPS 可获得 IPv6 网络的访问能力,可作为 IPv6 Only VPS 的 SSH 跳板。此外 WARP 的 IPv6 网络的质量比 HE IPv6 Tunnel Broker 甚至自带的都要好,很少绕路。
  • WARP 对外访问网络的 IP 被很多网站视为真实用户,即所谓的 “原生” IP,可以解除某些网站基于 IP 的封锁限制:

    • 解锁 Netflix的非自制电影
    • 跳过 Google 验证码
    • 解除 Google 学术访问限制
    • 解除 YouTube Premium 定位漂移和地区限制

当然这只是冰山一角,其它作用小伙伴们可以在部署后慢慢发掘。

本篇是相关知识科普和纯手动部署教程,小伙伴们可边学习边折腾。如果想直接部署可以使用 Cloudflare WARP一键配置脚本。

TIPS: 需要注意的是 WARP 并不提供公网 IP 地址,它是以 NAT 的方式去访问外部网络,即只能用于对外网络访问,不能用于对 VPS 本机访问。如果你的需求是要一个可供访问VPS的公网 IPv6 地址,那么可以使用 HE IPv6 Tunnel Broker 。

安装 WireGuard

既然 WARP 基于 Wire­Guard ,那么我们首先就需要安装 Wire­Guard 。

使用 wgcf 生成 WireGuard 配置文件

wgcf(https://github.com/ViRb3/wgcf) 是 Cloud­flare WARP 的非官方 CLI 工具,它可以模拟 WARP 客户端注册账号,并生成通用的 Wire­Guard 配置文件

  • 安装 wgcf

    curl -fsSL git.io/wgcf.sh | sudo bash
  • 注册 WARP 账户 (将生成 wgcf-account.toml 文件保存账户信息)

    wgcf register
  • 生成 Wire­Guard 配置文件 (wgcf-profile.conf)

    wgcf generate

生成的两个文件记得备份好,尤其是 wgcf-profile.conf,万一未来工具失效、重装系统后可能还用得着。

编辑WireGuard的配置文件



将配置文件中的节点域名 engage.cloudflareclient.com 解析成 IP。不过一般都是以下两个结果:

162.159.192.1
2606:4700:d0::a29f:c001



这样做是因为后面的操作要根据 VPS 所配备的网络协议的不同去选择要连接 WARP 的节点是 IPv4 或 IPv6 协议。

IPv4 Only 服务器添加 WARP IPv6 网络支持

将配置文件中的 engage.cloudflareclient.com 替换为 162.159.192.1,并删除 AllowedIPs = 0.0.0.0/0。即配置文件中 [Peer] 部分为:

[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = ::/0
Endpoint = 162.159.192.1:2408
原理:AllowedIPs = ::/0参数使得 IPv6 的流量均被 Wire­Guard 接管,让 IPv6 的流量通过 WARP IPv4 节点以 NAT 的方式访问外部 IPv6 网络。

此外配置文件中默认的 DNS 是 1.1.1.1,博主实测其延迟虽然很低,但解析结果并不理想。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),建议小伙伴们请根据实际情况来进行替换,或者直接删除 DNS 这行。以下配置供参考:

DNS = 8.8.8.8,8.8.4.4,2001:4860:4860::8888,2001:4860:4860::8844

IPv6 Only 服务器添加 WARP IPv4 网络支持

将配置文件中的 engage.cloudflareclient.com 替换为 [2606:4700:d0::a29f:c001],并删除 AllowedIPs = ::/0。即配置文件中 [Peer] 部分为:

[Peer]
PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
AllowedIPs = 0.0.0.0/0
Endpoint = [2606:4700:d0::a29f:c001]:2408
原理:AllowedIPs = 0.0.0.0/0参数使得 IPv4 的流量均被 Wire­Guard 接管,让 IPv4 的流量通过 WARP IPv6 节点以 NAT 的方式访问外部 IPv4 网络。

此外配置文件中默认的 DNS 是 1.1.1.1,由于是 IPv4 地址,故查询请求会经由 WARP 节点发出。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),为了防止当节点发生故障时 DNS 请求无法发出,建议替换为 IPv6 地址的 DNS 优先,或者直接删除 DNS 这行。以下配置供参考:

DNS = 2001:4860:4860::8888,2001:4860:4860::8844,8.8.8.8,8.8.4.4

双栈 WARP 全局网络置换

双栈 WARP 全局网络是指 IPv4 和 IPv6 都通过 WARP 网络对外进行网络访问,实际上默认生成的 Wire­Guard 配置文件就是这个效果。由于默认的配置文件没有外部对 VPS 本机 IP 网络访问的相关路由规则,一旦直接使用 VPS 就会直接失联,所以我们还需要对配置文件进行修改。路由规则需要添加在配置文件的 [Interface] 和 [Peer] 之间的位置,以下是路由规则示例:

[Interface]
...
PostUp = ip -4 rule add from <替换IPv4地址> lookup main
PostDown = ip -4 rule delete from <替换IPv4地址> lookup main
PostUp = ip -6 rule add from <替换IPv6地址> lookup main
PostDown = ip -6 rule delete from <替换IPv6地址> lookup main
[Peer]
...
TIPS: 包含<>(尖括号)的部分一起替换掉,这只是为了看起来明显。

替换配置中的 IP 地址部分为 VPS 的公网 IP 地址,如果 IDC 提供的是 VPC 内网方案则需要替换为内网 IP 。很多大厂都是 VPC 内网方案,比如 GCP 、AWS 等,内网地址一般会在网页面板有提供。如果不确定是哪种网络方案,输入 ip a | grep <公网IP地址> 看是否有显示,没有那么就说明是 VPC 内网方案。

启用 WireGuard 网络接口

  • 将 Wire­Guard 配置文件复制到 /etc/wireguard/ 并命名为 wgcf.conf

    sudo cp wgcf-profile.conf /etc/wireguard/wgcf.conf
  • 开启网络接口(命令中的 wgcf 对应的是配置文件 wgcf.conf 的文件名前缀)。

    sudo wg-quick up wgcf



  • 执行执行ip a命令,此时能看到名为wgcf的网络接口,类似于下面这张图:



  • 执行以下命令检查是否连通。同时也能看到正在使用的是 Cloud­flare 的网络。

    # IPv4 Only VPS
    curl -6 ip.p3terx.com
    # IPv6 Only VPS
    curl -4 ip.p3terx.com



  • 测试完成后关闭相关接口,因为这样配置只是临时性的。

    sudo wg-quick down wgcf
  • 正式启用 Wire­Guard 网络接口

    # 启用守护进程
    sudo systemctl start wg-quick@wgcf
    # 设置开机启动
    sudo systemctl enable wg-quick@wgcf

IPv4 与 IPv6 网络优先级设置

TIPS: 优先级不是一定要设置的,这仅限于 VPS 本身对外发起的网络请求。使用某科学的上网工具不一定有效,建议使用工具内置的路由分流功能。

当访问的网站是双栈且服务器也是双栈,默认情况下 IPv6 优先级高于 IPv4,应用程序优先使用 IPv6 地址。

理论上应该是如下情况:

  • IPv4 Only 服务器优先通过新增的 WARP IPv6 网络去访问外部网络。
  • IPv6 Only 服务器优先通过原来的 IPv6 网络去访问外部网络。

然而 WARP 的情况有点特殊,现实的情况有可能是:

  • IPv4 Only 服务器优先通过原来的 IPv4 网络去访问外部网络。
  • IPv6 Only 服务器优先通过原来的 IPv6 网络去访问外部网络。

所以根据实际的需求就要手动去设置优先级。

IPv4 优先

编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:

precedence ::ffff:0:0/96  100

一键添加命令如下:

# IPv4 优先
grep -qE '^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100' /etc/gai.conf || echo 'precedence ::ffff:0:0/96  100' | sudo tee -a /etc/gai.conf

IPv6 优先

编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:

label 2002::/16   2

一键添加命令如下:

# IPv6 优先
grep -qE '^[ ]*label[ ]*2002::/16[ ]*2' /etc/gai.conf || echo 'label 2002::/16   2' | sudo tee -a /etc/gai.conf

验证优先级

执行 curl ip.p3terx.com 命令,显示 IPv4 地址则代表 IPv4 优先,否则为 IPv6 优先。

优先级设置在特殊场景中的局限性

在 VPS 上使用某科学的上网工具,则还取决于科学工具的 DNS 策略和分流路由策略。

最需要注意的是某些路由器上的某科学的上网工具客户端不会发送域名给服务端,而是在本地直接将域名解析为 IP 并通过服务端直接向 IP 发起连接,那么可能因为屏蔽了 AAAA 记录,就只会去访问 IPv4 网络。这个问题解决方法是开启某科学的上网工具服务端的流量探测 (sniff­ing) 功能,并添加相关路由进行 IP 分流处理,它会从数据中嗅探出域名并进行二次 DNS 解析后对网络流量进行重定向,就比如可以将本身发往网站 IPv4 服务器的流量重定向到 IPv6 服务器。

某科学上网工具的IP 分流方法

有关某科学的上网工具的 DNS 和路由分流设置有很多资料,小伙伴们可自行咕鸽。每个人的需求不一样,不可能以偏概全,最好是看相关工具的文档,所以博主在这里就不多赘述了。这里推荐一篇博主个人认为写得最好的教程:《v2ray白话文手册 - 指定出站 IP》: https://toutyrater.github.io/app/netflix.html#%E6%8C%87%E5%AE%9A%E5%87%BA%E7%AB%99-ip,结合相关文档食用效果更佳。

Cloudflare WARP 网速测试

使用 speedtest.net 提供的 CLI 工具测试通过 WARP 访问外部网络的极限网速,不过仅限测试 IPv4 的速度。

  • 安装 Ookla Speedtest CLI: https://www.speedtest.net/apps/cli

    curl -fsSL git.io/speedtest-cli.sh | sudo bash
  • 执行speedtest命令测速。

博主随便拿一个吃灰的 LXC 小鸡进行了测试,发现即使用的是 wireguard-go 其网速依然很猛,几轮测试下来速度都在 500M 上下。可以预见的是这个速度应该远未达到 WARP 的极限,不过随着这篇教程的发布,之后是否还是这么理想就不得而知了。


尾巴

Cloud­flare 一直以来为广大人民群众免费提供优秀的网络服务,希望大家善待它,不要肆意滥用。

from  https://p3terx.com/archives/use-cloudflare-warp-to-add-extra-ipv4-or-ipv6-network-support-to-vps-servers-for-free.html

---------

连接CF WARP为服务器添加IPv4/IPv6网络


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是正确安装上的:

安装主程序,Debian需要添加unstable源,Ubuntu则只需要添加库即可:

经过群友的补充,CentOS 7因为内核比较老不能支持,需要安装添加elrepo源并更换kernel-ml内核。个人不推荐使用CentOS进行安装,7得换内核,8还成了弃子,有点麻烦。

DKMS会将WG的内核模块编译并加载上去,出现DKMS: install completed.并且无错误即可。如果出现内核模块未加载成功,可以尝试reinstall一下wireguard-dkms,最终以如下命令检查:

确认模块有返回后,就可以把上文【二】中你需要的配置文件拿出来,配置文件目录放在/etc/wireguard下。比如我选择命名为wgcf.conf,则开启与关闭命令与配置文件对应:

开启后可通过ifconfig看到名称为你配置文件的WARP虚拟网卡,此时便可以通过WARP进行外部访问了。


安装Go版本模块

OpenVZ和LXC因为不具有内核权限,如果确有需要自己装WireGuard-Go作为内核模块的替代,WG主程序在检测不到内核的模块时会fallback到go的模块启动程序;同时这个也可以解决部分人不想给内核加载模块的问题,只是效率略低。

在这之前我们要检查一下你的服务器是否开启了TUN支持,如果未开启的话需要联系你的服务商开启:

既然是go语言写的,自己编译和用现成别人编译好的都可以,自己编译的话需要go语言版本高于1.13才可以。

直接用别人编译好的包也是可以的,loc上的@52mfzy提供了一个预编译64位的项目的地址。

其他的架构我找到一个比较老的20181222版本,如有需要可以按自己需求选择(点击前往),tar.xz包用tar -xf命令解压。注意这里提供的旧版本软件包因为是测试版本,需要添加确认运行的系统变量(新版本就没问题了);你可以在启动隧道前执行一次,也可以添加到/etc/profile永久生效。

go模块安装正确后,请参考前文添加源并安装主程序,Debian仅安装wireguard-tools即可,Ubuntu安装wireguard,CentOS仅安装wireguard-tools,内核模块无需安装。其余的写配置文件和使用也与前文一致。


开机自启

我不建议把WARP设置为开机自启,不过也没什么问题,官方提供的文档是通过systemctl管理的,所以比较老的系统就不用考虑了。


四、结语

本文最初的目的就是因为买了Scaleway的Stardust纯IPv6实例,实测效果是非常不错的。相比于DNS64等方案,CloudFlare提供的网络非常优秀。

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

经过实际测试,与WARP建立的隧道在5天的时间中均未出现明显的波动,其连通性及稳定性相较于HE.NET的TunnelBroker好很多;并且作为商业化的应用,其速度得到了很好的保证。

至于前文AllowIPs讲的非常简单,只用了仅保留IPv4/IPv6其一,其实可以不必如此,它是以路由表的形式接管流量,你可以自己通过修改参数自己指定路由表的内容。这里就不展开讲了,附一个从loc大佬那里拿来的IP库(点击下载)。

最后还是那句话,且用且珍惜,不要将公共的资源肆意加以滥用~


*转载请注明原文档出处
*文章部分参考自Linode官方文档

转载原创文章请注明,转载自: Luminous' Home » 【WGCF】连接CF WARP为服务器添加IPv4/IPv6网络
  1. Guest

    cernet2这几天应该是精准封锁了warp的IPv6 2408端口,表现在icmp正常响应,所有udp流量都被阻断

  2. Geek

    老板 ,你的博客在Chrome下打开,正文字体会变白,开不到。
    edge就没问题

    1. Luminous
      @Geek 在群里问了一圈并没有人反馈这个问题,建议清理下本地缓存
      1. Geek
        @Luminous 无痕没问题,那应该是插件的的锅
  3. 小弟

    大佬有个问题想请教下,我在纯ipv4的机器下接入了wgcf为机器添加了ipv6支持,连上之后机器能正常访问ipv6网络,但是并没有像其他linux系统那样有ipv6的网站优先使用ipv6访问。我想原因可能是因为wiregard和eth0不是一块网卡,如果要优先访问ipv6网络那么ipv6和ipv4是不是要在同一块网卡上才行(eth0里面也有一个fe80开头的内网ipv6地址),不知道大佬有什么解决办法吗?

    1. Luminous
      @小弟 这个还真没有关注过,不过好像可以通过工具指定优先使用IPv6来联网吧?
  4. Chris

    老哥 加个友链可好
    https://blog.8086k.cn/ 飞羽小随笔

    1. Luminous
      @Chris 请在留言交流页面按相关格式提交哦~
  5. Chris

    最近教育网V6到晚上就炸 延迟100+ms

    1. Luminous
      @Chris 没办法,那2*10G的容量相比于绝大多数高校不限制单终端带宽,只要有数十个流量大户就能让这个出口堵起来……
  6. 听说

    CF WARP 这样会有流量限制吗?

    1. Luminous
      @听说 目前来讲,还没有限制
  7. cholmes

    https://hiram.wang/cloudflare-wrap-vps/
    这个大佬的方法似乎可以让ipv4和ipv6都走warp
    但是我在韩国甲骨文上面试了一下,成功运行了
    但是ipv4 ping不通,只有ipv6能通。

  8. euserv.com

    Euserv的Ubuntu 20.04 LTS (Focal Fossa) – 64Bit – minimal v4系统。存在以下两个问题:

    1.#Ubuntu添加库
    add-apt-repository ppa:wireguard/wireguard
    错误提示:
    The team named ‘~wireguard’ has no PPA named ‘ubuntu/wireguard’
    Please choose from the following available PPAs:

    2.#开启隧道
    sudo wg-quick up wgcf
    则一直卡在:wg setconf wgcf /dev/fd/63

    1. Luminous
      @euserv.com LXC架构本身因为虚拟化程度很低,出现问题也是比较正常的,你可以尝试一下自己编译wg-go模块,之前有过预编译包无法使用的案例与你所说的情况一致;至于Ubuntu的库我个人不太了解,因为我用很少用。
  9. 大大白

    大佬,可以分享下双栈的路由嘛,谢谢了

    1. Luminous
      @大大白 我也没试过,只是理论上可以……
      1. 大大白
        @Luminous 我成功了,写一条回源路由就可以进站了,但是只能成功第一次,关闭之后再开就不行了
        1. Nick
          @大大白 请教双栈 ipv4 + ipv6 如何使用,可以请大佬提供下你实现的方法吗?🙂 tg@bt_pig
          1. 大大白
            @Nick table=off,然后写路由表
  10. loukky

    你好,问下怎样才能让wgcf的虚拟网卡优先走路由呢?

    1. loukky
      @loukky 问题已经解决。
  11. yh56789

    请问,德鸡euserv运行wg-quick up wgcf出现以下错误是怎么回事?

    1. Luminous
      @yh56789 整个log没问题,如果后面运行不了就用别人编译好的预编译包就是了,我之前在EUSERV上面编译的也没法用
  12. xkcht

    不好使
    json: cannot unmarshal object into Go value of type []openapi.GetBoundDevices200Response
    今天看到GitHub上有人在Issue里说了,等个更新把

  13. 致命吕布

    cf warp给的边缘节点的ipv4能不能用来ssh到服务器?

    1. Luminous
      @致命吕布 WARP给你的是NAT4,不是给你附加公网
  14. 故道白云

    wireguard在5.6版本已经进入内核,安装更简单了。以Debian10为例,开启buster-backports源之后,升级到最新的内核:

    然后安装wirdguard:

    一切都弄好之后,可以将 WireGuard 设置成开机启动:

    重启后可通过命令wg检查启动是否成功。Debian10默认未安装ifconfig软件包。这是因为不建议使用ifconfig,而推荐使用新的ip命令ip addr

    1. Luminous
      @故道白云 感谢补充(*^_^*)
  15. 🐔你太美

    离谱,自己编译不能用,预编译的就行

  16. 嘤嘤嘤

    小白请问一下,服务器配置完,本地如何使用呢?

    1. Luminous
      @嘤嘤嘤 这个不在解答范围内,自己搜索哦啊(¬‿¬)
      1. 嘤嘤嘤
        @Luminous 是当正常服务器直接使用么(●ˇ∀ˇ●), 还是用wireguard客户端(这个不太会用┭┮﹏┭┮)
        1. Luminous
          @嘤嘤嘤 这只是让服务器能访问IPv4或者IPv6,比如那种纯IPv6的服务器,连GitHub都访问不了,开了这个就都能了
          1. 嘤嘤嘤
            @Luminous 意思就是直接当作一台IPV4服务器玩就可以了,谢谢大佬
  17. wxchello

    我直接卡在了注册这一步,换了三台不同地区的机器,都是 429 Too many requests

    1. Luminous
      @wxchello 执行register注册,看.toml文件生成了没,然后直接不停执行generate,几次就成功了
  18. qiao7

    纯v4机子按教程操作,但是开网卡后v6始终ping不通,mtr也是一片空白

    1. Luminous
      @qiao7 描述的很空啊,看不出是什么问题,ifconfig能不能看到网卡,直接ping6 IPv6地址通不通,配置文件能不能用都检查一下吧
      1. qiao7
        @Luminous ifconfig有网卡但是包都被drop了 配置文件如下
        [Interface]
        PrivateKey = ***
        Address = 172.16.0.2/32
        Address = fd01:5ca1:ab1e:8fef:5987:1e5c:1219:18b2/128
        DNS = 1.1.1.1
        MTU = 1280
        [Peer]
        PublicKey = ***
        AllowedIPs = ::/0
        Endpoint = 162.159.192.1:2408
    2. 轩
      @qiao7 兄弟解决了吗?我跟你一样的问题,在其他机器上都能一次成功,在某一太机子上就是不行,我运行了wg,显示 endpoint: 162.159.192.1:2408 allowed ips: ::/0 transfer: 0 B received, 592 B sent ,而正常的显示 endpoint: 162.159.192.1:2408 allowed ips: ::/0 latest handshake: 2 seconds ago transfer: 1.06 KiB received, 900 B sent 好像没成功的那一台机子上,都没有握手成功啊,这是被加入黑名单了吗?新开的机子
  19. StevenSa

    想问问大佬有没有什么方法能在纯ipv6的vps上dd系统

    1. Luminous
      @StevenSa 有VNC的话可以进去手动配置网卡,但是目前一键脚本都不支持配置IPv6的网卡参数,有点无解
  20. Ce

    dalao tql
    这比起Nat64貌似可以直接访问纯ipv4了。
    我这里甚至可以用纯v6+Warp去Ssh Ipv4的机子

    不过我用那个Scaleway Debian貌似会报错。
    用Ubuntu才正常 且打开运行一小会后 就不能用了 必须在/etc/resolv.conf添加个 ipv6的DNS
    否则解析不了域名

    1. Luminous
      @Ce 当然,毕竟是直接连入了WARP的虚拟网络。至于你说的问题,建议结合报错来看,解析不了的问题建议检查下resolvconf装了没,无误的话你可以在wg的配置文件里把DNS改成CF的2606:4700:4700::1111
  21. kamisama996

    经测试Debian5.10.11内核安装wireguard-dkms会报错,只需要apt install wireguard-dkms wireguard-tools -y 就可以了
    具体错误如下:
    Building for 5.10.11
    Building initial module for 5.10.11
    Error! The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which
    does not match this kernel/arch. This indicates that it should not be built.
    Skipped.

    1. Luminous
      @kamisama996 没在自己换的内核上面测试过,不太清楚欸……
  22. 🐔你太美

    我在euserv上按网上的教程尝试过编译wireguard-go,但是失败了,也不知道是小鸡问题还是别的问题,等大佬出教程

    1. 🐔你太美
      @🐔你太美 原来是go版本低了,这次应该编译成功了,但还是ping不通ipv4
      1. Luminous
        @🐔你太美 刚才试了下是没问题的,执行wg-quick up之后没出现报错之类的。就是resolv.conf需要自己编辑一下DNS,改成Google IPv6的就可以,LXC系统缺少一些权限。
        1. 🐔你太美
          @Luminous 感谢大佬
  23. rcdfrd

    wgcf 提取配置时 429 Too many requests

    1. Luminous
      @rcdfrd 执行register之后,ls查看account.toml是不是获取到了,然后多执行几次生成配置就能成功了
    2. from  http://web.archive.org/web/20210717035730/https://luotianyi.vc/5252.html
    3. --------
    4. 提取WARP配置为CERNET提供IPv6流量转发

    5. 校园网的IPv4收费不少高校都比较贵,而IPv6是不限速不限量的。经过2020年9月10日教育网的路由变动后,CERNET在HKIX与HE以Peer via IX的形式进行了互联。因为HE本身是IPv6的顶级之一,其在HKIX的互联还是一个开放的Public Peering,极大的降低了到达CERNET香港互联点的难度。这样修改之后虽然到HKIX那10G的链路出现了一定程度的拥塞,但是速度还是远优于以前的北美方向。

      并且在10.23左右,CNGI与HKIX的互联点由cernet1-10g.hkix.net变更为cernet1-lacp-10g.hkix.net,说明容量由原来的单根10G扩容到了至少2*10G链路聚合,SmokePing也记录到Week44修改后丢包率明显下降。

      借着教育网修改路由,CloudFlare也就能够以CERNET>HKIX(HE)>CloudFlare这样的路由链直接到达香港节点,速度和延迟都是相当可观的。WARP或1.1.1.1是CloudFlare提供的面向个人用户的隧道信息安全工具,技术层面基于WireGuard,在发布之初就有@yyuueexxiinngg大佬写了一个提取为通用配置文件的脚本,不过后来失效了。昨天看到别人发了WGCF这个项目,随手测试一下就发现居然是可行的……

      *注意:本文内容仅适用于教育网CERNET对应的IPv6网络(CNGI),运营商网络到该服务的互联均已被阻断


      一、下载WGCF

      WGCF是一个基于Go语言编写的WARP管理程序,作者一直在维护,使用起来相当方便

      项目地址:https://github.com/ViRb3/wgcf

      前往release页面选择自己便于使用的平台对应的预编译程序,考虑到与CF通信的顺畅我选择的是位于境外的VPS进行操作,本地的话因为CF这项服务的特殊性很可能是不行的


      二、修改配置文件

      初次使用首先就是注册个用户并生成配置文件:

      随后你就可以在程序目录中找到wgcf-account.tomlwgcf-profile.conf两个新生成的文件。前者是你的WARP账户信息,如果你有WARP+账户可以替换成你自己的账户;后者就是WireGuard的配置文件了,下载到本地保存。

      要让他纯使用IPv6可以自己把engage.cloudflareclient.com解析成IP,我测试的解析结果是2606:4700:d0::a29f:c001,如图对Endpoint修改后保存即可。


      三、客户端连接

      客户端就不多提了,自己用搜索引擎去查找,直接导入你修改过的配置文件即可连接。

      连接后之后测试路由都是从WARP的节点连接出去的,这样便可以访问IPv4网络了。

      速度方面我用的是免费的WARP,多线程最高大概200M左右,简单测试了一下WARP+速度并没有比较大的提升,可能是UDP或者。


      四、结语

      这个话题其实有点敏感了,文章里很多地方就自己去摸索比较好。CF这个公司提供这么多的服务还是希望大家不要去过分的滥用,毕竟WARP免费版本的速度还是很不错了。

      通过邀请用户可以获得WARP+的流量,每月初会清空一次。实际测试WARP+在访问非CF的网站速度上和免费版没有差异,只有在访问CloudFlare的站点时付费版会通过Argo类似的技术通过与目标较近的数据中心前往源站,而免费版是仅限于连接地前往源站,仅此而已。

      也不知道这项服务在教育网中还能使用多久,且用且珍惜吧。

      转载原创文章请注明,转载自: Luminous' Home » 【WGCF】提取WARP配置为CERNET提供IPv6流量转发
      1. 山大王

        我在自己带教育网v6地址的电脑上也register成功了,应该是不需要海外机器

        1. Luminous
          @山大王 嗯,能与1.1.1.1的API正常通信就可以
      2. 小胖子

        不敢在手机上用了……就用了十分钟,手机发烫,电量掉了10%
        我还是乖乖用***好了(:-D)

      3. 小胖子

        Wireguard 的手动配置极其恶心,想要配置IPv6还很麻烦,所以就弃用了……
        不过这玩意居然是用Wireguard做的吗?!也许我可以考虑一下在教育网IPv6试试,正好能省一省服务器带宽和流量钱

        1. Luminous
          @小胖子 嗯,CF基于WG用RUST开发的BoringTun,协议就是WG的协议,可以直接使用。
          1. 小胖子
            @Luminous 亲测可用。这样一来,除了我在vultr的新加坡服务器之外,又有了一个选择……不过,我也不觉得这玩意能坚持多久。万一教育网把路由隔离做好了,或者把墙加的像中移动那么高……
            1. Luminous
              @小胖子 修改路由是教育网故意的,在HKIX依然是自有PNI没有漏路由的问题,是和HE做了Peer via IX,通过HE的链路间接实现的开放,到HKIX从10G扩容到20G也可以证实这一点。
      4. 保温杯

        赞!

      5. JoJo

        根据今年7月的国家ipv6发展报告中的国际出口统计数据,推算教育网ipv6出口只有20G,被挤爆是早晚的事情的吧。
        https://www.china-ipv6.cn/policyFile/%E4%B8%AD%E5%9B%BDIPv6%E5%8F%91%E5%B1%95%E7%99%BD%E7%9A%AE%E4%B9%A6-2020%E5%B9%B47%E6%9C%88-%E7%BB%88%E7%89%88.pdf

        1. Luminous
          @JoJo 教育网本身用户比较少,实际上有效容量就是到HKIX的10G,偶尔炸多数时候还是够用的。
      6. 家具资讯网

        怎么下载?XD,博客很好看

      7. 真理是检验实践的唯一标准

        大佬程序怎么下载?

        1. Luminous
          @真理是检验实践的唯一标准 建议利用好搜索引擎XD
      8. CZM

        大佬好强啊

        1. Luminous
          @CZM 不,还是大哥强
      9. 小谈谈BH1XAQ

        不错不错~过来踩踩

      10. ha

        蛤,我们学校教育网用的是IPV4,还不限速

        1. Luminous
          @ha 南方的高校都还好,北方的很多纯教育网的比较贵
        2. kk
          @ha azure纯ipv4的vps通过cf cdn自选ip来代替负载均衡实现ipv6流量转发,效果还可以,我这里和谷歌云负载均衡差不多
          1. Luminous
            @kk 吃了教育网改路由的红利,现在都差不多,不过拿Azure做落地不觉得有点浪费么233333
          2. from http://web.archive.org/web/20210220041721/https://luotianyi.vc/4500.html
          3. ------------------
          4. cloudflare的免费wireguard服务-WARP

          5. 著名慈善企业cloudflare给了我们一个能彻底解决这个问题的方案:WARP,通俗点说就是免费的wireguard服务,最重要的是cloudflaret提供的出站IP不会被谷歌拉入黑名单,且能解锁许多针对IP进行限制的服务,例如Netflix

            部署WARP

            部署wireguard

            这里不再赘述,都2021年了,许多Linux系统已经集成了对wireguard的支持,基本可以做到一键安装,详情参考wireguard官方文档:wireguard

            部署wgcf

            wgcf提供了自动化注册WARP与生成wireguard配置文件的功能,同样可一键安装:

            1
            2
            3
            4
            5
            6
            
            # 安装wgcf
            curl -fsSL git.io/wgcf.sh | bash
            # 注册WARP,生成WARP配置文件
            wgcf register
            # 通过WARP配置文件生成wireguard配置文件
            wgcf generate
            

            执行完成后生成以下文件:

            1
            2
            3
            4
            
            # WARP配置文件
            wgcf-account.toml
            # wireguard配置文件
            wgcf-profile.conf
            

            这里展示一个示例wireguard配置文件:

             1
             2
             3
             4
             5
             6
             7
             8
             9
            10
            11
            
            [Interface]
            PrivateKey = 4H5V4tIb7DsVI2CTkj/Nn8z/qDHLUAdgJFJTvUUMa1o=
            Address = 172.16.0.2/32
            Address = fd01:5ca1:ab1e:8aff:34bb:89c5:28d0:95e/128
            DNS = 1.1.1.1
            MTU = 1280
            [Peer]
            PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
            AllowedIPs = 0.0.0.0/0
            AllowedIPs = ::/0
            Endpoint = engage.cloudflareclient.com:2408
            

            配置wireguard

            自动生成的wireguard配置文件中接管了IPv4与IPv6的路由,使用后会让VPS立刻断连。

            我们的目的是让访问谷歌的流量走wireguard,其他的流量使用默认路由,这里就在三层利用路由策略来实现,假设VPS只有IPv4地址

            公网
            谷歌IP段
            其他IP段
            客户端
            服务端
            路由规则
            WARP代理
            默认公网IP

            获取谷歌公网IP地址段

            1
            2
            3
            4
            
            #!/bin/sh
            STR=$(curl -s https://www.gstatic.com/ipranges/goog.json | grep ipv4Prefix | awk '{print $2}' | sed -e 's/"//g' | tr "\r\n" "," | sed 's/\r\n/,/g')
            CIDR=${STR%?}
            echo $CIDR
            

            保存为脚本,执行后输出:

            1
            
            8.8.4.0/24,8.8.8.0/24,8.34.208.0/20,8.35.192.0/20,23.236.48.0/20,23.251.128.0/19,34.64.0.0/10,34.128.0.0/10,35.184.0.0/13,35.192.0.0/14,35.196.0.0/15,35.198.0.0/16,35.199.0.0/17,35.199.128.0/18,35.200.0.0/13,35.208.0.0/12,35.224.0.0/12,35.240.0.0/13,64.15.112.0/20,64.233.160.0/19,66.102.0.0/20,66.249.64.0/19,70.32.128.0/19,72.14.192.0/18,74.114.24.0/21,74.125.0.0/16,104.154.0.0/15,104.196.0.0/14,104.237.160.0/19,107.167.160.0/19,107.178.192.0/18,108.59.80.0/20,108.170.192.0/18,108.177.0.0/17,130.211.0.0/16,136.112.0.0/12,142.250.0.0/15,146.148.0.0/17,162.216.148.0/22,162.222.176.0/21,172.110.32.0/21,172.217.0.0/16,172.253.0.0/16,173.194.0.0/16,173.255.112.0/20,192.158.28.0/22,192.178.0.0/15,193.186.4.0/24,199.36.154.0/23,199.36.156.0/24,199.192.112.0/22,199.223.232.0/21,207.223.160.0/20,208.65.152.0/22,208.68.108.0/22,208.81.188.0/22,208.117.224.0/19,209.85.128.0/17,216.58.192.0/19,216.73.80.0/20,216.239.32.0/19
            

            将上述IP地址替换默认配置文件的IPv4地址段,则新配置文件如下:

             1
             2
             3
             4
             5
             6
             7
             8
             9
            10
            11
            
            [Interface]
            PrivateKey = 4H5V4tIb7DsVI2CTkj/Nn8z/qDHLUAdgJFJTvUUMa1o=
            Address = 172.16.0.2/32
            Address = fd01:5ca1:ab1e:8aff:34bb:89c5:28d0:95e/128
            DNS = 1.1.1.1
            MTU = 1280
            [Peer]
            PublicKey = bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=
            AllowedIPs = 8.8.4.0/24,8.8.8.0/24,8.34.208.0/20,8.35.192.0/20,23.236.48.0/20,23.251.128.0/19,34.64.0.0/10,34.128.0.0/10,35.184.0.0/13,35.192.0.0/14,35.196.0.0/15,35.198.0.0/16,35.199.0.0/17,35.199.128.0/18,35.200.0.0/13,35.208.0.0/12,35.224.0.0/12,35.240.0.0/13,64.15.112.0/20,64.233.160.0/19,66.102.0.0/20,66.249.64.0/19,70.32.128.0/19,72.14.192.0/18,74.114.24.0/21,74.125.0.0/16,104.154.0.0/15,104.196.0.0/14,104.237.160.0/19,107.167.160.0/19,107.178.192.0/18,108.59.80.0/20,108.170.192.0/18,108.177.0.0/17,130.211.0.0/16,136.112.0.0/12,142.250.0.0/15,146.148.0.0/17,162.216.148.0/22,162.222.176.0/21,172.110.32.0/21,172.217.0.0/16,172.253.0.0/16,173.194.0.0/16,173.255.112.0/20,192.158.28.0/22,192.178.0.0/15,193.186.4.0/24,199.36.154.0/23,199.36.156.0/24,199.192.112.0/22,199.223.232.0/21,207.223.160.0/20,208.65.152.0/22,208.68.108.0/22,208.81.188.0/22,208.117.224.0/19,209.85.128.0/17,216.58.192.0/19,216.73.80.0/20,216.239.32.0/19
            AllowedIPs = ::/0
            Endpoint = engage.cloudflareclient.com:2408
            

            修改后的配置文件回通过添加路由规则,让IPv6的流量和所有访问谷歌IP的流量走wireguard。

            拷贝配置文件到wireguard目录即可启用分流:

            1
            2
            
            cp wgcf-profile.conf /etc/wireguard/wgcf.conf
            systemctl enable --now wg-qucik@wgcf
            

            应用层分流

            上述配置需要获取谷歌的IP段,然后加入到路由规则实现分流:

             1
             2
             3
             4
             5
             6
             7
             8
             9
            10
            11
            
            ➜  ~ ip route show
            default via 192.168.178.1 dev eth0 proto static metric 100
            172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
            8.8.4.0/24 dev wgcf scope link
            8.8.8.0/24 dev wgcf scope link
            8.34.208.0/20 dev wgcf scope link
            ......
            209.85.128.0/17 dev wgcf scope link
            216.58.192.0/19 dev wgcf scope link
            216.73.80.0/20 dev wgcf scope link
            216.239.32.0/19 dev wgcf scope link
            

            假如我们还需要让Twitter、Facebook、Netflix等的流量走wireguard,则需要将他们的所有IP段都加入路由规则中,有点不太人道,那么我们就需要一个支持分流的代理软件,通过geoip或geosite的数据库实现应用层分流,让匹配规则的流量通过wireguard出站:

            公网
            谷歌/推特/脸书/奈飞
            其他站点或IP段
            客户端
            服务端
            GEO数据库
            使用IPv6线路
            WARP代理
            默认公网IP

            这里以v2ray为例,使用routing功能实现应用层分流,以下是服务端的配置文件示例,这里只展示出站规则与路由规则:

             1
             2
             3
             4
             5
             6
             7
             8
             9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            
            {
                "log": {
                    "loglevel": "warning"
                },
                "inbounds": [],
                "outbounds": [
                    {
                        "protocol": "freedom",
                        "settings": {
                            "domainStrategy": "UseIPv4"
                        },
                        "tag": "direct"
                    },
                    {
                        "protocol": "freedom",
                        "settings": {
                            "domainStrategy": "UseIPv6"
                        },
                        "tag": "wgcf"
                    },
                    {
                        "protocol": "blackhole",
                        "settings": {},
                        "tag": "blackhole"
                    }
                ],
                "routing": {
                    "rules": [
                        {
                            "type": "field",
                            "outboundTag": "blackhole",
                            "protocol": ["bittorrent"]
                        },
                        {
                            "type": "field",
                            "outboundTag": "wgcf",
                            "domains": [
                                "geosite:google"
                            ]
                        }
                    ],
                    "balancers": []
                }
            }
            

            配置文件定义了三个出站规则:

            • direct:使用IPv4解析域名,通过默认公网IP出站
            • wgcf:使用IPv6解析域名,通过wireguard出站
            • blackhole:禁止出站

            然后定义了两个路由规则:

            • 禁止种子流量
            • 匹配谷歌站点,使用wgcf出站规则,走wireguard出站

            这里还未解决原路返回的问题,依旧受限于系统路由规则,假如在wgcf出站规则中设置sendThrough使用wireguard的IPv4地址,仍然会走默认公网IP出站。

            参考链接:

            https://github.com/ViRb3/wgcf

          6. -------------
          7. https://github.com/aliilapro/warp-plus-cloudflare
          8. -----------
          9. Project-WARP-Unlock

            Intro

            旨在借由Cloudflare WARP一键解锁大部分流媒体的脚本

            工作原理:

            • 安装ipset+dnsmasq+wireguard
            • 禁用wireguard的自动路由
            • 将vps的解析交由dnsmasq处理,为了将解析结果自动放入ipset
            • 使用iptables为ipset中的ip打上mark,再让这些ip走特定的路由表
            • 特定的路由表中仅存在一条使用wireguard的默认路由

            因为WireGuard直接安装对内核版本有一定的要求(>5.6),所以该一键脚本不能在较老的系统/使用较老系统内核上正常使用

            *另有使用BoringTun实现的版本,用户态实现的WireGuard不依赖于内核版本。适配性更好

            使用WireGuard的版本(需要内核版本 > 5.6):curl -sL https://raw.githubusercontent.com/acacia233/Project-WARP-Unlock/main/run.sh | bash

            使用BoringTun的版本:curl -sL https://raw.githubusercontent.com/acacia233/Project-WARP-Unlock/main/run-boringtun.sh | bash

            如果遇到解决不了的问题,欢迎加入Telegram频道:@cutenicobest 探讨

            依赖并不多,所以并无卸载脚本提供,systemctl disable wg-quick@wg --now 然后重启即可

            后话

            • 能力强的可以根据脚本内容自行改动,该方法适用性强,可应用于其他的VPN应用分流

            • WireGuard因为需要适配太多数情况,所以iptables规则清除较为暴力。如果原本配有iptables规则的建议自行修改部分清除规则,以达到最佳效果.

            • from   https://github.com/acacia233/Project-WARP-Unlock


          10. ----------------------
          11. https://www.edu.cn/ , 中国教育和科研计算机网(cernet)
          12. https://www.cernet.com

No comments:

Post a Comment