在 Rocky Linux 上安裝 WireGuard VPN 服務器


FacebookTwitterPinterestWhatsApp

按照本教程了解如何在 Rocky Linux 上安裝 WireGuard VPN 服務器。 根據 wireguard.com 的說法,WireGuard® 是一種非常簡單但快速且現代的 VPN,具有最先進的加密技術。它被設計為比 IPsec 更快、更簡單、更纖薄、更方便,同時避免了許多令人頭疼的問題。 它旨在具有比 OpenVPN 更高的性能。目前正在開發中,它可能被認為是業界最安全、最容易使用和最簡單的 VPN 解決方案。

在 Rocky Linux 上安裝 WireGuard VPN 服務器

安裝 EPEL 存儲庫

WireGuard 軟件包在默認的 Rocky Linux 存儲庫中不可用。您需要一個 EPEL 存儲庫來安裝它們。

dnf install epel-release -y

安裝 ELRepo RPM 存儲庫

ELRepo RPM 存儲庫提供了一些必需的 WireGuard 模塊。您可以通過運行以下命令來安裝 ELReporpm 存儲庫:

dnf install elrepo-release -y

在 Rocky Linux 上安裝 WireGuard VPN 服務器

要安裝 WireGuard 和所需的模塊,請運行以下命令:

yum install kmod-wireguard wireguard-tools

樣本輸出;

Dependencies resolved.
============================================================================================================================================================================
 Package                                   Architecture                     Version                                                  Repository                        Size
============================================================================================================================================================================
Installing:
 kmod-wireguard                            x86_64                           4:1.0.20210606-1.el8_4.elrepo                            elrepo                           110 k
 wireguard-tools                           x86_64                           1.0.20210424-1.el8                                       epel                             125 k

Transaction Summary
============================================================================================================================================================================
Install  2 Packages

Total download size: 235 k
Installed size: 641 k
Is this ok [y/N]: y

此命令安裝兩個 WireGuard VPN 實用程序。

  • 經過:是用於獲取和配置 WireGuard 隧道接口配置的配置實用程序。
  • wg-quick:用於配置WireGuard接口。參考 man wg-quick..

在 Rocky Linux 8 上配置 WireGuard VPN 服務器

安裝後,您可以繼續在 Rocky Linux 8 上配置 WireGuard VPN 服務器。

創建 WireGuard 配置目錄

WireGuard 默認不創建配置文件。所以首先,創建一個 WireGuard 配置目錄。

mkdir /etc/wireguard

生成 WireGuard 私鑰/公鑰

接下來,您需要生成一個基於 WireGuard 的 64 位編碼的私鑰和公鑰。

生成 WireGuard 私鑰

私鑰是 wg genkey 命令是:

umask 077
wg genkey

此命令將私鑰打印到標準輸出。要寫入文件,只需運行它。

wg genkey > /etc/wireguard/wireguard.key

生成 WireGuard 公鑰

可以使用私鑰從私鑰生成公鑰 wg pubkey 命令。此命令還將密鑰輸出到標準輸出。

wg pubkey < /etc/wireguard/wireguard.key

寫入文件;

wg pubkey < /etc/wireguard/wireguard.key > /etc/wireguard/wireguard.pub.key

同時生成私鑰和公鑰

您可以通過運行以下命令生成 WireGuard 私鑰和公鑰:

wg genkey | tee /etc/wireguard/wireguard.key | wg pubkey > /etc/wireguard/wireguard.pub.key

以下是我的私鑰和公鑰的內容。

cat /etc/wireguard/wireguard.key
cPjxCJPn6YRZQh4wn4jN2LAPlYOjT2b4v0N+qsu5+1U=
cat /etc/wireguard/wireguard.pub.key
60UScq0EQ7ZHXIdHcOnjFYK6N/TLtmtPGTBqLwLd0WY=

生成 WireGuard 服務器配置文件

完成後,您可以生成一個 WireGuard 配置文件。 /etc/wireguard/INTERFACE.conf..

