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
Generate Keys on Both Nodes

接下来,您需要为wireguard的对等方创建一个网络接口(例如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
View Network Interfaces with IP Addresses

接下来,如下所示,为每个对等方的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隧道。

对等方(公钥)、允许的IP(网络/子网掩码)和端点(公共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
Create Wireguard VPN Tunnel Between Linux Machines

在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
Test Wireguard VPN Tunnel Between Linux Machines

目前就是这样了!WireGuard是一种现代、安全、简单而强大、易于配置的未来VPN解决方案。它正在进行大量的开发,因此仍在不断改进中。您可以从WireGuard主页获取更多信息,特别是关于其内部工作原理和其他配置选项。

Source:
https://www.tecmint.com/wireguard-secure-vpn-tunnel-for-linux/