如何在Ubuntu上設定自己的WireGuard VPN伺服器

更新時間

本教學將向您展示如何在Ubuntu上設定自己的WireGuard VPN伺服器。 WireGuard專為Linux核心而設計,能夠在Linux核心內部運行,讓您可以建立快速、現代且安全的VPN隧道。

WireGuard VPN的特點

  • 輕量與超高速:WireGuard的速度遠超OpenVPN。
  • 跨平台支援:WireGuard可以在Linux、BSD、macOS、Windows、Android、iOS和OpenWRT上運作。
  • 使用者身份驗證:透過交換公鑰進行身份驗證,類似於SSH金鑰。
  • 靜態隧道IP位址:為VPN用戶端指派靜態隧道IP位址,這在某些情況下非常有用。
  • 無縫切換:行動裝置可以在Wi-Fi和行動網路之間無縫切換,而不會中斷連線。
  • 替代方案:旨在取代大多數用例中的OpenVPN和IPSec。
  • 簡化TLS加密:WireGuard是我選擇的VPN協議,消除了為私有網路設定TLS加密的需求。

基本要求

要遵循本教學課程,您需要一個可以自由存取被封鎖網站的VPS(虛擬專用伺服器)(位於您的國家或網路過濾系統之外)。我推薦使用Kamatera VPS ,其特點包括:

  • 30天免費試用。
  • 價格從$4/月起(1GB RAM)。
  • 高性能的KVM基礎VPS。
  • 在全球擁有9個資料中心,包括美國、加拿大、英國、德國、荷蘭、香港和以色列。

請按照以下連結的教學建立您的Linux VPS伺服器:如何在Kamatera上建立Linux VPS伺服器

設定步驟

一旦您有了運行Ubuntu的VPS,請按照以下說明進行操作。本教學假設VPN伺服器和VPN用戶端都在執行Ubuntu作業系統。

步驟1:在Ubuntu伺服器和桌面上安裝WireGuard

登入您的Ubuntu伺服器,然後執行以下命令以安裝WireGuard。

Ubuntu 24.04/22.04/20.04

這些版本的Ubuntu自帶內建的WireGuard模組,只需執行以下命令:

bash sudo apt update sudo apt install wireguard wireguard-tools

Ubuntu 18.04

對於Ubuntu 18.04,您需要先安裝硬體啟用核心(HWE),這將安裝核心5.4:

bash sudo apt update sudo apt install linux-generic-hwe-18.04-edge

重新啟動您的Ubuntu 18.04伺服器並安裝WireGuard:

bash sudo shutdown -r now sudo apt install wireguard wireguard-tools wireguard-dkms

在客戶端上安裝WireGuard

在本機Ubuntu電腦(VPN用戶端)上使用相同的命令安裝WireGuard。請注意,您還需要在客戶端上安裝openresolv軟體套件以設定DNS伺服器:

bash sudo apt install openresolv

步驟2:產生公/私鑰對

伺服器

在Ubuntu伺服器上執行以下命令以建立公/私鑰對,金鑰將保存在/etc/wireguard/目錄下:

bash wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

客戶端

在本機Ubuntu電腦(VPN用戶端)上執行以下命令以建立公/私鑰對:

bash wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

第3步:建立WireGuard設定檔

伺服器

使用命令列文字編輯器(如Nano)在Ubuntu伺服器上建立WireGuard設定檔。 wg0將是網路介面名稱:

bash sudo nano /etc/wireguard/wg0.conf

將以下文字複製並貼上到設定檔中。您需要使用自己的伺服器私鑰和客戶端公鑰:

``` [Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=

[Peer] PublicKey = AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4= AllowedIPs = 10.10.10.2/32 ```

  • Address :指定VPN伺服器的私人IP位址。這裡我使用的是10.10.10.0/24網路範圍,以避免與家庭網路範圍衝突。
  • PrivateKey :VPN伺服器的私鑰,可以在/etc/wireguard/server_private.key檔案中找到。
  • ListenPort :WireGuard VPN伺服器將監聽UDP 51820端口,這是預設端口。
  • PublicKey :VPN客戶端的公鑰,可以在/etc/wireguard/client_public.key檔案中找到。
  • AllowedIPs :VPN用戶端被允許使用的IP位址。在此範例中,用戶端只能在VPN隧道內使用10.10.10.2 IP位址。

