如何在OpenVPN服务器上限制每个用户名的最大连接数
OpenVPN 单用户最大连接数限制配置方案
实现逻辑
通过OpenVPN自带的client-connect钩子脚本,在每个用户发起连接请求时校验当前账号的活跃连接数,和预先配置的阈值对比,超过限制则直接拒绝连接请求。
配置步骤
- 第一步:创建用户连接数限制映射表
创建配置文件/etc/openvpn/user_conn_limits,每行格式为用户名 最大连接数,示例内容如下:
Customer1 2 Customer2 1 Customer3 3
未在该文件中配置的用户,默认使用全局默认连接数限制。
- 第二步:编写连接校验脚本
创建脚本文件/etc/openvpn/check_user_conn.sh,内容如下:
#!/bin/bash # 用户限制配置文件路径 LIMIT_FILE="/etc/openvpn/user_conn_limits" # 未配置用户的默认最大连接数 DEFAULT_LIMIT=1 # 获取当前认证通过的用户名 CURRENT_USER=$username # 读取对应用户的连接数限制 USER_LIMIT=$(grep "^${CURRENT_USER} " "${LIMIT_FILE}" | awk '{print $2}') USER_LIMIT=${USER_LIMIT:-$DEFAULT_LIMIT} # 统计当前用户已有的活跃连接数 ACTIVE_CONN=$(grep -c ",${CURRENT_USER}," /var/log/openvpn/status.log) # 超过限制则拒绝连接(返回非0值OpenVPN会中断本次连接请求 if [ ${ACTIVE_CONN} -ge ${USER_LIMIT} ]; then exit 1 fi exit 0
- 第三步:配置权限及OpenVPN服务配置
- 给脚本添加执行权限:
chmod +x /etc/openvpn/check_user_conn.sh - 编辑OpenVPN服务主配置文件(通常为
/etc/openvpn/server.conf),添加以下配置项:
# 允许执行自定义脚本 script-security 2 # 客户端连接时触发校验脚本 client-connect /etc/openvpn/check_user_conn.sh
*注:确保配置文件中已开启状态日志输出(默认一般已配置):status /var/log/openvpn/status.log 10
- 第四步:重启OpenVPN服务生效
systemctl restart openvpn@server
内容的提问来源于stack exchange,提问作者Meendufski
相关产品推荐
相关产品推荐

