OpenVPN证书认证模式下配置自定义用户名并在状态日志中显示的方案
OpenVPN证书认证模式下配置自定义用户名并在状态日志中显示的方案
我懂你现在的痛点——用证书认证的OpenVPN服务器,多个客户端用同一张证书连接时,日志里全是一样的条目根本分不清谁是谁。之前我也踩了好几个坑,现在给你整理出一套亲测有效的完整方案:
服务器端配置步骤
修改OpenVPN服务器配置文件,添加以下配置项:
auth-user-pass-verify /etc/openvpn/verify.sh via-file username-as-common-name script-security 2这里简单说下作用:
auth-user-pass-verify指定用来验证用户名密码的脚本,via-file表示客户端会把账号信息存在文件里发送给服务器username-as-common-name让服务器将客户端传递的自定义用户名当作通用名来显示,这样就能在日志里看到啦script-security 2允许OpenVPN执行外部脚本,这是运行验证脚本的前提
创建验证脚本
/etc/openvpn/verify.sh,因为我们只需要获取用户名不需要真的验证密码,所以脚本内容非常简单:#!/bin/sh exit 0给脚本添加可执行权限:
chmod 0777 /etc/openvpn/verify.sh
客户端配置步骤
启动OpenVPN客户端时,在命令行添加如下参数:
--auth-user-pass /etc/openvpn/login.txt创建登录信息文件
/etc/openvpn/login.txt,第一行填你想要显示的自定义用户名,第二行随便填个密码就行(服务器不会验证这个密码):username123 password456最后给这个文件设置合适的权限,确保OpenVPN进程能够正常读取它。
避坑提醒
之前踩过一个大坑:如果把登录文件命名成 .conf 后缀(比如 login.conf),OpenVPN会直接把它当成自身的配置文件解析,然后报 Options error: Unrecognized option or missing or extra parameter(s) 错误!所以登录文件一定要用 .txt 或者其他非 .conf 的后缀,别犯我同样的错~
配置完成后,去看服务器的状态日志,你就能在 CLIENT_LIST 条目里看到自定义的用户名了,类似这样:
CLIENT_LIST,username123,<ip:port>,<ip>,,...,...,<date>,<unixtime>,username123,0,0
备注:内容来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

