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

接下來,您需要為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
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隧道。

對等點(公鑰)、允許的IPs(網絡/子網掩碼)和端點(公共ip:port)是相反對等點的。

----------  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/