解決 WireGuard 服務(wù)端和客戶端配置

前言

在企業(yè)運維和開發(fā)工作中,我們經(jīng)常需要搭建內(nèi)網(wǎng)隧道來實現(xiàn):遠(yuǎn)程辦公訪問公司內(nèi)網(wǎng)資源、多地機房服務(wù)器互聯(lián)開發(fā)環(huán)境與測試環(huán)境安全通信等場景。WireGuard 作為 Linux 內(nèi)核內(nèi)置的現(xiàn)代化隧道協(xié)議,憑借其簡潔高效的設(shè)計,已經(jīng)成為企業(yè)組網(wǎng)的熱門選擇。

但用過 WireGuard 的運維同學(xué)都知道,它有個痛點:配置管理太繁瑣。

每次添加新客戶端,你需要:

  1. 手動生成密鑰對(私鑰、公鑰、預(yù)共享密鑰)
  2. 手動分配 IP 地址(還得記住哪些 IP 已經(jīng)用過了)
  3. 編輯服務(wù)端配置文件,添加 [Peer]
  4. 生成客戶端配置文件
  5. SSH 登錄服務(wù)器,上傳配置
  6. 重啟 WireGuard 服務(wù)
  7. 把配置發(fā)給使用者(手機用戶還得手動輸入一堆字符串)

一個客戶端就要這么多步驟,10 個客戶端呢?100 個呢?


開源地址

GitHub: https://github.com/leaf0412/wg-manager

PyPI: https://pypi.org/project/wg-manager/


一分鐘體驗

# 安裝
pip install wg-manager
# 或者用 uv(更快)
uv tool install wg-manager

# 初始化服務(wù)端
wg-manager init -e your-server-ip

# 添加客戶端(自動生成密鑰、分配 IP、顯示配置)
wg-manager add -n my-phone

# 直接顯示二維碼,手機掃一掃就能連
wg-manager export -n my-phone --qr

就這么簡單,3 條命令搞定一個完整的內(nèi)網(wǎng)隧道配置。


核心功能一覽

1. 交互式菜單 —— 新手友好

不想記命令?沒關(guān)系,直接運行 wg-manager 進入交互式菜單:

╭─────────────────────────────────────────────╮
│            WireGuard 管理工具               │
├─────────────────────────────────────────────┤
│  當(dāng)前服務(wù)端: vpn.example.com:wg0            │
│  客戶端數(shù)量: 5 (啟用: 4, 禁用: 1)           │
│  SSH 狀態(tài): ? 已配置                         │
├─────────────────────────────────────────────┤
│  1. 添加客戶端                              │
│  2. 列出所有客戶端                          │
│  3. 導(dǎo)出客戶端配置                          │
│  4. 顯示客戶端二維碼                        │
│  5. 刪除客戶端                              │
│  ...                                        │
╰─────────────────────────────────────────────╯

所有操作一目了然,選個數(shù)字就能執(zhí)行。

2. 自動化一切

自動分配 IP:添加客戶端時自動從 .2 開始遞增分配,不用擔(dān)心 IP 沖突。

自動生成密鑰:私鑰、公鑰、預(yù)共享密鑰一鍵生成,安全可靠。

自動生成配置:服務(wù)端配置、客戶端配置自動生成,格式標(biāo)準(zhǔn)無錯誤。

3. SSH 自動同步 —— 真正的一鍵部署

這是我最喜歡的功能。配置好 SSH 后,添加/刪除客戶端會自動同步到遠(yuǎn)程服務(wù)器

# 一次性配置 SSH
wg-manager ssh --host your-server-ip

# 之后每次添加客戶端,自動同步
wg-manager add -n new-laptop
# 輸出: ? 客戶端已添加
#       ? 配置已同步到遠(yuǎn)程服務(wù)器
#       ? WireGuard 已熱重載

熱重載意味著現(xiàn)有的隧道連接不會中斷。你可以在生產(chǎn)環(huán)境放心添加新節(jié)點,不影響其他人。

4. 二維碼快連 —— 手機用戶的福音

wg-manager export -n my-phone --qr

終端直接顯示二維碼,手機打開 WireGuard App 掃一掃,3 秒接入內(nèi)網(wǎng)。

再也不用手動輸入那一串公鑰私鑰了!

