如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

使用 Wireguard 設置自託管 VPN

VPN(虛擬專用網)允許用戶遠程地連接到專用網絡,如果用戶的計算機直接連接到專用網絡。該技術最初的開發目的是允許遠程訪問公司的內部專用網絡,供實際不在內部網絡位置的員工使用。

VPN Server 部署在內部網絡的位置。該服務器位於公共網絡上,員工可以使用 VPN 客戶端進行訪問。連接到 VPN Server 需要身份驗證。VPN Server 和 VPN Client 之間的通信使用隧道協議進行保護。請注意,此通信可能會或可能不會加密,但通常在大多數 VPN 協議中它是加密的。

VPN 的另一個用途是在訪問 Internet 時獲得匿名或規避訪問某些網站時施加的地理限制。在這種情況下,用戶想要連接的網絡不是專用網絡,而是 Internet。

多年來已經開發了許多 VPN 協議。這些協議利用不同的隧道協議和加密算法在服務器和客戶端之間進行通信。

最近得到廣泛使用的一種這樣的協議是Wireguard。與眾所周知的傳統 VPN 協議(例如 OpenVPN、IPSec)相比,Wireguard 更輕、更簡單且性能更高。它已經在 Windows、Mac OS 和大量 Linux 發行版中實現。在 Linux 中,它是作為內核模塊實現的。它在 Ubuntu 20.04 的官方存儲庫中可用。

在本文中,我們將看到如何在 Ubuntu 20.04 中設置 Wireguard VPN 服務器和客戶端。

安裝

對於本文,我將在 Ubuntu 20.04 Linode 上設置 Wireguard 服務器,並在我的本地機器上使用 Ubuntu 20.04 設置 Wireguard 客戶端。

該軟件包wireguard安裝了 Wireguard 服務器和客戶端。在服務器機器和客戶端機器上運行以下命令

sudo apt install wireguard

服務器配置

安全密鑰

我們需要生成一組公鑰/私鑰對,以驗證和保護 Wireguard 連接。這可以使用以下命令完成:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key

請注意,我們以超級用戶身份執行所有配置任務。原因是/etc/wireguard普通用戶無法訪問目錄,普通用戶僅憑sudo權限無法訪問目錄。

接下來,我們將文件創建掩碼設置為077. 這意味著每當任何進程在此文件夾中創建新文件時,其權限將自動用 077 屏蔽。例如。如果在這個文件夾中創建了一個具有 777 權限的文件,它會被自動屏蔽,並且權限實際上變為 700。這樣做是為了只有文件的所有者擁有該文件的所有權限,而其他所有人都沒有權限。

在下一行,我們為服務器生成公鑰/私鑰對。它們保存在文件private_keypublic_key. 要查看密鑰,請運行:

cat private_key
cat public_key

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

複製私鑰,我們在下一步需要它。

注意:切勿公開分享您的私鑰!

配置文件

讓我們為 Wireguard Server 創建一個配置文件。您可以為文件選擇任何名稱。我們將wg0.conf在本例中創建一個文件。

vim wg0.conf

將以下內容添加到文件中。

