本教學將向您展示如何在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 = RaoAdsIEIwgV9DHNSubxWVG+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安全地瀏覽互聯網,保護您的隱私和資料安全。如果您有任何問題或需要進一步的協助,請隨時與我們聯繫!