如何在Linux上安装和配置WireGuard VPN

更新时间

WireGuard是一种现代、安全、跨平台和通用的VPN实现,采用了先进的加密技术。与IPsec相比,它旨在更快、更简单、更精简和更实用,并且希望在性能上超越OpenVPN。WireGuard可在多种环境中使用,并可部署在嵌入式接口、完全负载的骨干路由器和超级计算机上,支持Linux、Windows、macOS、BSD、iOS和Android等操作系统。

WireGuard的特点

WireGuard提供了一个极其简单但功能强大的界面,旨在像SSH一样易于配置和部署。其主要特点包括:

  • 简单的网络接口
  • 加密密钥路由
  • 内置漫游和容器支持

需要注意的是,在撰写本文时,WireGuard仍在积极开发中:其某些部分正朝着稳定的1.0版本努力,而其他部分已经稳定运行。

测试环境

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

  • 节点1:tecmint-appserver1: 10.20.20.4
  • 节点2:tecmint-dbserver1: 10.20.20.3

如何在Linux发行版中安装WireGuard

登录到两个节点并使用适当的命令安装WireGuard,具体如下:

在RHEL 8中安装WireGuard

bash $ 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

bash $ 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

bash $ 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

bash $ sudo dnf install wireguard-tools

在Debian中安装WireGuard

```bash

```

在Ubuntu中安装WireGuard

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

在OpenSUSE中安装WireGuard

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

配置WireGuard VPN隧道

在两个节点上完成WireGuard的安装后,您可以重启节点或使用以下命令从Linux内核中添加WireGuard模块:

bash $ sudo modprobe wireguard

接下来,使用wg工具在两个节点上生成base64编码的公钥和私钥,如下所示。

在节点1上

bash $ umask 077 $ wg genkey > private_appserver1

在节点2上

bash $ umask 077 $ wg genkey > private_dbserver1 $ wg pubkey < private_dbserver1

接下来,需要为WireGuard创建一个网络接口(例如wg0),并为新创建的网络接口分配IP地址(在本指南中,我们将使用网络192.168.10.0/24)。

在节点1上

bash $ sudo ip link add dev wg0 type wireguard $ sudo ip addr add 192.168.10.1/24 dev wg0

在节点2上

bash $ sudo ip link add dev wg0 type wireguard $ sudo ip addr add 192.168.10.2/24 dev wg0

要查看附加的网络接口及其IP地址,请使用以下IP命令:

bash $ ip ad

接下来,将每个对等体的私钥分配给wg0网络接口,并启用该接口,如下所示。

在节点1上

bash $ sudo wg set wg0 private-key ./private_appserver1 $ sudo ip link set wg0 up

在节点2上

bash $ sudo wg set wg0 private-key ./private_dbserver1 $ sudo ip link set wg0 up

现在,两个链接都已启用,各自与其私钥相关联,运行wg实用程序以检索对等体上的WireGuard接口配置。然后按照以下步骤创建WireGuard VPN隧道。

对等体(公钥)、允许的IP(网络/子网掩码)和端点(公共IP:端口)来自对方对等体。

在节点1上(使用节点2的IP和公钥)

bash $ sudo wg $ sudo wg set wg0 peer MDaeWgZVULXP4gvOj4UmN7bW/uniQeBionqJyzEzSC0= allowed-ips 192.168.10.0/24 endpoint 10.20.20.3:54371

在节点2上(使用节点1的IP和公钥)

bash $ sudo wg $ sudo wg set wg0 peer 6yNLmpkbfsL2ijx7z996ZHl2bNFz9Psp9V6BhoHjvmk= allowed-ips 192.168.10.0/24 endpoint 10.20.20.4:42930

测试WireGuard VPN隧道

一旦创建了WireGuard VPN隧道,使用WireGuard网络接口的地址ping对方对等体。然后再次运行wg工具以确认对等体之间的握手,如下所示。

在节点1上

bash $ ping 192.168.10.2 $ sudo wg

在节点2上

bash $ ping 192.168.10.1 $ sudo wg

总结

到此为止!WireGuard是一个现代、安全、简单但功能强大且易于配置的VPN解决方案,展望未来。它仍在积极开发中,因此仍在进行中。您可以从WireGuard主页获取更多信息,特别是关于其内部工作原理和其他配置选项的信息。

更新时间