稱讚 界面 該名稱包括“wg0”或“wgvpn0”甚至“wgmgmtlan0”。但是,最後一位數字實際上是一個選項,實際上是任何自由格式的字符串。 [a-zA-Z0-9_=+.-]{1,15} 有效。因此,即使是與地理位置相對應的接口名稱,“cincinnati”、“nyc”、“paris”等,如果以某種方式需要,也足夠了。

您只需運行以下命令即可創建具有以下名稱的配置文件: /etc/wireguard/wg0.conf..

一定要交換私鑰 所以。

cat > /etc/wireguard/wg0.conf << 'EOL'
[Interface]
Address = 10.8.0.1/24
SaveConfig = true
ListenPort = 51820
DNS	   = 8.8.8.8,10.8.0.1
PrivateKey = cPjxCJPn6YRZQh4wn4jN2LAPlYOjT2b4v0N+qsu5+1U=
PostUp = firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
PostDown = firewall-cmd --remove-port=51820/udp; firewall-cmd --zone=public --remove-masquerade; firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
EOL

你可以開始 man wg-quick..

  • 地址:分配給接口的 IP(v4 或 v6)地址的逗號分隔列表(可選地帶有 CIDR 掩碼)。可以指定多個
    二等。
  • 監聽端口: 線衛 51820 / UDP 默認。但是,您可以選擇任何更高範圍的端口。
  • 域名系統 :要配置為接口的 DNS 服務器的 IP(v4 或 v6)地址的逗號分隔列表,或配置為接口的 DNS 搜索域的非 IP 主機名。您可以多次指定它。
  • 私鑰: 從上面創建的私鑰文件 /etc/wireguard/wireguard.key 中提取的密鑰
  • PostUp, PostDown:在設置/拆卸界面之前和之後運行的腳本片段。最常用於配置自定義 DNS 選項或防火牆規則。
  • 保存配置:如果設置為“true”,則配置將在關閉時從接口的當前狀態保存。因此,在刪除接口之前對配置文件所做的任何更改都將被覆蓋。

在 WireGuard VPN 服務器上啟用 IP 轉發

要在 VPN 客戶端之間路由數據包,只需運行以下命令以啟用內核 IP 轉發。

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

重新加載 sysctl 設置

sysctl -p

運行 WireGuard VPN 服務器

您可以使用 WireGuard VPN 服務器界面運行 WireGuard wg-quick 命令或使用 systemd 服務。

利用 wg-quick 調出界面的命令。

wg-quick up wg0

命令輸出示例;

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
success
success
success
success

查看 wg0 接口的詳細信息。

ip add show wg0
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

列出活動接口的防火牆規則。

firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 51820/udp
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

要使用 systemd 服務管理 WireGuard,首先運行以下命令:

systemctl start [email protected]

檢查狀態。

systemctl status [email protected]
● [email protected] - WireGuard via wg-quick(8) for wg0
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)
   Active: active (exited) since Sat 2021-07-03 21:24:49 EAT; 1h 5min ago
     Docs: man:wg-quick(8)
           man:wg(8)
           https://www.wireguard.com/
           https://www.wireguard.com/quickstart/
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
  Process: 5304 ExecStop=/usr/bin/wg-quick down wg0 (code=exited, status=0/SUCCESS)
  Process: 5337 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
 Main PID: 5337 (code=exited, status=0/SUCCESS)

