一、前言
在部署和维护 OpenVPN 服务的过程中,日志记录是非常重要的环节。它不仅可以帮助我们排查连接问题,还能在一定程度上了解用户的连接行为,甚至为后续的安全审计提供依据。
本文将详细介绍如何配置 OpenVPN 的日志系统,包括客户端连接/断开日志记录、脚本调用方式、以及如何结合其他工具实现更深入的流量分析。
二、OpenVPN 自带日志功能
1. 启用基础日志记录
在 OpenVPN 配置文件(如 /etc/OpenVPN/server.conf
)中添加以下配置,即可启用日志记录功能:
log-append /var/log/openvpn.log verb 3
- log-append:指定日志文件路径。
- verb:设置日志详细级别(0~11),推荐使用 3 或 4 级别,既包含必要信息又不会过于冗余。
2. 查看日志内容示例
tail -f /var/log/openvpn.log
你可能会看到类似如下内容:
Tue Jun 17 23:51:25 2025 mac/59.58.241.32:50307 TLS: Initial packet from [AF_INET]59.58.241.32:50307 Tue Jun 17 23:51:25 2025 mac/59.58.241.32:50307 VERIFY OK: depth=1, CN=cn_SbC48kvvDiZmgbNy Tue Jun 17 23:51:25 2025 mac/59.58.241.32:50307 VERIFY OK: depth=0, CN=mac
这些信息显示了:
- 客户端证书 Common Name(CN)
- 客户端公网 IP 和端口
- 连接时间
- 认证状态等
三、记录客户端连接/断开日志(使用脚本)
为了更细粒度地记录每个客户端的连接和断开事件,我们可以使用 client-connect
和 client-disconnect
脚本。
1. 启用脚本支持
在 OpenVPN 配置文件中添加:(一般在/etc/openvpn/server.conf)
script-security 2 client-connect /etc/openvpn/scripts/connect.sh client-disconnect /etc/openvpn/scripts/disconnect.sh
2. 添加脚本:connect.sh(注意脚本存放路径为:/etc/openvpn/scripts/如果目录不存在则自行创建)
#!/bin/bash LOGDIR="/etc/openvpn/log" LOGFILE="$LOGDIR/connect.log" DATE=$(date +"%Y-%m-%d %H:%M:%S") CN="${common_name:-UNKNOWN_CN}" IP="${trusted_ip:-0.0.0.0}" PORT="${trusted_port:-0}" if [ ! -d "$LOGDIR" ]; then mkdir -p "$LOGDIR" chown nobody:nobody "$LOGDIR" chmod 750 "$LOGDIR" fi echo "$DATE - 账户 '$CN' 来自 IP='$IP:$PORT' , 内网分配 IP='$ifconfig_pool_remote_ip' , 系统类型: $IV_PLAT" >> "$LOGFILE" exit 0
3. 添加脚本:disconnect.sh(注意脚本存放路径为:/etc/openvpn/scripts/如果目录不存在则自行创建)
#!/bin/bash LOGDIR="/etc/openvpn/log" LOGFILE="$LOGDIR/disconnect.log" DATE=$(date +"%Y-%m-%d %H:%M:%S") CN="${common_name:-UNKNOWN_CN}" IP="${trusted_ip:-0.0.0.0}" PORT="${trusted_port:-0}" echo "$DATE - 账户 '$CN' 来自 IP='$IP:$PORT' , 内网分配 IP='$ifconfig_pool_remote_ip' , 系统类型: $IV_PLAT" >> "$LOGFILE" exit 0
4. 设置脚本权限
chmod +x /etc/openvpn/scripts/*.sh chown nobody:nobody /etc/openvpn/scripts/*.sh chown -R nobody:nobody /etc/openvpn/log/
重启服务后,你会在 /etc/openvpn/log/connect.log
和 /etc/openvpn/log/disconnect.log
中看到详细的连接记录。
四、结语
通过对 OpenVPN 的日志系统进行合理配置,结合脚本记录、环境变量提取和第三方工具分析,我们可以实现对客户端连接行为的有效追踪和管理。这不仅有助于运维排障,也能为网络安全提供有力支持。