儲存並關閉檔案(在Nano文字編輯器中,按Ctrl + O ,然後按Enter確認,按Ctrl + X退出)。

更改檔案權限模式,使只有root使用者可以讀取檔案:

bash sudo chmod 600 /etc/wireguard/ -R

客戶端

在本機Ubuntu電腦上使用命令列文字編輯器(如Nano)建立WireGuard設定檔。 wg-client0將是網路介面名稱:

bash sudo nano /etc/wireguard/wg-client0.conf

將以下文字複製並貼上到設定檔中。您需要使用自己的客戶端私鑰和伺服器公鑰:

``` [Interface] Address = 10.10.10.2/24 DNS = 10.10.10.1 PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=

[Peer] PublicKey = RaoAdsIEIwg​​V9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I= AllowedIPs = 0.0.0.0/0 Endpoint = 12.34.56.78:51820 PersistentKeepalive = 25 ```

  • Address :指定VPN客戶端的私人IP位址。
  • DNS :指定10.10.10.1(VPN伺服器)為DNS伺服器。
  • PrivateKey :客戶端的私鑰,可以在/etc/wireguard/client_private.key檔案中找到。
  • PublicKey :伺服器的公鑰,可以在/etc/wireguard/server_public.key檔案中找到。
  • AllowedIPs :0.0.0.0/0代表整個互聯網,表示所有流量都應透過VPN路由。
  • Endpoint :VPN伺服器的公共IP位址和連接埠號碼。將12.34.56.78替換為您的伺服器的實際公共IP位址。
  • PersistentKeepalive :每25秒向對等體發送一個經過身份驗證的空資料包,以保持連線活躍。

儲存並關閉文件。

更改檔案模式,使只有root使用者可以讀取檔案:

bash sudo chmod 600 /etc/wireguard/ -R

步驟4:在伺服器上啟用IP轉發

為了讓VPN伺服器能夠在VPN用戶端和網際網路之間路由資料包,我們需要啟用IP轉送。編輯sysctl.conf檔:

bash sudo nano /etc/sysctl.conf

在文件末尾新增以下行:

net.ipv4.ip_forward = 1

儲存並關閉文件。然後使用以下命令套用變更。 -p選項將從/etc/sysctl.conf檔案載入sysctl設定。此命令將保留我們的變更以便在系統重新啟動後生效:

bash sudo sysctl -p

步驟5:在伺服器上設定IP偽裝

我們需要在伺服器防火牆中設定IP偽裝,以便伺服器成為VPN用戶端的虛擬路由器。我將使用UFW,這是iptables防火牆的前端。使用以下命令在Ubuntu上安裝UFW:

bash sudo apt install ufw

首先,您需要允許SSH流量:

bash sudo ufw allow 22/tcp

接下來,找出您伺服器的主要網路介面名稱:

bash ip -ca

在我的Ubuntu伺服器上,它的名稱是enp3s0

編輯UFW的規則檔:

bash sudo nano /etc/ufw/before.rules

預設情況下,過濾器表中有一些規則。在該文件末尾添加以下行。將enp3s0替換為您自己的網路介面名稱:

```

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o enp3s0 -j MASQUERADE

COMMIT ```

在Nano文字編輯器中,您可以按Ctrl + W ,然後按Ctrl + V跳到檔案末端。

上述行將在nat表的POSTROUTING鏈的末端附加(-A)一條規則。它將把您的虛擬路由器連接到互聯網。

總結

透過以上步驟,您已經成功在Ubuntu上設定了WireGuard VPN伺服器。現在您可以透過VPN安全地瀏覽互聯網,保護您的隱私和資料安全。如果您有任何問題或需要進一步的協助,請隨時與我們聯繫!

更新時間