IPv6 Only VPS连接CloudFlare WARP为服务器添加IPv4网络

域名服务器 BaWoDu 2个月前 (02-08) 259次浏览 9个评论 扫描二维码

免费的Euserv IPv6 Only VPS虽可用DNS64+NAT64间接访问IPv4网址,但是无法访问IPv4的IP且速度比较慢。最新黑科技是OpenVZ或LXC虚拟化类型的 IPv6 Only VPS可以通过WireGuard-Go连接CloudFlare WARP为服务器添加IPv4网络环境。

WARP是CloudFlare提供的一项基于WireGuard的网络流量安全及加速服务,能够让你通过连接到CloudFlare的边缘节点实现隐私保护及链路优化。

其连接入口为双栈(IPv4/IPv6均可),且连接后能够获取到由CF提供基于NAT的IPv4和IPv6地址,因此我们的单栈服务器可以尝试连接到WARP来获取额外的网络连通性支持。这样我们就可以让仅具有IPv6的服务器访问IPv4,也能让仅具有IPv4的服务器获得IPv6的访问能力。

下面我们以免费德国EUserv IPv6 only VPS   Debian 10系统来演示配置CloudFlare WARP方法。

一、WGCF配置

首先我们需要通过WGCF注册WARP账户并提取为WG配置文件。

1、下载WGCF

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

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

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

#弄个文件夹方便管理相关文件
mkdir wgcf
cd wgcf
#下载对应程序
wget -O wgcf https://github.com/ViRb3/wgcf/releases/download/v2.1.4/wgcf_2.1.4_linux_amd64
#添加执行权限
chmod +x wgcf

二、修改配置文件

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

#注册WARP账户
./wgcf register
#生成WireGuard配置文件
./wgcf generate

可能会出现429 Too Many Requests报错,在wgcf register执行之后看到目录里生成wgcf-account.toml即可,然后多次执行wgcf generate直至正常生成即可。

IPv6 Only VPS连接CloudFlare WARP为服务器添加IPv4网络

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

以上第一、二步的目标是获取到如下图所示的wgcf-profile.conf

[Interface]
PrivateKey = sG6u80cQnKNNgvxREYn8OI0bVT9jIiNQoe301TU1TlQ=
Address = 172.16.0.2/32
Address = fd01:5ca1:ab1e:8ccd:9db0:342f:c59e:3a0e/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

修改:对wgcf-profile.conf中11行engage.cloudflareclient.com:2408修改为[2606:4700:d0::a29f:c001]:2408,删除掉第10行AllowedIPs = ::/0 接管本地IPv6路由的配置。保存好用于第四步的wireguard配置文件。

IPv6 Only VPS连接CloudFlare WARP为服务器添加IPv4网络

修改原因:

  1. 要让它纯使用IPv6,所以把engage.cloudflareclient.com替换成IP,我测试的解析结果是2606:4700:d0::a29f:c001
  2. 掉第10行AllowedIPs = ::/0 接管本地IPv6路由的配置。由于AllowedIPs = 0.0.0.0/0的参数使得IPv4的流量均被WARP网卡接管,实现了让IPv4的流量通过WARP访问外部网络

二、安装wireguard-go

WireGuard是内核级别的工具,来自官方的包需要加载内核模块,所以在安装前请保证你的服务器是KVM/HyperV/XEN HVM这样完全虚拟化的服务器。

OpenVZ和LXC因为不具有内核权限,需要装WireGuard-Go作为内核模块的替代,其提供的文档要求配置go环境进行编译。

WG主程序在检测不到内核的模块时会fallback到go的模块启动程序;同时这个也可以解决部分人不想给内核加载模块的问题,只是效率略低。

在这之前我们要检查一下你的服务器是否开启了TUN支持,如果未开启的话需要联系你的服务商开启。EUserv Debian 10 系统默认已开启了TUN。

#检查TUN模块加载是否正常
lsmod | grep tun

这里为减少步骤,避免不必要的错误,使用别人编译好的64位的WireGuard-Go。使用自己编译的话需要go语言版本高于1.13才可以。

#进入/usr/bin
cd /usr/bin
#下载二进制文件
wget https://github.com/bernardkkt/wg-go-builder/releases/latest/download/wireguard-go
#添加执行权限
chmod +x /usr/bin/wireguard-go
#检查执行是否正常
wireguard-go

IPv6 Only VPS连接CloudFlare WARP为服务器添加IPv4网络

Go模块安装正确后,还需在Debian上安装wireguard-tools。

上面安装的WireGuard-Go,只是将WireGuard的内核部分 (wireguard.ko) 编译完成了,我们还需要安装WireGuard主程序 (wg 和 wg-quick),才能使得WireGuard能够正常使用,所以还需要安装wireguard-tools。

三、安装wireguard-tools

下面我们通过Debian的unstable源来安装wireguard-tools,从而不用自己编译。安装前先安装依赖,避免resolvconf报错。

#安装依赖
apt-get install sudo net-tools openresolv -y

安装主程序,Debian需要添加unstable源:

#Debian添加unstable源
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable-wireguard.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' > /etc/apt/preferences.d/limit-unstable
#更新源并安装
apt-get update
apt-get install wireguard-tools -y

四、启动wireguard

resolv.conf需要自己编辑一下DNS,改成Google或Cloudfalre IPv6 DNS的就可以,因为LXC系统缺少一些权限。

#编辑DNS改成CF DNS IPv6
echo -e "nameserver 2606:4700:4700::1111" > /etc/resolv.conf

从第一步中你需要的配置文件拿出来,把配置文件目录传到/etc/wireguard下。比如我选择命名为wgcf.conf,则开启与关闭命令与配置文件对应:

