解决 WireGuard 服务端和客户端配置

前言

在企业运维和开发工作中,我们经常需要搭建内网隧道来实现:远程办公访问公司内网资源多地机房服务器互联开发环境与测试环境安全通信等场景。WireGuard 作为 Linux 内核内置的现代化隧道协议,凭借其简洁高效的设计,已经成为企业组网的热门选择。

但用过 WireGuard 的运维同学都知道,它有个痛点:配置管理太繁琐

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

  1. 手动生成密钥对(私钥、公钥、预共享密钥)
  2. 手动分配 IP 地址(还得记住哪些 IP 已经用过了)
  3. 编辑服务端配置文件,添加 [Peer]
  4. 生成客户端配置文件
  5. SSH 登录服务器,上传配置
  6. 重启 WireGuard 服务
  7. 把配置发给使用者(手机用户还得手动输入一堆字符串)

一个客户端就要这么多步骤,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

# 初始化服务端
wg-manager init -e your-server-ip

# 添加客户端(自动生成密钥、分配 IP、显示配置)
wg-manager add -n my-phone

# 直接显示二维码,手机扫一扫就能连
wg-manager export -n my-phone --qr

就这么简单,3 条命令搞定一个完整的内网隧道配置。


核心功能一览

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

不想记命令?没关系,直接运行 wg-manager 进入交互式菜单:

╭─────────────────────────────────────────────╮
│            WireGuard 管理工具               │
├─────────────────────────────────────────────┤
│  当前服务端: vpn.example.com:wg0            │
│  客户端数量: 5 (启用: 4, 禁用: 1)           │
│  SSH 状态: ✓ 已配置                         │
├─────────────────────────────────────────────┤
│  1. 添加客户端                              │
│  2. 列出所有客户端                          │
│  3. 导出客户端配置                          │
│  4. 显示客户端二维码                        │
│  5. 删除客户端                              │
│  ...                                        │
╰─────────────────────────────────────────────╯

所有操作一目了然,选个数字就能执行。

2. 自动化一切

自动分配 IP:添加客户端时自动从 .2 开始递增分配,不用担心 IP 冲突。

自动生成密钥:私钥、公钥、预共享密钥一键生成,安全可靠。

自动生成配置:服务端配置、客户端配置自动生成,格式标准无错误。

3. SSH 自动同步 —— 真正的一键部署

这是我最喜欢的功能。配置好 SSH 后,添加/删除客户端会自动同步到远程服务器

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

# 之后每次添加客户端,自动同步
wg-manager add -n new-laptop
# 输出: ✓ 客户端已添加
#       ✓ 配置已同步到远程服务器
#       ✓ WireGuard 已热重载

热重载意味着现有的隧道连接不会中断。你可以在生产环境放心添加新节点,不影响其他人。

4. 二维码快连 —— 手机用户的福音

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

终端直接显示二维码,手机打开 WireGuard App 扫一扫,3 秒接入内网

再也不用手动输入那一串公钥私钥了!

5. 多服务端 / 多网段管理

企业级场景下,你可能需要:

  • 一台服务器跑多个 WireGuard 接口(不同部门用不同网段)
  • 管理多台网关服务器

wg-manager 完美支持:

# 同一服务器,不同网段
wg-manager init -e vpn.company.com -a 10.0.0.1/24 -p 51820 -i wg0  # 研发部
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  # 测试部

# 切换到指定网段
wg-manager use vpn.company.com -i wg1

每个网段独立管理,互不影响。


实战:5 分钟搭建企业内网互联

场景

你有一台云服务器(IP: 1.2.3.4),想给团队 5 个人搭建安全隧道,实现远程办公访问公司内网资源。

Step 1: 服务器安装 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

# 初始化服务端配置
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

每个命令执行后,配置自动同步到服务器,用户立即可以连接。

Step 5: 分发配置

# 导出配置文件
wg-manager export -n alice-macbook    # 生成 alice-macbook.conf

# 或者直接显示二维码给手机用户
wg-manager export -n charlie-phone --qr

搞定! 整个过程不超过 5 分钟。


技术实现亮点

1. 零依赖 SSH

很多 Python 项目用 paramiko 实现 SSH,但它依赖繁重。wg-manager 直接调用系统的 ssh/scp 命令,安装更简单,兼容性更好

2. SQLite 持久化

所有配置存储在 ~/.wg_manager/wg_manager.db,一个文件搞定备份恢复:

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

# 恢复
cp ~/backup/wg_manager.db ~/.wg_manager/

3. 热重载不中断

使用 wg syncconf 而非 wg-quick down && wg-quick up,添加/删除客户端时现有连接继续工作

4. 纯 Python 二维码

使用 qrcode 库在终端渲染 ASCII 二维码,不依赖系统的 qrencode 命令,跨平台兼容。


与其他方案对比

特性 wg-manager 手动配置 wg-easy (Web)
安装复杂度 pip3 install 无需安装 Docker 部署
学习成本
自动化支持 ✓ CLI
多服务端管理 手动
SSH 自动同步
离线使用
二维码生成 需工具
适合场景 开发者/运维 单机少量 小白用户

写在最后

WireGuard 本身是一个优秀的内核级隧道协议,但配置管理确实是个痛点。wg-manager 的目标就是让 WireGuard 配置管理变得简单,让运维同学把时间花在更有价值的事情上。

本工具仅用于企业内网组网、远程办公、开发测试环境互联等合法合规场景。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容