在 Debian Linux VPS 服务器上搭建部署 WireGuard 教程

提起 WireGuard,想必不用我过多介绍了。现在,网上的 Wire­Guard 教程有的是一键脚本、有的是老旧方法,存在“安装慢而且会带入了一堆乱七八糟的东西”的问题,而官方文档并没有详细的安装方法。对于在 VPS 上搭建部署 WireGuard 服务而言,我们必须要考虑一些实际因素,否则,随时会出现错误提示,所以灯得根据实际经验写了这篇适用于 De­bian 10+ 的 Wire­Guard 安装部署教程,此教程适合于有学习和动手能力的小伙伴。

1、什么是 WireGuard?

WireGuard 是一个易于配置、快速且安全的开源 VPN,它利用了最新的加密技术。目的是提供一种更快、更简单、更精简的通用 VPN,它可以轻松地在树莓派这类低端设备到高端服务器上部署。IPsec 和 OpenVPN 等大多数其他解决方案是几十年前开发的。安全研究人员和内核开发人员 Jason Donenfeld 意识到它们速度慢且难以正确配置和管理。这让他创建了一个新的开源 VPN 协议和解决方案,它更加快速、安全、易于部署和管理。WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android,它仍在活跃开发中。

2、为什么 WireGuard 如此受欢迎?

WireGuard 除了可以跨平台之外,还易于部署和配置。你可以依照教程,安装 WireGuard、生成公钥和私钥(像 SSH 一样),设置防火墙规则并启动服务,就像设置和使用 SSH 一样简单、易懂。

WireGuard 还有一个好处,那就是它仅有 4000 行代码,非常精简。将WireGuard 与 OpenVPN(另一个流行的开源 VPN)的 100,000 行代码相比,WireGuard 的调试显得更加简单。WireGuard 代码虽然如此精简,但它支持所有最新的加密技术,例如 Noise 协议框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF 和安全受信任结构。由于 WireGuard 运行在内核空间,因此可以高速提供安全的网络。这些是 WireGuard 越来越受欢迎的一些原因。

Linux 创造者 Linus Torvalds 非常喜欢 WireGuard,以至于将其合并到 Linux Kernel 5.6 中。他还说过,“我能否再次声明对它的爱,并希望它能很快合并?也许代码不是完美的,但我不在乎,与 OpenVPN 和 IPSec 的恐怖相比,这是一件艺术品。”

3、前期准备工作

(1)安装 sudo 和 lsb_release

apt install sudo lsb-release -y

(2)添加 back­ports 源

echo "deb http://deb.debian.org/debian $(lsb_release -sc)-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update

4、安装依赖组件

(1)安装必要的网络工具

sudo apt install iproute2 openresolv -y

(2)安装 wireguard-tools (Wire­Guard 配置工具:wg、wg-quick)

sudo apt install wireguard-tools --no-install-recommends

5、安装 WireGuard

先执行 uname -r 命令查看内核版本。如果是 5.6 及以上内核则已经集成了 Wire­Guard ,就不需要安装了。

当然看到这篇教程的小伙伴肯定大多数都不是这个情况,因为目前 De­bian 10 自带的内核版本是 4.19。所以有如下几个安装方法可供选择:

  • 安装版本高于 5.6 的内核
  • 安装 wireguard 内核模块
  • 安装 wireguard-go

理论网络性能:内核集成 ≥ 内核模块 > wireguard-go

不过并不是所有 VPS 都能随便装,最终选择还要看 VPS 所使用的虚拟化技术:

  • KVM / HyperV / XEN HVM 等完整虚拟化的 VPS 主机,以上都是可选项,根据实际情况任选其一,后面有相关说明。
  • OpenVZ / LXC 等非完整虚拟化 VPS 主机,由于是共享宿主机内核,故无法对内核进行修改,就只能安装 wireguard-go。

如果只要安装方便快捷,对网络性能没有极致追求,又或者对以上信息一脸懵逼,请直接移步到 安装 wireguard-go 章节。

(1)安装新版内核

KVM / Hy­perV / XEN HVM 等完整虚拟化的 VPS 主机,且能应对更换内核可能带来的不良后果则可以这个方式。

为了系统的稳定性推荐安装 back­ports 仓库中的内核 (截止发文版本为 5.9)。以下是一把梭命令:

sudo apt -t $(lsb_release -sc)-backports install linux-image-$(dpkg --print-architecture) linux-headers-$(dpkg --print-architecture) --install-recommends -y

安装完重启,并执行 uname -r 命令查看内核版本来确认新内核是否被启用。

(2)安装 wireguard 内核模块

这个安装方式博主个人并不是很推荐,对于 Linux 不熟悉的人很容易出错,尤其是使用过改内核的脚本一顿骚操作改了一些未知来源的 “BBR 减速内核”。

KVM / Hy­perV / XEN HVM 等完整虚拟化的 VPS 主机,内核版本 5.6 以下可以尝试执行以下命令安装 wire­guard 动态内核模块。

sudo apt install wireguard-dkms -y

安装后执行 modprobe wireguard 命令加载 Wire­Guard 内核模块。

最后执行 lsmod | grep wireguard 命令检查是否成功加载。

(3)安装 wireguard-go

OpenVZ 或 LXC 的 VPS 与不想折腾内核、追求稳定的小伙伴可以安装 wireguard-go。理论网络性能可能不及内核集成方案,不过对于正常使用而言还是绰绰有余的。

TIPS: 对于 OpenVZ 或 LXC 的 VPS 需要先执行lsmod | grep tun命令来检查 TUN/​TAP 功能是否正常启用,若没有请自行咕鸽搜索开启方法,否则安装了也是不能使用的。

自己编译或者使用博主写的一把梭脚本来安装已编译好的最新稳定版 wireguard-go 二进制文件:

curl -fsSL git.io/wireguard-go.sh | sudo bash

6、结语

安装完成你就可以开始你的 Wire­Guard 折腾之旅了。

本文由灯得于2022年10月11日更新;如果您有任何意见或建议,请在文章下面评论区留言反馈。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注