前言
在企業(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é)都知道,它有個痛點:配置管理太繁瑣。
每次添加新客戶端,你需要:
- 手動生成密鑰對(私鑰、公鑰、預(yù)共享密鑰)
- 手動分配 IP 地址(還得記住哪些 IP 已經(jīng)用過了)
- 編輯服務(wù)端配置文件,添加
[Peer]段 - 生成客戶端配置文件
- SSH 登錄服務(wù)器,上傳配置
- 重啟 WireGuard 服務(wù)
- 把配置發(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ī)場景。