cf虚拟服务器设置方法,【WGCF】连接CF WARP为服务器添加IPv4/IPv6网络

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

27cc55fe8d9061270766c8ad1cb7a3ee.png

一、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直至正常生成即可。

ca2792236a3e71b368a103506818edbc.png

为仅IPv6服务器添加IPv4

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

ac482bcf3dd9501b27791d171165a2f2.png

三、安装客户端

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

OpenVZ和LXC因为不具有内核权限,如果确有需要自己装WireGuard-Go作为内核模块的替代,其提供的文档要求自己配置go环境进行编译,并没有现成的二进制预编译包。当然安装后的配置操作都是相差无几的,在这因为并不推荐就补充在最后面好了。

博主在这些”玩具”机器上使用的均是Debian系统,所以作为一篇记录我就只考虑Ubuntu和Debian系统了~

安装前先确定kernel-header已安装,并且检查下resolv是正确安装上的:

安装依赖

Shell

apt-get install sudo net-tools openresolv -y

1

apt-getinstallsudonet-toolsopenresolv-y

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

#Debian添加unstable源

echo “deb http://deb.debian.org/debian/ unstable main” > /etc/apt/sources.list.d/unstable-wireguard.list

printf ‘Package: *nPin: release a=unstablenPin-Priority: 150n’ > /etc/apt/preferences.d/limit-unstable

#更新源并安装

apt-get update

apt-get install wireguard-dkms wireguard-tools

#Ubuntu添加库

add-apt-repository ppa:wireguard/wireguard

#更新源并安装

apt-get update

apt-get install wireguard

1

2

3

4

5

6

7

8

9

10

11

12

#Debian添加unstable源

echo”deb http://deb.debian.org/debian/ unstable main”>/etc/apt/sources.list.d/unstable-wireguard.list

printf’Package: *nPin: release a=unstablenPin-Priority: 150n’>/etc/apt/preferences.d/limit-unstable

#更新源并安装

apt-getupdate

apt-getinstallwireguard-dkmswireguard-tools

#Ubuntu添加库

add-apt-repositoryppa:wireguard/wireguard

#更新源并安装

apt-getupdate

apt-getinstallwireguard

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

Shell

#安装elrepo源

rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

#安装额外包组件

yum install -y epel-release elrepo-release yum-plugin-elrepo

#安装内核

yum –enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-headers kernel-ml-devel

#查看启动顺序

cat /boot/grub2/grub.cfg | grep menuentry

#设置启动顺序

grub2-set-default 0

#查看设置成功

grub2-editenv list

#更新grub

grub2-mkconfig -o /boot/grub2/grub.cfg

#重启

reboot

#查看已安装内核

rpm -qa | grep kernel

#卸载无用的

yum remove 或 rpm -e

#安装WireGuard组件

yum install kmod-wireguard wireguard-tools

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#安装elrepo源

rpm-importhttps://www.elrepo.org/RPM-GPG-KEY-elrepo.org

rpm-Uvhhttps://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

#安装额外包组件

yuminstall-yepel-releaseelrepo-releaseyum-plugin-elrepo

#安装内核

yum–enablerepo=elrepo-kernel-yinstallkernel-mlkernel-ml-headerskernel-ml-devel

#查看启动顺序

cat/boot/grub2/grub.cfg|grepmenuentry

#设置启动顺序

grub2-set-default0

#查看设置成功

grub2-editenvlist

#更新grub

grub2-mkconfig-o/boot/grub2/grub.cfg

#重启

reboot

#查看已安装内核

rpm-qa|grepkernel

#卸载无用的

yumremove或rpm-e

#安装WireGuard组件

yuminstallkmod-wireguardwireguard-tools

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

#加载内核模块

modprobe wireguard

#检查WG模块加载是否正常

lsmod | grep wireguard

1

2

3

4

#加载内核模块

modprobewireguard

#检查WG模块加载是否正常

lsmod|grepwireguard

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

#开启隧道

sudo wg-quick up wgcf

#关闭隧道

sudo wg-quick down wgcf

1

2

3

4

#开启隧道

sudowg-quickupwgcf

#关闭隧道

sudowg-quickdownwgcf

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

安装Go版本模块

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

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

检查TUN模块

Shell

#尝试加载内核模块

modprobe tun

#检查TUN模块加载是否正常

lsmod | grep tun

1

2

3

4

#尝试加载内核模块

modprobetun

#检查TUN模块加载是否正常

lsmod|greptun

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

编译安装

Shell

#下载代码

git clone https://git.zx2c4.com/wireguard-go

#进入源码目录

cd wireguard-go

#编译

make

#将编译好文件移到执行目录

mv ./wireguard-go /usr/bin/wireguard-go

#添加执行权限

chmod +x /usr/bin/wireguard-go

#检查运行是否有返回

wireguard-go

1

2

3

4

5

6

7

8

9

10

11

12

#下载代码

gitclonehttps://git.zx2c4.com/wireguard-go

#进入源码目录

cdwireguard-go

#编译

make

#将编译好文件移到执行目录

mv./wireguard-go/usr/bin/wireguard-go

#添加执行权限

chmod+x/usr/bin/wireguard-go

#检查运行是否有返回

wireguard-go

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

预编译包安装

Shell

#下载二进制文件(64位Linux)

wget -P /usr/bin https://github.com/bernardkkt/wg-go-builder/releases/latest/download/wireguard-go

#添加执行权限

chmod +x /usr/bin/wireguard-go

#检查执行是否正常

wireguard-go

1

2

3

4

5

6

#下载二进制文件(64位Linux)

wget-P/usr/binhttps://github.com/bernardkkt/wg-go-builder/releases/latest/download/wireguard-go

#添加执行权限

chmod+x/usr/bin/wireguard-go

#检查执行是否正常

wireguard-go

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

系统变量

#每次开机后执行 或 添加到/etc/profile

export WG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1

1

2

#每次开机后执行 或 添加到/etc/profile

exportWG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1

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

开机自启

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

开机自启

Shell

#允许配置文件为wg0的开机自启

systemctl enable wg-quick@wg0.service

#重载deamon配置

systemctl daemon-reload

#启动wg0配置文件的进程

systemctl start wg-quick@wg0

1

2

3

4

5

6

#允许配置文件为wg0的开机自启

systemctlenablewg-quick@wg0.service

#重载deamon配置

systemctldaemon-reload

#启动wg0配置文件的进程

systemctlstartwg-quick@wg0

四、结语

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

632957e15bef6afeef019b9bd98773fe.png

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

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

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

*转载请注明原文档出处

*文章部分参考自Linode官方文档

文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树首页概览22034 人正在系统学习中 相关资源:virtualbow:设计和模拟弓箭的软件-其它代码类资源-CSDN文库

来源:弓弢

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月2日
下一篇 2021年7月2日

相关推荐