開啟 3 天免費試用
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。


wg-easy 部署會為 WireGuard 加上管理介面,但主機保安、路由和復原仍由你負責。本教學把管理介面放在 SSH 通道後,為每部裝置建立獨立身份,並將撤銷紀錄納入復原程序。
關鍵要點
- 對外發佈隧道埠,管理埠只綁定主機回環地址。
- 裝置設定檔及二維碼都含有秘密,不能當普通圖片分享。
- 撤銷及重新啟動後檢查新流量,不憑綠色指示判斷成功。
- 先關閉業務入口,還原資料後先重做其後的撤銷。
先用自建維護責任清單訂明更新、憑據、防火牆及退役的負責人。WireGuard 網頁管理介面方便一致地新增裝置,但不安全的備份或匯出亦可能洩露全部裝置秘密。授予管理權前,先了解WireGuard 的公鑰身份模型。
若只需日常互聯網出口,不想維護伺服器,可比較租用 VPS 與使用託管 VPN 的責任。實際任務若是管理 Xray 入站,則參考限制入口的 3x-ui 設定程序;它的憑據和復原資料不同,並非 WireGuard 的另一種介面。
適用範圍及證據: Ubuntu 24.04 LTS、配備 Compose 插件的 Linux Docker Engine、wg-easy v15.4.0,以及另一部獲授權 WireGuard 客戶端。本文依據來源編寫,作者未完成端到端部署或效能實測,沒有把截圖或終端輸出冒充觀察結果。固定版本只是操作基線,不代表宣稱它是最新版本。[1]
選擇具備公網入口的專用主機,或已獲授權的上游 UDP 埠映射。確認映像支援主機架構,Linux 核心支援 WireGuard。工作站上的 Docker Desktop 不在本閘道程序範圍內。依 Docker 官方發行說明安裝 Engine 和 Compose,並檢查版本。
私下保存原有介面、路由、DNS、防火牆管理者、Docker 已發佈埠及雲端安全群組。建立一條新的 SSH 連線,並確認供應商復原控制台可用。不要把管理路徑改到即將建立的隧道。
預留 UDP 51820 和主機 TCP 51821;已有佔用便停止。將 Compose 橋接子網與主機、客戶端、區域網絡路由比較,排除衝突。預設私有 IPv6 橋接網絡不能證明公網 IPv6 出口有效。本次有限 IPv4 檢查應使用沒有可用 IPv6 預設路由的受控客戶端;否則先設計及驗證雙棧覆蓋,不要為了通過檢查關閉共用機器的 IPv6。
下載並閱讀所選版本的 Compose,保留配套的卷、能力、網絡及轉送設定,不混用 v14 環境變數。上游檔案會發佈兩個服務埠,故必須有意識地修改管理埠。[2]
sudo install -d -m 700 /etc/docker/containers/wg-easy
sudo curl --fail --show-error --location \
https://raw.githubusercontent.com/wg-easy/wg-easy/v15.4.0/docker-compose.yml \
-o /etc/docker/containers/wg-easy/compose.yaml
sudoedit /etc/docker/containers/wg-easy/compose.yaml
在已有 wg-easy 服務內替換以下對應欄位。這是片段,並非完整 Compose;保持原有縮排及其他必要設定,包括 NET_ADMIN 和文件要求的模組處理。不要加入 privileged,亦不要掛載 Docker socket。
image: ghcr.io/wg-easy/wg-easy:15.4.0
environment:
- INSECURE=true
ports:
- "51820:51820/udp"
- "127.0.0.1:51821:51821/tcp"
restart: "no"
INSECURE=true 允許這個受限介面使用 HTTP,不會關閉 WireGuard 認證,也不是公開明文管理的許可。本方案的瀏覽器至伺服器路徑由 SSH 保護,不可改用公網 HTTP 管理地址。日後若需公開網頁入口,須另行設計認證及 HTTPS。[4]
項目目錄保持只供 root 存取。下列指令在 sudo 權限內明確指定 Compose 檔案,一般 sudo 管理員毋須進入該目錄。[7]
透過供應商防火牆及實際負責主機/Docker 政策的管理者放行 UDP 51820,不開放公網 TCP 51821,IPv6 同樣適用。Docker 發佈流量可能繞過人們預期保護普通主機服務的 UFW 規則;單一 UFW deny 不足以證明限制成立。不要關閉 Docker 防火牆規則管理或清空規則表。[3]
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml config --quiet
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml pull
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml up -d
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml ps
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml port wg-easy 51821
管理映射應顯示 127.0.0.1:51821。若看到萬用地址或其他地址,應停止容器,在初始化前修正檔案。首次驗收使用 restart: "no";完成下列檢查後才啟用自動重新啟動政策。
在管理工作站替換以下大寫佔位符。信任檔案必須包含經獨立核對的主機密鑰;不匹配時應停止,不可關閉校驗。本地 51821 也須未被佔用。
ssh -N -T -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=yes \
-o UserKnownHostsFile=/PATH/TO/VERIFIED_KNOWN_HOSTS \
-L 127.0.0.1:51821:127.0.0.1:51821 ADMIN@SERVER_IP
保持終端運行,開啟 http://127.0.0.1:51821。以獨立管理員名稱及強密碼完成首位用戶設定,選擇新設定,填寫公網隧道入口及 UDP 51820,再於介面/客戶端設定中指定 DNS 和路由。不要將回環地址當作裝置 endpoint。官方說明有區分新設定與舊安裝匯入。[5]
新增一部裝置,使用能對應持有人及用途的清楚名稱,私下將匯出的設定交付到該裝置。不同人士不要共用 peer 檔案,不要貼到聊天或公開二維碼。裝置與公鑰的對應清單應與私鑰分開保存。
用作 IPv4 互聯網出口時,檢查所產生客戶端的 AllowedIPs 是否包含 0.0.0.0/0,並確認 DNS 可達。客戶端路由不是伺服器端存取控制,亦不表示 VPS 能連到任意私人區域網絡。核對 endpoint、路由、地址分配及 DNS 符合實際拓撲後才匯出。
連接前私下記錄客戶端原有出口,連接新裝置並產生新請求。在確實使用 WireGuard 介面的瀏覽器中核對可見出口 IP,預期 IPv4 應與伺服器已知出口一致,並考慮供應商 NAT。
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml exec wg-easy wg show wg0
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml restart wg-easy
產生新流量後查看握手時間及傳輸計數。舊握手只能證明過去曾交換資料,不能證明目前請求經過隧道。不要將公鑰及入口地址放入共用日誌。認證失敗時,依WireGuard 密鑰不匹配的排查次序比較目標 peer,不披露任何私鑰。
| 讀者檢查 | 預期條件 | 失敗時處理 |
|---|---|---|
| 獲授權外部主機存取公網管理地址 | TCP 51821 沒有管理連線 | 停容器,檢查 Docker 綁定及兩種地址族 |
| 經 SSH 的新瀏覽器尚未登入 | 無法執行特權管理操作 | 停止設定,調查認證並移除匿名存取 |
| 有效裝置發出新互聯網請求 | 新握手、計數增加、出口正確 | 區分入口/UDP 與轉送、NAT、DNS、路由 |
| 分別進行 DNS 及應用 UDP 檢查 | 解析路徑正確,受控 UDP 請求成功 | 獨立排查,不以瀏覽器 TCP 成功代替 |
| 中斷隧道 | 實際回退符合明確政策 | 不宣稱斷線保護,有需要另行設計及驗證 |
以自己控制的 DNS 測試檢查實際解析路徑,另用獲授權 UDP 應用驗證 UDP。HTTPS 瀏覽不能代替 UDP 檢查。本文沒有提供客戶端斷線保護;全隧道設定中斷後可能恢復普通連線,不要用敏感業務探索這種行為。
保留第二部獲授權裝置作對照。在管理介面停用或刪除第一部,儲存變更,確認其公鑰不再是運行時接受的 peer。保留舊客戶端設定並強制產生新流量,預期不能完成新的有效握手或轉送請求。確認對照裝置仍可運作,再重新啟動容器,重複兩邊檢查。
把撤銷公鑰和日期寫入獨立於被替換備份的私人紀錄。刪除自己客戶端的檔案不能撤銷另一部裝置已有的副本;管理介面截圖也不能證明目前介面及下次重新啟動都遵守撤銷。
停止容器後製作一致備份。下列帶日期的目的地目錄必須尚不存在,下一份快照應改用另一日期或標籤。每條指令確認成功才繼續;複製失敗時保留來源卷,有意識地恢復服務,不可把失敗副本當作可復原備份。
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml stop wg-easy
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml cp wg-easy:/etc/wireguard /root/wg-easy-backup-20261011
sudo chmod -R go-rwx /root/wg-easy-backup-20261011
sudo cp /etc/docker/containers/wg-easy/compose.yaml /root/wg-easy-compose-20261011.yaml
sudo chmod 600 /root/wg-easy-compose-20261011.yaml
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml start wg-easy
需要整個 /etc/wireguard 持久化目錄,包括資料庫和產生的密鑰。同時保留 Compose、映像版本及防火牆/復原通道清單。異機副本須加密並限制存取,檢查封存能夠讀取;複製或列出檔案均不能證明復原成功。
復原演練前先在供應商端關閉隧道入口,使用專用替代主機或隔離實例。重建同版本,在服務停止時還原持久化目錄及原有擁有人、權限,管理介面繼續只綁定回環地址。不要向運行中的資料庫合併檔案,也不要覆蓋唯一尚存的備份。
入口關閉時啟動,先重做快照之後全部撤銷,再核對裝置清單。其後只短暫允許獲授權測試客戶端,重複有效/失效身份檢查,重新啟動後再次驗證。還原後已撤銷身份重新可用,便屬復原失敗:關閉入口,從持久化及運行狀態移除身份,重新驗收後才恢復正常開放。
SSH 正常但管理員密碼遺失時,在獲授權主機使用文件規定的互動式重設。不要把新密碼放入指令參數或記錄輸入。[6]
sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml exec -it wg-easy cli db:admin:reset
管理介面故障時,經供應商控制台只檢查此 Compose 項目的設定及日誌,還原最後已知正確的設定,不以公開 UI 繞過問題。無法安全恢復管理通道時,保持業務入口關閉並停止後續修改。
退役時先關閉此部署的 UDP 入口、停止容器,執行 sudo docker compose -f /etc/docker/containers/wg-easy/compose.yaml down;備份保留政策未定前不要加 -v。撤銷匯出身份,只移除此項目的供應商規則及預留資源,檢查殘餘監聽,並確認新的 SSH 連線和原有服務可用。資料卷須在明確決定保留政策後才刪除;停止容器不會停止 VPS 計費。
不會,每部裝置仍需獨立 WireGuard 身份。管理介面只是管理設定及簡化匯出,因此更應保護管理員入口和匯出資料。
強密碼不能取代受控管理入口。本方案只允許經 SSH 到回環地址的 HTTP 存取,不提供公網管理監聽。
Docker 的轉送和埠發佈可能不經普通主機服務採用的 UFW 路徑。應核對實際 Docker 綁定及供應商防火牆,不能只看 deny 紀錄。
握手只證明某一刻的 peer 交換。還要分別檢查新流量、可見出口、DNS、UDP 及斷連行為,才能判斷完整路徑。
如果快照早於裝置刪除,便可能復活舊身份。應保留獨立撤銷紀錄,在入口關閉時重做其後變更,再驗證拒絕。
應使用獨立身份,遺失一部裝置時才可單獨撤銷,而毋須更換其他裝置憑據。共用檔案亦會破壞裝置清單和流量歸屬。
本文不宣稱作者已完成端到端實測。指令及預期條件是依官方資料設計的讀者驗收程序,請記錄自己獲授權環境的實際結果。
來源:
Sources checked 2026 年 10 月 11 日。
延伸閱讀:
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。