[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey = 

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o  -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o  -j MASQUERADE

將我們之前複製的私鑰粘貼到上面代碼的第 5 行。

我們必須在與服務器 IP 地址不同的(虛擬)子網上配置 Wireguard。在這裡,我使用 10.20.43.1 作為服務器,將使用 10.20.43.2 作為客戶端。這裡可以使用任何子網。要獲取服務器和接口的 IP 地址,請運行:

ifconfig

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

突出顯示的部分是 IP 地址

記下服務器的 IP 地址。這在客戶端配置期間是必需的。

如上圖所示,服務器使用的接口是eth0. 接口名稱可以基於有所不同用戶的網絡上,也可以是wlan0wlp2s0在情況下,用戶用無線卡連接到WiFi網絡。

用你的界面替換 inPostUpPostDown; 在這個例子中,它是eth0. PostUpPostDown指令用於指定分別在服務器啟動和停止時應運行哪些命令。在我們的示例中,我們使用iptables命令來設置 IP 規則,以便客戶端共享服務器的 IP 地址。一旦服務器停止,規則將下降。

保存並退出文件。使用 vim 時,按Esc,然後鍵入:wq並按Enter保存並退出。

如果您ufw在服務器上使用防火牆,我們需要允許 UDP 連接到 VPN 服務器的端口 51190。

ufw allow 51190/udp

啟動服務

現在配置完成後,我們可以啟動 Wireguard VPN 服務。

要使服務在引導時啟動,請運行:

systemctl enable [email protected]

注意這裡wg0是配置文件的名字。

要啟動服務,請運行:

service [email protected] start

驗證服務是否已成功啟動:

service [email protected] status

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

使用 IP 命令驗證我們在配置文件中創建的接口是否已啟動。

ip a show wg0

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

Wireguard VPN 服務器現已設置並運行。現在讓我們配置客戶端。

客戶端配置

Wireguard 的客戶端配置或多或少與服務器配置相同。我們為客戶端生成密鑰,然後創建一個配置文件。

安全密鑰

為客戶端生成公鑰/私鑰對,請運行:

sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key

客戶端的公鑰和私鑰現在分別在文件client_private_keyclient_public_key.

使用cat命令檢查它們是否已創建。

cat client_private_key
cat client_public_key

複製顯示的私鑰,因為我們需要將其添加到客戶端的配置文件中。

配置文件

使用您希望的任何名稱創建配置文件。我們將使用wg0-client此示例的名稱創建它。

vim wg0-client.conf

添加以下配置。

[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey = 

[Peer]
# Public key, IP Address and Port of the Server
PublicKey = 
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0

輸入客戶端的子網地址。如前所述,我們10.20.43.2 在此示例中用於客戶端。

上一步生成的客戶端私鑰添加到上面配置代碼的第4行。

在“Peer”下,我們添加有關要連接的 Wireguard VPN 服務器的信息

輸入服務器的公鑰。輸入我們之前記下的服務器的 IP 地址,以及針對Endpoint的給定格式的端口。這是我們在服務器配置文件中指定的端口,也是服務器上啟動 VPN 服務的端口。

應按給定 (0.0.0.0/0) 輸入允許的 IP,以便客戶端使用的動態公共 IP 上的任何請求將始終轉發到 VPN 服務器。

保存並退出文件。使用 vim 時,按Esc,然後鍵入:wq並按Enter保存並退出。

啟用客戶端服務以在每次引導時運行,並啟動它。

systemctl enable [email protected]
service [email protected] start

驗證服務是否已啟動。

service [email protected] status

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

向服務器添加對等點

現在我們已經啟動並運行了 VPN 服務器和客戶端。但是,除非我們在服務器和客戶端之間建立對等連接,否則不會在兩者之間建立安全隧道。

回到服務器。首先,停止 VPN 服務

service [email protected] stop

接下來,打開配置文件,為peer(客戶端)添加配置

vim /etc/wireguard/wg0.conf

將以下行追加到文件中。

[Peer]
PublicKey = 
AllowedIPs = 10.20.43.2/32

現在,再次啟動 VPN 服務

service [email protected] start

就是這樣!這是 Wireguard VPN 客戶端和服務器設置所需的所有配置。現在讓我們測試我們的 VPN。

測試 VPN

首先,讓我們從客戶端到服務器做一個簡單的 ping,以確保 VPN 隧道通信正常工作。在客戶端運行以下命令

ping 10.20.43.1

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

接下來,打開 Web 瀏覽器並打開任何網站以檢查您是否能夠從客戶端計算機連接到 Internet。您還可以使用wget.

wget 

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

現在,我們已經檢查了隧道連接和 Internet 連接。如果兩者都正常工作,我們現在需要確保所有到達客戶端的互聯網流量都通過服務器。

為此,我們只需要檢查 Internet 上看到的客戶端的 IP 地址。一種方法是訪問whatsmyip.org。或者從命令行,我們可以使用 Curl 查詢另一個名為 IP 信息的類似服務。

在客戶端機器上運行以下命令

curl https://ipinfo.io/ip

如何在 Ubuntu 20.04 上設置 WireGuard VPN 服務器和客戶端

是的。它是託管 VPN 服務器的 Linode 的公共 IP 地址。這就是使用 VPN 實現匿名的方式,因為現在在整個 Internet 上都可以看到 VPN 服務器的 IP,而不是您計算機的 IP。

結論

易於設置是 Wireguard 相對於 OpenVPN 等傳統 VPN 軟件最重要的優勢之一,OpenVPN 需要更高級別的網絡和路由知識才能設置。但是,缺乏詳細的 Wireguard 官方文檔,如果您的 Wireguard 設置拋出錯誤或未按預期工作,則可能會導致問題。

儘管如此,如果您想要一個自託管的 VPN 來通過 Internet 進行安全通信,Wireguard 是一個很好的選擇。要了解有關 Wireguard 及其使用的協議和技術的更多信息,您可以查看官方網站


Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Ubuntu 因其健壯性和相對較少的錯誤而廣受歡迎。但它肯定不是沒有問題。其中一個問題是其 Wi-Fi 驅動程序。您可能會打開系統電源,卻發現您的 Wi-Fi 無法正常工作。

如何使用 Mv 命令移動 Linux 文件

如何使用 Mv 命令移動 Linux 文件

雖然您可能已經知道如何使用 GUI 文件瀏覽器在 Linux 中移動文件,但您可能想知道終端中是否有移動命令可以讓您快速將文件移動到不同的目錄。mv 命令就是您想要的,它的簡單語法和一些可選的安全標誌易於使用。

10 個基於 Debian 的最佳 Linux 發行版

10 個基於 Debian 的最佳 Linux 發行版

標準 Debian 及其流行的分支 Ubuntu 是 Linux 系統的絕佳選擇,但如果您有更專業的需求,您可能需要 Debian 替代品。

面向開發人員的 10 個最佳 Linux 發行版

面向開發人員的 10 個最佳 Linux 發行版

雖然 Linux 可能不是普通用戶最喜歡的操作系統,但它是大多數開發人員和程序員的首選。Linux 是一種更實用的操作系統,它的設計明確考慮了編程和開發人員的需求。

學習如何在 Ubuntu 上安裝 Npm 和 Node.js

學習如何在 Ubuntu 上安裝 Npm 和 Node.js

Node.js 實際上是一個開源的跨平台 JavaScript 運行時環境。啟用 Node.js 後,您可以在 Ubuntu 機器上運行 JavaScript,而無需擔心打開任何瀏覽器。它建立在 Chrome 的 V8 JavaScript 引擎之上,可以通過多種方式安裝在 Linux 上。

如何在 Ubuntu 20.04 上安裝 Google Chrome

如何在 Ubuntu 20.04 上安裝 Google Chrome

在 Ubuntu 20.04 上從命令行安裝 Google Chrome 的快速指南

如何在 Ubuntu 20.04 上安裝 Notepadqq,一個值得的 Notepad++ 替代品

如何在 Ubuntu 20.04 上安裝 Notepadqq,一個值得的 Notepad++ 替代品

在 Ubuntu 上尋找 Notepad++ 的有價值的替代品?免費的 Notepadqq 應用程序就是您的不二之選

如何在 Ubuntu 20.04 LTS 上安裝 Git

如何在 Ubuntu 20.04 LTS 上安裝 Git

您應該在 Linux 機器上安裝的第一件事

如何通過 5 步在 Ubuntu 上安裝 FTP 服務器

如何通過 5 步在 Ubuntu 上安裝 FTP 服務器

如果您要設置 Linux 服務器,則需要 FTP 訪問。這意味著首先在 Linux 上安裝 FTP 服務器。這應該是您安裝服務器操作系統後要做的第一件事。

如何在 Ubuntu Linux PC 上從終端更新 Firefox

如何在 Ubuntu Linux PC 上從終端更新 Firefox

了解如何在 Ubuntu Linux PC 上從終端更新 Firefox

如何在 Ubuntu 20.04 上啟用 SSH

如何在 Ubuntu 20.04 上啟用 SSH

從任何地方安全地訪問您的 Ubuntu 機器

如何修復 Ubuntu 中的 make: command not found 錯誤

如何修復 Ubuntu 中的 make: command not found 錯誤

make 命令可能是 Linux 生態系統中使用最廣泛的命令之一。該命令用於直接從源代碼構建和編譯程序。

如何在 Chromebook 上複製和粘貼

如何在 Chromebook 上複製和粘貼

在切換到 Chromebook 時,您可能想知道的第一件事是如何做基本的事情——你在以前的操作系統中掌握的那種東西。複製和粘貼是您必須在某一時刻使用的一項基本功能。

如何使用 tt 在 Linux 上進行打字測試

如何使用 tt 在 Linux 上進行打字測試

在現代科技時代,打字已成為許多職業最常見的活動之一。學會更快更準確地打字可以幫助您在相同的時間內完成更多的工作。

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Wi-Fi 在 Ubuntu 上不工作?這是修復方法

Ubuntu 因其健壯性和相對較少的錯誤而廣受歡迎。但它肯定不是沒有問題。其中一個問題是其 Wi-Fi 驅動程序。您可能會打開系統電源,卻發現您的 Wi-Fi 無法正常工作。

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

2020 年適用於 Ubuntu 的最佳免費視頻編輯器

除了所有的絨毛,這裡列出了適用於 Ubuntu 的最佳免費視頻編輯器,您可以使用它們來創建令人驚嘆的視頻。

如何在 Chromebook 上創建和掃描二維碼

如何在 Chromebook 上創建和掃描二維碼

快速響應碼,簡稱 QR 碼,是一種高級條碼,包含比傳統條碼更多的信息。這些代碼是二維的,允許您垂直或水平掃描它們。

如何在 Arch Linux 中安裝和刪除軟件包

如何在 Arch Linux 中安裝和刪除軟件包

想在 Arch Linux 上安裝軟件包但不知道如何安裝?很多人第一次從基於 Debian 的發行版遷移到 Arch 時都會遇到這個問題。但是,您可以使用包管理器輕鬆管理基於 Arch 的系統上的包。

如何在 Linux 上安裝 Spotify

如何在 Linux 上安裝 Spotify

Spotify 是最大的音樂流媒體服務之一。它具有適用於移動(Android 和 iOS)和桌面(Mac 和 Windows)設備的本機客戶端。

9 個讓你開始使用 Linux 的基本命令

9 個讓你開始使用 Linux 的基本命令

Linux 操作指南通常希望您在終端中執行某些操作,這乍一看似乎令人生畏。但不要擔心;這個 Linux 命令備忘單將涵蓋打開終端和發出一些有用命令的過程。

如何使用 Mv 命令移動 Linux 文件

如何使用 Mv 命令移動 Linux 文件

雖然您可能已經知道如何使用 GUI 文件瀏覽器在 Linux 中移動文件,但您可能想知道終端中是否有移動命令可以讓您快速將文件移動到不同的目錄。mv 命令就是您想要的,它的簡單語法和一些可選的安全標誌易於使用。

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

如何在 Ubuntu 的“Alt-Tab”中取消組合 Windows

默認情況下,Ubuntu 允許您切換應用程序而不是窗口。以下是如何在 Ubuntu 上的 Alt-Tab 中反轉它並取消組合選項卡。