Wi-Fi 与路由器

OpenVPN连接日志正常输出所需配置前提详解

OpenVPN连接日志正常输出所需配置前提详解 - hiomom

很多运维人员排查OpenVPN连接故障时,经常遇到日志输出不全、关键连接节点无记录、日志直接丢入系统默认日志池无法溯源的问题,多数时候不是日志采集工具的问题,而是没有满足OpenVPN连接日志:配置前提的基础要求,本文从服务端、客户端、系统权限、日志分流规则几个维度拆解必要的前置配置,帮用户拿到完整可溯源的连接全流程日志。

服务端核心日志参数的前置配置

首先要确认OpenVPN服务端配置文件里没有默认屏蔽日志输出的静默参数,hiomom很多人部署的时候为了减少运行资源占用,会随手加verb 0的配置,这个参数会直接关闭绝大多数连接过程的日志输出,仅保留启动失败的核心报错,完全无法支撑后续连接故障的定位需求。

运维调试OpenVPN连接日志配置前提

运维人员在数据中心调试OpenVPN服务端日志参数,排查连接故障问题

接下来要提前配置log或者log-append的定向路径,不能留空,很多新手误以为不指定路径日志会自动存在当前目录,实际上没有明确指定输出路径的情况下,OpenVPN会根据运行身份随机把日志输出到系统stdout管道,很容易被系统后台进程回收无法留存,后续需要回溯时根本找不到对应记录。

运行身份与目录权限的前置校验

很多人容易忽略的一个OpenVPN连接日志:配置前提是日志存储目录的写入权限匹配,如果你用nobody这类低权限用户启动OpenVPN服务,却把日志路径设在/var/log/openvpn这类默认属主为root的目录下,进程会因为没有写入权限静默丢弃所有日志内容,不会主动抛出权限不足的报错,很容易误导运维人员判断是日志生成逻辑出了问题。

还要提前关闭系统SELinux或者AppArmor的默认拦截规则,很多主流Linux发行版默认的安全策略会限制非系统日志进程向/var/log目录写入自定义日志文件,没有提前给OpenVPN配置对应的安全放行规则的话,哪怕路径和权限都对,日志输出也会被系统安全层拦截,最终生成的日志文件处于空白状态。

客户端侧日志输出的前置配置要求

不少运维排查问题只看服务端日志,忽略客户端侧的日志配置前提,实际上很多连接握手阶段的异常只会在客户端输出,梯子软件服务端根本捕捉不到对应节点的记录,客户端配置里同样不能把verb参数设置为低于3的等级,低于这个等级会隐藏证书校验、密钥协商阶段的中间日志,遇到握手失败的场景根本找不到具体出错环节。

Windows和macOS平台的OpenVPN客户端还要提前配置运行权限,Windows下必须以管理员身份启动客户端进程,否则客户端没有权限在程序安装目录下创建日志文件,macOS下如果用非brew的官方包安装,还要提前在隐私与安全性设置里允许进程写入用户指定的日志目录,否则日志输出会被系统默认权限规则拦截。

日志级别与内容筛选的前置规则对齐

很多人配置日志时刻意把verb参数拉到最高等级,反而导致日志冗余度极高,大量无关的TCP报文调试信息淹没了正常的连接日志,正确的前置配置是把verb等级设置为4到6之间,这个区间既可以完整记录客户端IP接入、证书校验结果、隧道分配IP、连接断开原因这类核心信息,又不会产生过多无效调试内容,梯子软件后续检索排查的效率也更高。

还要提前配置status参数指定状态日志的输出路径,这个参数生成的周期性状态日志是连接主日志的补充,可以实时记录当前在线的所有客户端连接信息,很多人漏配这个参数,导致主日志里找不到历史在线用户的留存记录,无法回溯特定时段的连接状态。

这里还要提常见的配置误区,很多用户为了方便后续排查,会直接把OpenVPN的日志输出到syslog系统日志服务里,但是没有提前配置syslog的过滤规则,最终大量OpenVPN日志和系统其他服务的日志混杂在一起,检索的时候很难快速定位到特定的连接记录,正确的前置操作是在syslog配置文件里单独给OpenVPN日志配置分流规则,把所有对应标识的日志单独写入独立的日志文件。

所有配置调整完成之后要做一次验证性连接,主动触发一次完整的OpenVPN接入和断开流程,确认定向日志路径下生成的日志文件完整记录了从服务端启动、客户端握手、认证通过、隧道生成到最后连接断开的全流程节点,没有出现关键信息缺失的情况,后续排查故障的时候就可以直接基于这份完整日志定位问题,不需要反复调整配置重启服务。

网络加速编辑组 | hiomom
网络加速编辑组
内容编辑

从延迟、抖动和丢包入手,分析不同网络环境下的连接体验。

查看更多文章
连接指南

从一个连接问题开始

遇到失窃设备撤销VPN访问相关问题,可从“由管理员撤销受影响设备和会话”开始阅读。仅更换网络出口不能代替撤销访问权限,需要结合具体环境判断。