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

接下来,您需要为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

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

在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主页获取更多信息,特别是关于其内部工作原理和其他配置选项。
Source:
https://www.tecmint.com/wireguard-secure-vpn-tunnel-for-linux/