Jul 03 21:24:47 elk.kifarunix-demo.com systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] ip link add wg0 type wireguard
Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] wg setconf wg0 /dev/fd/63
Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] ip link set mtu 1420 up dev wg0
Jul 03 21:24:47 elk.kifarunix-demo.com wg-quick[5337]: [#] firewall-cmd --zone=public --add-port 51820/udp --permanent;firewall-cmd --zone=public --add-masquerade --perman>
Jul 03 21:24:48 elk.kifarunix-demo.com wg-quick[5337]: success
Jul 03 21:24:48 elk.kifarunix-demo.com wg-quick[5337]: success
Jul 03 21:24:49 elk.kifarunix-demo.com wg-quick[5337]: success
Jul 03 21:24:49 elk.kifarunix-demo.com systemd[1]: Started WireGuard via wg-quick(8) for wg0.

允許它在啟動時運行。

systemctl enable [email protected]

要停止 WireGuard VPN,請執行 ;。

wg-quick down wg0

systemctl stop [email protected]

WireGuard VPN 客戶端配置

設置服務器後,您可以繼續配置 WireGuard VPN 客戶端。

為 WireGuard VPN 客戶端生成私鑰/公鑰

首先,您需要生成一個客戶端密碼。生成服務器密鑰時,您可以使用與上述相同的命令。

以下命令將為三個測試服務器生成密鑰。

for i in ubuntu debian rocky8; do wg genkey | tee /etc/wireguard/$i.key | wg pubkey > /etc/wireguard/$i.pub.key
ls -1 /etc/wireguard
debian.key
debian.pub.key
rocky8.key
rocky8.pub.key
ubuntu.key
ubuntu.pub.key
wg0.conf
wireguard.key
wireguard.pub.key

檢查每個鍵的內容。

cat /etc/wireguard/debian.key /etc/wireguard/debian.pub.key
UMXEH1lTn7OF+fgBswsdDJU6NAu7N5or43FPWP1EyWY=
YitAHwAT+8Z6JR8iWBRzCdD3uXEujkT8uftOMWnBqjw=
cat /etc/wireguard/ubuntu.key /etc/wireguard/ubuntu.pub.key
qJ2Sczxh8QWO5ZHlN+zZ4IaaMzmnMtgITLfQ0cam82M=
CcBg7ik7RnXkNSabIY8fjeZqoNOWUu6PfMwH6MmLGl4=
cat /etc/wireguard/rocky8.key /etc/wireguard/rocky8.pub.key
kIn6rA7W9MbGdZxRtziFN1DCJsqCi/hAdwhyH76cyU4=
0yjtKHIH2SCZwuA6j0EboagraEdWHWZH++QxM4hWAgs=

接下來,您需要將客戶端對等設置添加到 WireGuard VPN Server 配置文件中,如下所示。請務必相應地替換相應客戶端的公鑰。

cat >> /etc/wireguard/wg0.conf << 'EOL'

[Peer]
PublicKey = CcBg7ik7RnXkNSabIY8fjeZqoNOWUu6PfMwH6MmLGl4=
AllowedIPs = 10.8.0.10

[Peer]
PublicKey = YitAHwAT+8Z6JR8iWBRzCdD3uXEujkT8uftOMWnBqjw=
AllowedIPs = 10.8.0.20

[Peer]
PublicKey = 0yjtKHIH2SCZwuA6j0EboagraEdWHWZH++QxM4hWAgs=
AllowedIPs = 10.8.0.30
EOL

WireGuard VPN 服務器配置文件如下所示:

cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
SaveConfig = true
PostUp = firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
PostDown = firewall-cmd --remove-port=51820/udp; firewall-cmd --zone=public --remove-masquerade; firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = cPjxCJPn6YRZQh4wn4jN2LAPlYOjT2b4v0N+qsu5+1U=

[Peer]
PublicKey = CcBg7ik7RnXkNSabIY8fjeZqoNOWUu6PfMwH6MmLGl4=
AllowedIPs = 10.8.0.10

[Peer]
PublicKey = YitAHwAT+8Z6JR8iWBRzCdD3uXEujkT8uftOMWnBqjw=
AllowedIPs = 10.8.0.20

[Peer]
PublicKey = 0yjtKHIH2SCZwuA6j0EboagraEdWHWZH++QxM4hWAgs=
AllowedIPs = 10.8.0.30

重新加載 WireGuard。

wg syncconf wg0 <(wg-quick strip wg0)

在 Rocky Linux 8 / Ubuntu / Debian 上安裝和設置 WireGuard VPN 客戶端

按照以下鏈接了解如何安裝和設置 WireGuard VPN 客戶端。

在 Rocky Linux / Ubuntu / Debian 上安裝 WireGuard VPN 客戶端

我們關於如何在 Rocky Linux 上安裝 WireGuard VPN 服務器的指南到此結束。

有關更多信息,請參閱 WireGuard 頁面。

在 Rocky Linux 8 上設置 OpenVPN 服務器

在 RockyLinux8 上安裝和配置 OpenVPN 客戶端

使用 Prometheus 和 Grafana 監控 OpenVPN 連接