如何在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主頁獲取更多信息,特別是關於其內部工作原理和其他配置選項的信息。

更新時間