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

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