越來越多的人選擇自行運行 VPN 服務,而不是依賴付費的現成服務:這樣更便宜、更能保護隱私,而且還能完全控制伺服器。對於網路封鎖嚴格的地區來說,AmneziaWG 是最有效的選擇之一。 AmneziaWG 是由 Amnezia 專案基於 WireGuard 開發的協議。
傳統的 WireGuard 協定速度快、可靠性高,但其資料包結構固定,握手過程可預測,因此深度包檢測 (DPI) 系統可以可靠地識別並攔截這些資料包。 AmneziaWG 解決了這個問題:它在普通的 WireGuard 連接中添加垃圾資料包,隨機化資料包頭部,並改變握手字段的大小——這樣一來,WireGuard 的特徵簽名就消失了,流量不再與普通的 UDP 流量區分開來。
已經在運行經典隧道,想知道是否值得切換?不妨將其與Linux 上的 VPN 伺服器設定中的純 OpenVPN/PPTP 設定進行比較:PPTP 還是 OpenVPN? ,或與如何在伺服器上設定 WireGuard VPN 的原始 WireGuard(無混淆)進行比較:如何設定 WireGuard VPN。
本指南將手動建立一個 AmneziaWG 伺服器,無需 Docker 或 Web 控制面板——盡可能減少 VPS 本身的資源佔用,所有設定均透過命令列完成。它是最輕量級的方案,非常適合預算有限的 VPS,因為它不需要圖形使用者介面、資料庫和反向代理。下面的範例伺服器使用佔位符 IP 位址—請將其替換為您自己的 VPS 位址。
你需要準備:一台運行 Ubuntu 22.04/24.04 或 Debian 11/12 的 VPS、root 權限以及 VPS 的 IP 位址。不需要網域名稱-AmneziaWG 不使用證書,因此無需續約證書,DPI 也不會將其標記為 TLS 握手。
還沒有伺服器?請參閱“如何訂購服務器”。
正在連接伺服器
Windows(PuTTY)
開啟 PuTTY,在主機名字段中輸入您的 VPS IP 位址,將連接埠設定為 22,然後使用您的 VPS 提供者透過電子郵件傳送給您的密碼以 root 使用者身分登入。
伺服器 IP 位址:您的 IP 位址
以 root 使用者登入
密碼:您的密碼
1. 開啟 PuTTY,在主機名字段中輸入您的 VPS IP 位址。
2. 將連接埠設定為 22。
3. 輸入以 root 使用者身分登入。
4. 使用您的 VPS 提供者透過電子郵件傳送給您的密碼。
結果應如下:
有關透過 PuTTY/SSH 連線的詳細步驟,請參閱「如何透過 SSH 連接到 Linux 伺服器」。
Linux / macOS(終端機)
ssh root@YOUR_SERVER_IP
以下所有命令均在伺服器上的相同 SSH 會話中執行—這涵蓋了第 2 至 5 節,以及第 9 節中的伺服器端檢查。第 6 至 8 節(安裝和設定 VPN 用戶端)則在您自己的 Windows/macOS/Linux 裝置上執行,因為 VPN 需要在該裝置上執行;這些章節中明確說明了哪些行(如果有)仍需要與伺服器互動。
準備伺服器
更新系統
在安裝任何軟體之前,請先刷新軟體包清單並升級已安裝的軟體包:
apt update -y && apt upgrade -y
如果此操作升級了內核,請在構建第 3 節中的 AmneziaWG 內核模組之前重啟系統,否則 DKMS 可能會使用錯誤的內核頭檔進行構建,導致模組加載失敗。 (有關 apt 和 Linux 軟體套件管理器的工作原理,請參閱Linux 軟體套件管理器。)檢查:
cat /var/run/reboot-required
啟用IP轉送
此設置允許伺服器將客戶端的封包轉發到互聯網——如果沒有此設置,隧道將建立,但不會有任何流量通過它。
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
第一條命令建立一個專用設定檔;第二個命令應用該文件,而無需重新啟動伺服器。
配置防火牆(UFW)
有關 UFW 規則的更多信息,請參閱“在 Linux 上配置防火牆”。
打開你需要的兩個連接埠:22/tcp 用於 SSH(跳過此規則可能會導致失去對伺服器的存取權)和 42666/udp,AmneziaWG 將監聽該連接埠。
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
ufw 狀態輸出中這兩條規則都應該顯示為 ALLOW。
安裝 AmneziaWG
Debian 不直接支援 Ubuntu 風格的 PPA,因此必須手動新增軟體來源,而不是使用 add-apt-repository 命令。這在 Ubuntu 上也是同樣的操作。
手動新增儲存庫
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
新增 GPG 簽署金鑰
使用已棄用的密鑰環文件,而不是已棄用的 apt-key 命令,並獲取 PPA 的真實簽名密鑰(指紋 75C9DD72C799870E310542E24166F2C257290828):
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
更新和安裝
apt update
apt install -y amneziawg
驗證模組是否已加載
modprobe amneziawg
lsmod | grep amnezia
生成伺服器和客戶端配置
安裝輔助工具
安裝二維碼依賴項,然後建立專用工作目錄,並將社群配置產生器腳本下載到該目錄:
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
如果你的發行版軟體倉庫中沒有 python3-qrcode,請回退到使用 `pip3 install qrcode --break-system-packages` 指令(Debian 12+/Ubuntu 24.04 預設會阻止非託管的 pip 安裝,因此需要此標誌)。不要同時執行兩個安裝命令,選擇其中一個即可。
產生伺服器配置
建立 /etc/amnezia/amneziawg/awg0.conf 檔案。您可以將隧道內部子網路和 UDP 連接埠保留為預設值,也可以設定您自己的值:
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
-i 標誌設定隧道的內部網路位址和遮罩;-p 設定伺服器的 UDP 連接埠(與步驟 2.3 中開啟的連接埠相同)。
建立客戶端配置模板
python3 awgcfg.py --create
這樣就把模板保存在了構建各個客戶端配置的同一資料夾中——它已經包含了伺服器的公鑰、其 IP 位址以及將 AmneziaWG 與普通 WireGuard 區分開來的混淆參數(Jc、Jmin、Jmax、S1、S2、H1-H4)。
新增客戶
每個設備建立一個條目-名稱可以是任何內容,例如設備名稱:
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
產生客戶文件和二維碼
python3 awgcfg.py -c -q
~/awg 資料夾現在將包含 laptop.conf 和 phone.conf 等文件,以及匹配的 PNG 二維碼,您可以直接將其掃描到行動應用程式中。
~/awg 資料夾現在將包含 laptop.conf 和 phone.conf 等文件,以及匹配的 PNG 二維碼,您可以直接將其掃描到行動應用程式中。
啟動服務並啟用自動啟動
啟動 awg0 介面並啟用開機自動啟動功能:
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
設備啟動時應顯示「已啟用(已退出)」。如果控制台顯示日誌而“卡住”,請按 Q 鍵退出。
使用以下命令查看活躍節點清單和每個節點的流量:
awg show
從 Windows 連線
本節中的所有操作都在您的 Windows 電腦上完成,而非透過 SSH 連線-VPN 用戶端必須安裝在實際使用 VPN 隧道的裝置上。唯一需要操作伺服器的步驟是 6.2 節中的 scp 下載,即使是這個命令也是在您的電腦上輸入的,它會下載伺服器在第 4 節中已經產生的檔案。
安裝客戶端
AmneziaWG 有一個專用的 Windows 應用程式——它的介面與標準的 WireGuard 用戶端類似,但它能夠識別混淆參數。請從專案的官方倉庫下載安裝程式:
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
上面的連結是維護良好的 Windows 用戶端的發布頁面——請從那裡下載最新的 .msi/.exe 檔案。請在瀏覽器中開啟此頁面,而不是貼上到終端機中的命令。
執行安裝程式並按照設定精靈的步驟操作;預設設定無需更改。
導入配置
將客戶端設定檔從伺服器複製到您的電腦——最簡單的方法是使用 scp 命令,在您的電腦上用 PowerShell 運行,而不是在伺服器上運行:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
在 AmneziaWG 應用程式中,點擊“從檔案匯入隧道”,選擇 laptop.conf,然後打開新隧道旁的開關。
從 macOS 連接
有兩種支援的選項:
- AmneziaWG(Mac App Store):一款輕量級用戶端,適用於 macOS 12 及更高版本。在 App Store 中搜尋「AmneziaWG」並安裝,然後使用「從檔案匯入隧道」並選擇您的 .conf 檔案—工作流程與 Windows 用戶端相同。
- AmneziaVPN(完整應用程序,macOS 14+):如果您喜歡使用功能齊全的 Amnezia 應用程式而不是輕量級的 AmneziaWG 用戶端,請從 github.com/amnezia-vpn/amnezia-client/releases/latest 下載 .pkg。
如果需要,請先複製客戶端配置,與步驟 6.2 相同:
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
從 Linux 連接
在Linux桌上型電腦或筆記型電腦上,您有兩種選擇:
- GUI:從 github.com/amnezia-vpn/amnezia-client/releases 安裝完整的 AmneziaVPN 桌面用戶端,然後以與在 Windows/macOS 上相同的方式匯入 .conf 檔案。
- CLI,使用與伺服器上相同的 amneziawg-tools(awg / awg-quick):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
運行此程式碼斷開連線。
awg-quick down awg0
若要在登入時自動啟動隧道,請將其啟用為一項服務:
systemctl enable --now awg-quick@awg0
驗證連接
在第 6、7 或 8 節中啟動隧道後,返回您自己的裝置(而非 SSH 會話),並在瀏覽器中開啟任意「我的 IP 位址查詢」工具——顯示的位址應與您的 VPS 的 IP 位址相符。或者,您也可以在 SSH 會話內部進行驗證,在伺服器上執行 `awg show` 指令,並確認用戶端對等方顯示最近一次握手和非零流量。
參考:
|
場 |
價值 |
|
地址 |
YOUR_TUNNEL_IP(用戶端在隧道內的位址,例如 10.10.8.2/32 — 在步驟 4.4 新增用戶端時自動指派) |
|
端點 |
YOUR_SERVER_IP:42666(伺服器的外部 IP 位址以及用戶端連接的 UDP 連接埠。) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
握手之前發送的「垃圾」資料包的數量和大小——伺服器和客戶端可能不同,但不會中斷連線。 |
|
S1 / S2 |
握手填充欄位的大小-伺服器和每個客戶端之間必須逐位元組匹配 |
|
H1–H4 |
用於將協定偽裝成普通流量的資料包類型頭部也必須完全匹配,並且彼此之間必須唯一。 |
隧道兩端只需要 S1/S2 和 H1-H4 相同;Jc、Jmin 和 Jmax 純粹是關於每一方如何填充自己的傳出垃圾流量,因此客戶端和伺服器的值可以合法地不同,就像上面的範例一樣。
結語
按照本指南操作,您的 VPS 將運行自己的 AmneziaWG 伺服器:AmneziaWG 是一種與 WireGuard 相容的協議,它對流量進行混淆,使得深度套件偵測 (DPI) 系統更難將其與普通的 UDP 流量區分開來,而普通的 WireGuard 流量則難以區分。該服務以 systemd 單元 awg-quick@awg0 的形式運行,即使伺服器重啟,無需您進行任何操作,服務仍然存在。
產生的 .conf 檔案和 ~/awg 中的二維碼不僅適用於 Windows 用戶端,還可以導入到適用於 Android、iOS、macOS 和 Linux 的 AmneziaWG 或 Amnezia 應用程序,以及 Keenetic 和 OpenWrt 路由器。
隨時可以透過重複步驟 4.4–4.5(python3 awgcfg.py -a "name", 然後 awgcfg.py -c -q)並使用 systemctl restart [email protected]重啟介面來新增客戶端。
伺服器運行後,以下幾個習慣值得保持:
- 保持系統補丁更新。定期重新運行 apt update -y && apt upgrade -y,並在核心升級後重啟,以便 DKMS 針對新核心重新建置 amneziawg 模組。
- 請備份 ~/awg 目錄。該目錄的 awg0.conf 檔案中保存著每個客戶端的私鑰和伺服器本身的金鑰對;遺失該目錄意味著需要為每個裝置重新產生配置。
- 立即撤銷遺失的設備。從 /etc/amnezia/amneziawg/awg0.conf 中移除對應的 [Peer] 區塊,然後執行 systemctl restart [email protected].
如果連線始終無法建立,請依照下列順序檢查:
- 服務狀態(systemctl status) [email protected])
- 防火牆規則(ufw 狀態 — 連接埠 42666/udp 必須開啟)
- 如果介面甚至無法啟動,則檢查 DKMS/模組狀態(dkms status,lsmod | grep amnezia)
- 伺服器上活躍對等節點的清單(awg show)
- 客戶端配置指向正確的外部伺服器 IP 位址
在決定使用 AmneziaWG 之前,想將其與其他方案進行比較?請參閱「Linux 上的 VPN 伺服器設定:PPTP 還是 OpenVPN?」以及「如何在伺服器上設定 WireGuard VPN」。如果您只需要一個簡單的代理,而不是完整的 VPN 隧道,那麼在 CentOS/ArchLinux 上配置 3proxy是一個更輕量級的選擇。 VPN 上線後,如需加強伺服器安全,請參閱「Linux 使用者:管理與權限」。