5. 多服務(wù)端 / 多網(wǎng)段管理

企業(yè)級場景下,你可能需要:

  • 一臺服務(wù)器跑多個 WireGuard 接口(不同部門用不同網(wǎng)段)
  • 管理多臺網(wǎng)關(guān)服務(wù)器

wg-manager 完美支持:

# 同一服務(wù)器,不同網(wǎng)段
wg-manager init -e vpn.company.com -a 10.0.0.1/24 -p 51820 -i wg0  # 研發(fā)部
wg-manager init -e vpn.company.com -a 10.1.0.1/24 -p 51821 -i wg1  # 運維部
wg-manager init -e vpn.company.com -a 10.2.0.1/24 -p 51822 -i wg2  # 測試部

# 切換到指定網(wǎng)段
wg-manager use vpn.company.com -i wg1

每個網(wǎng)段獨立管理,互不影響。


實戰(zhàn):5 分鐘搭建企業(yè)內(nèi)網(wǎng)互聯(lián)

場景

你有一臺云服務(wù)器(IP: 1.2.3.4),想給團隊 5 個人搭建安全隧道,實現(xiàn)遠(yuǎn)程辦公訪問公司內(nèi)網(wǎng)資源。

Step 1: 服務(wù)器安裝 WireGuard

# Ubuntu/Debian
sudo apt update && sudo apt install wireguard

# CentOS/RHEL
sudo yum install wireguard-tools

Step 2: 本地安裝 wg-manager

pip install wg-manager

Step 3: 初始化并配置 SSH

# 初始化服務(wù)端配置
wg-manager init -e 1.2.3.4

# 配置 SSH 自動同步
wg-manager ssh --host 1.2.3.4

Step 4: 批量添加客戶端

wg-manager add -n alice-macbook
wg-manager add -n bob-windows
wg-manager add -n charlie-phone
wg-manager add -n david-laptop
wg-manager add -n eve-ipad

每個命令執(zhí)行后,配置自動同步到服務(wù)器,用戶立即可以連接。

Step 5: 分發(fā)配置

# 導(dǎo)出配置文件
wg-manager export -n alice-macbook    # 生成 alice-macbook.conf

# 或者直接顯示二維碼給手機用戶
wg-manager export -n charlie-phone --qr

搞定! 整個過程不超過 5 分鐘。


技術(shù)實現(xiàn)亮點

1. 零依賴 SSH

很多 Python 項目用 paramiko 實現(xiàn) SSH,但它依賴繁重。wg-manager 直接調(diào)用系統(tǒng)的 ssh/scp 命令,安裝更簡單,兼容性更好

2. SQLite 持久化

所有配置存儲在 ~/.wg_manager/wg_manager.db,一個文件搞定備份恢復(fù):

# 備份
cp ~/.wg_manager/wg_manager.db ~/backup/

# 恢復(fù)
cp ~/backup/wg_manager.db ~/.wg_manager/

3. 熱重載不中斷

使用 wg syncconf 而非 wg-quick down && wg-quick up,添加/刪除客戶端時現(xiàn)有連接繼續(xù)工作

4. 純 Python 二維碼

使用 qrcode 庫在終端渲染 ASCII 二維碼,不依賴系統(tǒng)的 qrencode 命令,跨平臺兼容。


與其他方案對比

特性 wg-manager 手動配置 wg-easy (Web)
安裝復(fù)雜度 pip3 install 無需安裝 Docker 部署
學(xué)習(xí)成本
自動化支持 ? CLI ? ?
多服務(wù)端管理 ? 手動 ?
SSH 自動同步 ? ? ?
離線使用 ? ? ?
二維碼生成 ? 需工具 ?
適合場景 開發(fā)者/運維 單機少量 小白用戶

寫在最后

WireGuard 本身是一個優(yōu)秀的內(nèi)核級隧道協(xié)議,但配置管理確實是個痛點。wg-manager 的目標(biāo)就是讓 WireGuard 配置管理變得簡單,讓運維同學(xué)把時間花在更有價值的事情上。

本工具僅用于企業(yè)內(nèi)網(wǎng)組網(wǎng)、遠(yuǎn)程辦公、開發(fā)測試環(huán)境互聯(lián)等合法合規(guī)場景。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容