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 連接