#开启隧道 
wg-quick up wgcf
#关闭隧道
wg-quick down wgcf

安装成功后返回以下信息:

INFO: (wgcf) 2021/02/08 04:02:39 Starting wireguard-go version 0.0.20201118
[#] wg setconf wgcf /dev/fd/63
[#] ip -4 address add 172.16.0.2/32 dev wgcf
[#] ip -6 address add fd01:5ca1:ab1e:8ccd:9db0:342f:c59e:3a0e/128 dev wgcf
[#] ip link set mtu 1280 up dev wgcf
[#] resolvconf -a wgcf -m 0 -x
Too few arguments.
Too few arguments.
[#] wg set wgcf fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wgcf table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

开启后可通过ifconfig命令,看到名称为你配置文件的WARP虚拟网卡,如下wgcf虚拟网卡就是wireguard生成的虚拟网卡。此时便可以通过WARP进行外部访问了。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 2a02:180:6:1::11d2  prefixlen 128  scopeid 0x0
        inet6 fe80::284:edff:fe4b:b1dd  prefixlen 64  scopeid 0x20
        ether 00:84:ed:4b:b1:dd  txqueuelen 1000  (Ethernet)
        RX packets 102932  bytes 135947988 (129.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33967  bytes 3732318 (3.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 6  bytes 768 (768.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6  bytes 768 (768.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wgcf: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
        inet 172.16.0.2  netmask 255.255.255.255  destination 172.16.0.2
        inet6 fe80::c546:b163:f99a:e7b5  prefixlen 64  scopeid 0x20
        inet6 fd01:5ca1:ab1e:8ccd:9db0:342f:c59e:3a0e  prefixlen 128  scopeid 0x0
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6  bytes 288 (288.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

至此OpenVZ和LXC类型VPS安装WireGuard连接CloudFlare WARP为服务器添加IPv4网络完毕。实测效果是非常不错的。相比于DNS64等方案,CloudFlare提供的网络非常优秀。

如果是KVM/HyperV/XEN HVM这样完全虚拟化的服务器的Debian 10 用 wireguard-dkms来替代wireguard-go。

第三步的apt-get install wireguard-tools -y 改为如下

apt-get install wireguard-dkms wireguard-tools -y


参考文章:https://luotianyi.vc/5252.html


Bawodu.com , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:https://bawodu.com/ipv6-only-vps-cloudflare-warp-for-ipv4/
喜欢 (5)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(9)个小伙伴在吐槽
  1. 博主,问一下第一步生成的账号文件有四行,怎么把账号替换到配置文件里面
    pony2021-02-13 02:26 回复
  2. 运行wg-quick up wgcf出现以下问题是怎么回事?[#] ip link add wgcf type wireguardRTNETLINK answers: Operation not supported[!] Missing WireGuard kernel module. Falling back to slow userspace implementation.[#] wireguard-go wgcf┌───────────────────────────────────────────────────┐│ ││ Running this software on Linux is unnecessary, ││ because the Linux kernel has built-in first ││ class support for WireGuard, which will be ││ faster, slicker, and better integrated. For ││ information on installing the kernel module, ││ please visit: . ││ │└───────────────────────────────────────────────────┘[#] wg setconf wgcf /dev/fd/63
    yh567892021-02-22 09:14 回复
    • WireGuard tool没安装好,建议用Debian 10系统,一步步按图索骥,以免意外错误发生
      BaWoDu2021-02-22 09:52 回复
      • 我是Euserv的Ubuntu 20.04 LTS (Focal Fossa) - 64Bit - minimal v4,在第三步安装wireguard-tools同样不会处理,已经运行了apt-get update和apt-get upgrade了,出现楼上一样的提示而进行不下去,请搏主增加一下ubuntu如何处理的方法呢。PS:Euserv只有Debian 9.0 (Stretch) - 64Bit - minimal v2,没有10。
        ubuntu2021-02-23 11:54 回复
  3. 原来可以,现在总是 wg setconf wgcf /dev/fd/63 报错
    pony2021-02-23 06:24 回复
    • 这个错误我也遇到过,后来我改成Debian 10 且用来别人编译好的WireGuard tool就好了。
      BaWoDu2021-02-24 08:24 回复
      • 我现在就是debian10,也是用的别人编译好的,不行
        yh5678902021-02-24 11:42 回复
  4. debian10跟着你的步骤。一步一步来。还是出现错误[#] ip link add wgcf type wireguardRTNETLINK answers: Operation not supported[!] Missing WireGuard kernel module. Falling back to slow userspace implementation.[#] wireguard-go wgcf┌───────────────────────────────────────────────────┐│ ││ Running this software on Linux is unnecessary, ││ because the Linux kernel has built-in first ││ class support for WireGuard, which will be ││ faster, slicker, and better integrated. For ││ information on installing the kernel module, ││ please visit: . ││ │└───────────────────────────────────────────────────┘[#] wg setconf wgcf /dev/fd/63
    iiiyr2021-02-24 11:48 回复
  5. [#] ip link add wgcf type wireguardRTNETLINK answers: Operation not supported[!] Missing WireGuard kernel module. Falling back to slow userspace implementation.[#] wireguard-go wgcf┌───────────────────────────────────────────────────┐│ ││ Running this software on Linux is unnecessary, ││ because the Linux kernel has built-in first ││ class support for WireGuard, which will be ││ faster, slicker, and better integrated. For ││ information on installing the kernel module, ││ please visit: . ││ │└───────────────────────────────────────────────────┘ERROR: (wgcf) 2021/03/01 09:03:55 UAPI listen error: unix socket in use[#] ip link delete dev wgcfCannot find device "wgcf"
    Hao2021-03-01 16:04 回复