网站搜索

WireGuard - 适用于 Linux 的快速、现代且安全的 VPN 隧道


WireGuard 是一种现代、安全、跨平台和通用的 VPN 实现,它使用最先进的加密技术。它的目标是比 IPsec 更快、更简单、更精简、更实用,并且比 OpenVPN 性能更高。

它专为在各种情况下使用而设计,可以部署在嵌入式接口、满载骨干路由器和超级计算机上;并在 Linux、Windows、macOS、BSD、iOS 和 Android 操作系统上运行。

推荐阅读:13 个终身订阅的最佳 VPN 服务

它提供了一个极其基本但功能强大的界面,旨在简单、像 SSH 一样易于配置和部署。其主要功能包括简单的网络接口、加密密钥路由、内置漫游和容器支持。

请注意,在撰写本文时,它正在大力开发中:它的某些部分正在努力实现稳定的 1.0 版本,而其他部分已经存在(工作正常)。

在本文中,您将了解如何在 Linux 中安装和配置 WireGuard 以在两台 Linux 主机之间创建 VPN 隧道。

测试环境

对于本指南,我们的设置(主机名和公共 IP)如下:

Node 1 : tecmint-appserver1: 		10.20.20.4
Node 2 : tecmint-dbserver1: 		10.20.20.3

如何在 Linux 发行版中安装 WireGuard

登录到您的两个节点并使用以下适合您的 Linux 发行版的命令安装 WireGuard,如下所示。

在 RHEL 8 中安装 WireGuard

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
sudo yum copr enable jdoss/wireguard
sudo yum install wireguard-dkms wireguard-tools

在 CentOS 8 中安装 WireGuard

sudo yum install epel-release
sudo yum config-manager --set-enabled PowerTools
sudo yum copr enable jdoss/wireguard
sudo yum install wireguard-dkms wireguard-tools

在 RHEL/CentOS 7 中安装 WireGuard

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
sudo yum install wireguard-dkms wireguard-tools

在 Fedora 中安装 WireGuard

sudo dnf install wireguard-tools

在 Debian 中安装 WireGuard

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard

在 Ubuntu 中安装 WireGuard

sudo add-apt-repository ppa:wireguard/wireguard
sudo apt-get update
sudo apt-get install wireguard

在 OpenSUSE 中安装 WireGuard

sudo zypper addrepo -f obs://network:vpn:wireguard wireguard
sudo zypper install wireguard-kmp-default wireguard-tools

在两台 Linux 主机之间配置 WireGuard VPN 隧道

在两个节点上完成 wireguard 安装后,您可以重新启动节点或在两个节点上使用以下命令从 Linux 内核添加wireguard 模块。

sudo modprobe wireguard
OR
modprobe wireguard

接下来,在两个节点上使用 wg 实用程序生成 Base64 编码的公钥和私钥,如图所示。

---------- On Node 1 ---------- 
umask 077
wg genkey >private_appserver1

---------- On Node 2 ----------
umask 077
wg genkey >private_dbserver1
wg pubkey < private_dbserver1

接下来,您需要为对等点上的wiregaurd 创建一个网络接口(例如wg0),如下所示。然后将 IP 地址分配给创建的新网络接口(在本指南中,我们将使用网络 192.168.10.0/24)。

---------- On Node 1 ---------- 
sudo ip link add dev wg0 type wireguard
sudo ip addr add 192.168.10.1/24 dev wg0

---------- On Node 2 ----------
sudo ip link add dev wg0 type wireguard
sudo ip addr add 192.168.10.2/24 dev wg0

要查看对等方连接的网络接口及其 IP 地址,请使用以下 IP 命令。

ip ad

接下来,将每个对等点的私钥分配给 wg0 网络接口并打开如图所示的界面。

---------- On Node 1 ---------- 
sudo wg set wg0 private-key ./private_appserver1
sudo ip link set wg0 up

---------- On Node 2 ----------
sudo wg set wg0 private-key ./private_dbserver1
sudo ip link set wg0 up

现在两个链路均已启动并具有与其关联的私钥,请运行不带任何参数的 wg 实用程序来检索对等点上 WireGuard 接口的配置。然后按如下方式创建您的wireguard VPN 隧道。

对等方(公钥)、允许的 ips(网络/子网掩码)和端点(公共 ip:端口)属于对方的对等方。

----------  On Node1 (Use the IPs and Public Key of Node 2) ---------- 
sudo wg
sudo wg set wg0 peer MDaeWgZVULXP4gvOj4UmN7bW/uniQeBionqJyzEzSC0= allowed-ips 192.168.10.0/24  endpoint  10.20.20.3:54371

----------  On Node2 (Use the IPs and Public Key of Node 1) ----------
sudo wg
sudo wg set wg0 peer 6yNLmpkbfsL2ijx7z996ZHl2bNFz9Psp9V6BhoHjvmk= allowed-ips 192.168.10.0/24 endpoint  10.20.20.4:42930

测试 Linux 系统之间的 WireGuard VPN 隧道

创建wireguard VPN 隧道后,使用wireguard 网络接口的地址对对方进行ping 操作。然后再次运行 wg 实用程序以确认对等点之间的握手,如图所示。

---------- On Node 1 ----------
ping 192.168.10.2
sudo wg

---------- On Node 2 ----------
ping 192.168.10.1
sudo wg

现在就是这样! WireGuard 是面向未来的现代、安全、简单但功能强大且易于配置的 VPN 解决方案。它正在大力发展,因此工作正在进行中。您可以从 WireGuard 主页获取更多信息,尤其是有关其内部工作原理和其他配置选项的信息。