WireGuard 的安装和使用条件非常苛刻,对内核版本要求极高,不仅如此,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
所以一般不建议在生成环境中安装,除非你对自己的操作很有把握。Red Hat、CentOS、Fedora 等系统的内核,内核源码包,内核头文件包名分别为 kernel、kernel-devel、kernel-headers,Debian、Ubuntu 等系统的内核,内核源码包,内核头文件包名分别为 kernel、linux-headers。
一、升级内核如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。
而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。
因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
1.载入公钥对于 Ubuntu 等 apt 系的发行版来说,不需要升级内核即可安装 WireGuard,可以略过此步骤。
如果你使用的是 CentOS 等 rpm 系的发行版,必须要升级内核,步骤如下:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org2.升级安装 elrepo
# centos7 yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # centos8 yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm3.载入 elrepo-kernel 元数据
yum --disablerepo=* --enablerepo=elrepo-kernel repolist4.安装最新版本的内核
yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml -y5.删除旧版本工具包
yum remove kernel-tools-libs kernel-tools kernel-devel kernel-headers -y6.安装新版本工具包
yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y7.查看内核插入顺序
centos7命令
grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2 CentOS Linux (5.17.7-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-1160.31.1.el7.x86_64) 7 (Core) CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-20210623111207095151419199170789) 7 (Core) [root@duandian yum.repos.d]#
centos8命令
grubby --info=ALL |grep title title="Red Hat Enterprise Linux (5.17.7-1.el8.elrepo.x86_64) 8.5 (Ootpa)" title="Red Hat Enterprise Linux (0-rescue-4cb651785e634a439e0ba4d0a9408d82) 8.5 (Ootpa)" title="Red Hat Enterprise Linux (4.18.0-348.12.2.el8_5.x86_64) 8.5 (Ootpa)" title="Red Hat Enterprise Linux (0-rescue-ffffffffffffffffffffffffffffffff) 8.5 (Ootpa)"
默认新内核是从头插入,默认启动顺序也是从 0 开始。
8.查看当前实际启动顺序centos7命令
grub2-editenv list saved_entry=CentOS Linux (3.10.0-1160.31.1.el7.x86_64) 7 (Core)
centos8 命令
grubby --default-kernel #grubby --default-title /boot/vmlinuz-5.17.7-1.el8.elrepo.x86_649.设置默认启动
centos7 命令
grub2-set-default 'CentOS Linux (5.17.7-1.el7.elrepo.x86_64) 7 (Core)'
centos8 命令
grubby --set-default /boot/vmlinuz-5.17.7-1.el8.elrepo.x86_6410.重启检查
reboot uname -r二、安装 WireGuard
1.yum安装官方文档: Installation - WireGuard
centos7 安装
$ sudo yum install epel-release elrepo-release $ sudo yum install yum-plugin-elrepo $ sudo yum install kmod-wireguard wireguard-tools
centos8 安装
$ sudo yum install elrepo-release epel-release $ sudo yum install kmod-wireguard wireguard-tools2.脚本一键安装
从源码编译安装 WireGuard,只需一条命令即可。
$ wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.com/teddysun/across/master/wireguard.sh $ chmod 755 /opt/wireguard.sh $ /opt/wireguard.sh -s
关于该脚本需要说明几点:
- 支持两种安装方式:既支持从源代码编译安装,也支持从包管理器直接安装。
- 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片。
- 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置。
- 脚本会从 1024 到 20480 随机生成监听端口。
- 脚本支持新增,删除,列出客户端功能。
- 脚本支持查看已安装的 WireGuard 的版本号。
- 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本。
如果你想自己生成配置文件,请直接将配置文件目录清空:
rm -rf /etc/wireguard/*



