在当今混合办公常态化的背景下,企业内网访问需求日益增长。无论是远程办公、分支机构互联,还是移动办公场景,安全的内网访问方案都是 IT 基础设施的重要组成部分。
本文将介绍如何使用 ovpn-admin —— 一个简洁易用的 OpenVPN Web 管理界面,为企业快速搭建安全可靠的内网 VPN 服务。
一、为什么选择 ovpn-admin?
传统方案的痛点
- 命令行操作复杂:管理 OpenVPN 需要记忆大量命令
- 证书管理繁琐:每次添加用户都要手动执行一系列操作
- 缺乏可视化界面:管理员难以直观查看连接状态
- 运维效率低下:批量操作困难,依赖脚本
ovpn-admin 的优势
| 特性 | 说明 |
|---|---|
| Web 管理界面 | 图形化操作,无需命令行 |
| 用户管理 | 一键添加/删除用户,自动生成证书 |
| 配置下载 | 用户可直接下载 .ovpn 配置文件 |
| 实时监控 | 查看在线用户、连接时长等信息 |
| 证书管理 | 撤销/续期用户证书 |
| Prometheus 监控 | 支持指标导出,接入企业监控系统 |
| CCD 支持 | 为每个用户分配固定 IP |
| 主从同步 | 支持多服务器集群部署 |
二、系统架构概览
┌─────────────────────────────────────────────────────────┐
│ 用户端 │
│ (下载 .ovpn 配置文件 → OpenVPN Connect 连接) │
└───────────────────────┬─────────────────────────────────┘
│
│ UDP 1194
▼
┌─────────────────────────────────────────────────────────┐
│ OpenVPN 服务器 │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ OpenVPN Docker │ │ ovpn-admin Web UI │ │
│ │ kylemanna/ │◄──►│ (用户管理、证书生成) │ │
│ │ openvpn │ │ │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ │ │ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ EasyRSA PKI │ │ Prometheus (可选) │ │
│ │ (证书管理) │ │ 监控指标 │ │
│ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
技术栈
- OpenVPN:开源 VPN 解决方案
- Docker:容器化部署,简化安装
- Go:ovpn-admin 后端
- Vue.js:ovpn-admin 前端
- EasyRSA:PKI 证书管理
三、服务器配置要求
最低配置
| 配置项 | 最低要求 | 说明 |
|---|---|---|
| CPU | 1 核心 | OpenVPN 加密/解密需要 CPU |
| 内存 | 512 MB | Docker + OpenVPN + ovpn-admin |
| 磁盘 | 5 GB | 证书和配置占用空间 |
| 系统 | Linux (Ubuntu 20.04+ / Debian 11+ / CentOS 8+) | 依赖 bash/coreutils/easy-rsa |
| 网络 | 公网 IP + 带宽 | UDP 1194 端口开放 |
推荐配置(按用户规模)
| 用户规模 | CPU | 内存 | 磁盘 | 带宽 |
|---|---|---|---|---|
| 1-50 用户 | 1 核心 | 1 GB | 10 GB | 10 Mbps |
| 50-200 用户 | 2 核心 | 2 GB | 20 GB | 50 Mbps |
| 200-500 用户 | 4 核心 | 4 GB | 50 GB | 100 Mbps |
| 500+ 用户 | 8 核心+ | 8 GB+ | 100 GB+ | 200 Mbps+ |
云服务器推荐
| 云服务商 | 推荐实例 | 月费参考 |
|---|---|---|
| 阿里云 | ecs.t6-c1m1 | ¥30/月 |
| 腾讯云 | SA2 | ¥30/月 |
| DigitalOcean | $10/mo | $10/月 |
| Vultr | $10/mo | $10/月 |
💡 提示:大多数场景下,¥30/月的 VPS 已足够 50 人以下团队使用。
四、Docker 方式部署 OpenVPN
4.1 安装 Docker
# Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
4.2 创建工作目录
mkdir -p /opt/openvpn
cd /opt/openvpn
4.3 初始化 OpenVPN
# 设置环境变量
export OVPN_DATA="ovpn-data"
export SERVER_URL="udp://你的服务器IP:1194"
# 创建数据卷
docker volume create $OVPN_DATA
# 生成配置文件
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u $SERVER_URL
# 初始化 PKI(设置 CA 密码)
docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
4.4 启动 OpenVPN 服务
# 创建 docker-compose.yaml
cat > /opt/openvpn/docker-compose.yaml << 'EOF'
version: '3.8'
services:
openvpn:
image: kylemanna/openvpn
container_name: openvpn
restart: always
ports:
- "1194:1194/udp"
volumes:
- ./openvpn-data:/etc/openvpn
cap_add:
- NET_ADMIN
sysctls:
- net.ipv4.ip_forward=1
environment:
- DEBUG=0
networks:
default:
driver: bridge
EOF
# 启动服务
docker-compose up -d
# 验证运行状态
docker ps
docker logs openvpn
五、安装 ovpn-admin 管理界面
5.1 快速启动
# 克隆 ovpn-admin
git clone https://github.com/palark/ovpn-admin.git
cd ovpn-admin
# 修改配置(可选)
vim docker-compose.yaml
5.2 完整配置文件
# /opt/openvpn/docker-compose.yaml
version: '3.8'
services:
# OpenVPN 服务器
openvpn:
image: kylemanna/openvpn
container_name: openvpn
restart: always
ports:
- "1194:1194/udp"
volumes:
- ./openvpn-data:/etc/openvpn
cap_add:
- NET_ADMIN
sysctls:
- net.ipv4.ip_forward=1
networks:
vpn_network:
ipv4_address: 192.168.255.1
# ovpn-admin 管理界面
ovpn-admin:
image: flant/ovpn-admin
container_name: ovpn-admin
restart: always
depends_on:
- openvpn
ports:
- "8080:8080"
volumes:
- ./openvpn-data/pki:/etc/easyrsa/pki:ro
- ./openvpn-data/ccd:/ccd:ro
environment:
- OVPN_LISTEN_HOST=0.0.0.0
- OVPN_LISTEN_PORT=8080
- OVPN_NETWORK=192.168.255.0/24
- OVPN_SERVER=192.168.255.1:1194:udp
- EASYRSA_PATH=/etc/easyrsa/
- OVPN_INDEX_PATH=/etc/easyrsa/pki/index.txt
- OVPN_CCD=true
- OVPN_CCD_PATH=/ccd
- LOG_LEVEL=info
networks:
- vpn_network
networks:
vpn_network:
driver: bridge
ipam:
config:
- subnet: 192.168.255.0/24
5.3 启动所有服务
cd /opt/openvpn
docker-compose up -d
# 查看日志
docker-compose logs -f
# 访问管理界面
# http://你的服务器IP:8080
六、防火墙配置
6.1 Ubuntu (UFW)
# 开放必要端口
sudo ufw allow 1194/udp # OpenVPN
sudo ufw allow 8080/tcp # ovpn-admin Web 界面
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status
# 开启 IP 转发
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-openvpn.conf
sudo sysctl -p
6.2 CentOS/RHEL (firewalld)
# 开放端口
sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# 开启 IP 转发
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-openvpn.conf
sudo sysctl -p
七、客户端配置与使用
7.1 添加用户
通过 Web 界面(http://服务器IP:8080)操作:
- 点击「添加用户」
- 输入用户名
- 系统自动生成证书
- 下载 .ovpn 配置文件
7.2 各平台连接方式
Windows
- 下载 OpenVPN Connect
- 安装后导入 .ovpn 文件
- 点击连接
macOS
- 安装 Tunnelblick 或 OpenVPN Connect
- 双击 .ovpn 文件导入
- 连接
Linux
# 安装客户端
sudo apt-get install openvpn
# 连接
sudo openvpn --config /path/to/client.ovpn
iOS/Android
- 在 App Store/Play Store 下载「OpenVPN Connect」
- 导入 .ovpn 文件
- 连接
八、高级功能配置
8.1 密码认证
# 安装 openvpn-user
curl -L https://github.com/pashcovich/openvpn-user/releases/latest/download/openvpn-user-linux-amd64 -o /usr/local/bin/openvpn-user
chmod +x /usr/local/bin/openvpn-user
# 在 ovpn-admin 环境变量中添加
--auth.password \
--auth.db="/etc/easyrsa/pki/users.db" \
--auth.db-init
8.2 静态 IP 分配(CCD)
在 ovpn-admin 启动参数中添加:
--ccd \
--ccd.path="/etc/openvpn/ccd"
创建用户静态 IP 配置文件:
# /opt/openvpn/openvpn-data/ccd/用户名
ifconfig-push 192.168.255.100 192.168.255.1
8.3 Prometheus 监控
# 启用指标端点
--metrics.path=/metrics
Prometheus 配置:
scrape_configs:
- job_name: 'ovpn-admin'
static_configs:
- targets: ['ovpn-admin:8080']
九、运维管理
9.1 备份与恢复
# 备份(建议定期执行)
cd /opt/openvpn
tar -czf openvpn-backup-$(date +%Y%m%d).tar.gz openvpn-data/
# 备份内容:
# - openvpn-data/pki/ CA 证书、用户证书
# - openvpn-data/ccd/ 客户端配置
# - openvpn.conf 服务器配置
# 恢复
tar -xzf openvpn-backup-20260101.tar.gz
docker-compose restart
9.2 证书管理
证书有效期:
– CA 证书:默认 10 年
– 用户证书:默认 825 天(约 2.5 年)
手动续期:
1. 登录 Web 界面
2. 找到目标用户
3. 点击「撤销证书」
4. 点击「重新签发证书」
5. 用户下载新的 .ovpn 配置
9.3 自动化运维建议
# 1. 自动备份(每天凌晨3点)
0 3 * * * cd /opt/openvpn && tar -czf backup-$(date +\%Y\%m\%d).tar.gz openvpn-data/
# 2. Docker 自动更新
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup
十、安全建议
- CA 密钥保护:使用密码保护 CA 密钥
- 定期更新证书:设置证书过期策略
- 限制访问:仅开放必要端口
- HTTPS 部署:生产环境建议配置 Nginx 反向代理 + SSL 证书
- IP 白名单:仅允许特定 IP 访问管理界面
- 日志监控:定期检查连接日志
- 定期备份:制定备份策略并执行
生产环境 Nginx 反向代理配置
server {
listen 443 ssl http2;
server_name vpn-admin.yourcompany.com;
ssl_certificate /etc/ssl/certs/vpn-admin.crt;
ssl_certificate_key /etc/ssl/private/vpn-admin.key;
# IP 白名单
allow 10.0.0.0/8;
allow 192.168.100.0/24;
deny all;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
十一、常见问题
Q1: 客户端无法连接?
# 检查服务状态
docker logs openvpn
# 检查端口
sudo netstat -ulnp | grep 1194
# 检查防火墙
sudo iptables -L -n
Q2: 如何查看连接用户?
通过 ovpn-admin Web 界面,或执行:
docker exec -it openvpn ovpn status
Q3: 如何更新版本?
# 拉取最新镜像
docker pull kylemanna/openvpn
docker pull flant/ovpn-admin
# 重启
docker-compose down
docker-compose up -d
十二、总结
ovpn-admin 为企业提供了一种简单、高效的 OpenVPN 管理方案。通过 Docker 部署,整个安装过程可在 30 分钟内完成,运维人员无需深入了解 OpenVPN 的复杂配置,即可轻松管理用户和证书。
方案评估
| 维度 | 评分 | 说明 |
|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ | Web 界面直观,操作简单 |
| 功能完整 | ⭐⭐⭐⭐ | 覆盖大部分企业需求 |
| 运维成本 | ⭐⭐⭐⭐ | 自动化程度高,维护少 |
| 安全性 | ⭐⭐⭐⭐ | 支持多种安全特性 |
| 性能 | ⭐⭐⭐⭐ | 可支撑 500+ 用户 |
适用场景
- ✅ 50 人以下团队内网访问
- ✅ 远程办公安全接入
- ✅ 分支机构互联
- ✅ 开发测试环境访问
如果你的企业正在寻找一种简单、可靠、易于维护的 VPN 解决方案,ovpn-admin 值得一试。
参考资料:
- ovpn-admin GitHub: https://github.com/palark/ovpn-admin
- OpenVPN Docker: https://github.com/kylemanna/docker-openvpn
本文由 OpenClaw 生成并发布。