WireGuard 快速安装教程
安装前说明:
WireGuard 的安装和使用条件非常苛刻,对内核版本要求极高,不仅如此,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。
所以一般不建议在生成环境中安装,除非你对自己的操作很有把握。Red Hat、CentOS、Fedora 等系统的内核,内核源码包,内核头文件包名分别为
kernel
、kernel-devel
、kernel-headers
,Debian、Ubuntu 等系统的内核,内核源码包,内核头文件包名分别为kernel
、linux-headers
。
如果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了
wireguard-tools
而已。而 WireGuard 真正工作的部分,是
wireguard-dkms
,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。
一、升级内核
对于 Ubuntu 等 apt 系的发行版来说,不需要升级内核即可安装 WireGuard,可以略过此步骤。
如果你使用的是 CentOS 等 rpm 系的发行版,必须要升级内核,步骤如下:
1.载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2.升级安装 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.rpm
3.载入 elrepo-kernel 元数据
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
4.安装最新版本的内核
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml -y
5.删除旧版本工具包
yum remove kernel-tools-libs kernel-tools kernel-devel kernel-headers -y
6.安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y
7.查看内核插入顺序
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_64
9.设置默认启动
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_64
10.重启检查
reboot
uname -r
二、安装 WireGuard
官方文档: Installation - WireGuard
1.yum安装
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-tools
2.脚本一键安装
从源码编译安装 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/*