前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在五分钟内装好 WireGuard?!

如何在五分钟内装好 WireGuard?!

作者头像
米开朗基杨
发布2020-11-25 17:40:42
7.6K0
发布2020-11-25 17:40:42
举报
文章被收录于专栏:云原生实验室

前言

WireGuard 的安装和使用条件非常苛刻,对内核版本要求极高,不仅如此,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。所以一般不建议在生成环境中安装,除非你对自己的操作很有把握。Red Hat、CentOS、Fedora 等系统的内核,内核源码包,内核头文件包名分别为 kernelkernel-develkernel-headers,Debian、Ubuntu 等系统的内核,内核源码包,内核头文件包名分别为 kernellinux-headers

果这三者任一条件不满足的话,则不管是从代码编译安装还是从 repository 直接安装,也只是安装了 wireguard-tools 而已。而 WireGuard 真正工作的部分,是 wireguard-dkms,也就是动态内核模块支持(DKMS),是它将 WireGuard 编译到系统内核中。因此,在某些 VPS 商家,是需要你先自主更换系统内核,并事先将这三者安装好,才有可能不会出现编译或安装失败。

当然,目前 WireGuard 已经被合并到 Linux 5.6 内核中了,如果你的内核版本 >= 5.6,就可以用上原生的 WireGuard 了,只需要安装 wireguard-tools 即可。例如,对于 Ubuntu 20.04 来说,它的内核版本是 5.4,虽然小于 5.6,但经过我的测试发现它已经将 WireGuard 合并到了内核中,我们只需要安装 wireguard-tools 即可:

代码语言:javascript
复制
$ sudo apt install wireguard -y

下面讨论 WireGuard 在低版本内核中的安装方法。

1. 升级内核

对于 Ubuntu 等 apt 系的发行版来说,不需要升级内核即可安装 WireGuard,可以略过此步骤。

如果你使用的是 CentOS 等 rpm 系的发行版,必须要升级内核,步骤如下:

① 载入公钥

代码语言:javascript
复制
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

② 升级安装 elrepo

代码语言:javascript
复制
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

③ 载入 elrepo-kernel 元数据

代码语言:javascript
复制
$ yum --disablerepo=\* --enablerepo=elrepo-kernel repolist

④ 安装最新版本的内核

代码语言:javascript
复制
$ yum --disablerepo=\* --enablerepo=elrepo-kernel install  kernel-ml.x86_64  -y

⑤ 删除旧版本工具包

代码语言:javascript
复制
$ yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64  -y

⑥ 安装新版本工具包

代码语言:javascript
复制
$ yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-devel kernel-ml-headers -y

⑦ 查看内核插入顺序

代码语言:javascript
复制
$ grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)
CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-96820b9851c24560b5f942f2496b9aeb) 7 (Core)

默认新内核是从头插入,默认启动顺序也是从 0 开始。

⑧ 查看当前实际启动顺序

代码语言:javascript
复制
$ grub2-editenv list

saved_entry=CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)

⑨ 设置默认启动

代码语言:javascript
复制
$ grub2-set-default 'CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)'

最后重启检查:

代码语言:javascript
复制
$ reboot
$ uname -r

2. 安装 WireGuard

升级内核之后,就可以根据官方文档[1]来安装 WireGuard 了。不过这里我要介绍一个更狂野的安装方法,它更高效,也更不容易出错,那就是通过源代码编译安装。先别急着反驳,我知道从源代码编译看起来一点都不容易,但请听我说完。你以为我会教你如何从头开始编译吗?那不可能,有违我这篇文章的初衷,我要推荐一位大佬——秋水逸冰的一键安装脚本,它可以让你哼着小曲就能从源码编译安装 WireGuard,只需一条命令即可。

脚本的使用方法超级简单,先下载脚本,然后赋予执行权限,最后执行一条命令搞定:

代码语言:javascript
复制
$ /opt/wireguard.sh -s

关于该脚本需要说明几点:

  • 支持两种安装方式:既支持从源代码编译安装,也支持从包管理器直接安装。
  • 脚本会创建默认的 wg0 设备,以及 wg0 的客户端配置,并生成客户端配置对应的二维码 png 图片。
  • 脚本会修改本机防火墙设置,如果未启用防火墙,则会出现警告提示,需要手动去设置。
  • 脚本会从 1024 到 20480 随机生成监听端口。
  • 脚本支持新增,删除,列出客户端功能。
  • 脚本支持查看已安装的 WireGuard 的版本号。
  • 脚本支持从代码编译安装的方式升级 WireGuard 到当前最新版本。

对于咱手艺人来说,肯定是不想用它自动生成的配置的,如果你想自己生成配置文件,请直接将配置文件目录清空:

代码语言:javascript
复制
$ rm -rf /etc/wireguard/*

然后手动生成秘钥和配置文件,具体的流程请参考:WireGuard 的搭建使用与配置详解[2]

如果你想通过 Web UI 来管理 WireGuard 的配置文件,可以看看这个项目:Wg Gen Web[3]

最后,公众号后台回复 wg 即可获取一键安装脚本。

参考资料

[1]

官方文档: https://www.wireguard.com/install/

[2]

WireGuard 的搭建使用与配置详解: https://fuckcloudnative.io/posts/wireguard-docs-practice/

[3]

Wg Gen Web: https://github.com/vx3r/wg-gen-web

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 升级内核
  • 2. 安装 WireGuard
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档