WARP是CloudFlare提供的一项基于WireGuard的 络流量安全及加速服务,能够让你通过连接到CloudFlare的边缘节点实现隐私保护及链路优化。
一、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直至正常生成即可。
为仅IPv6服务器添加IPv4
原理如图,由于AllowedIPs = 0.0.0.0/0的参数使得IPv4的流量均被WARP 卡接管,实现了让IPv4的流量通过WARP访问外部 络。这样的需求请参考情况②对配置文件进行修改。
三、安装客户端
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
四、结语
经过实际测试,与WARP建立的隧道在5天的时间中均未出现明显的波动,其连通性及稳定性相较于HE.NET的TunnelBroker好很多;并且作为商业化的应用,其速度得到了很好的保证。
至于前文AllowIPs讲的非常简单,只用了仅保留IPv4/IPv6其一,其实可以不必如此,它是以路由表的形式接管流量,你可以自己通过修改参数自己指定路由表的内容。这里就不展开讲了,附一个从loc大佬那里拿来的IP库(点击下载)。
最后还是那句话,且用且珍惜,不要将公共的资源肆意加以滥用~
*文章部分参考自Linode官方文档
文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树首页概览22034 人正在系统学习中 相关资源:virtualbow:设计和模拟弓箭的软件-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!