我做了一些研究,似乎需要更多时间,而问题(看似)简单,可能需要遵循一些简单的确切步骤。
情况:openvpn 服务器正在使用证书进行身份验证。我将让多个客户端使用同一证书进行连接(选项已启用)。
问题:当它发生时,我只会在状态日志中看到许多类似的记录行,无法识别谁是谁。
问题:我可以在客户端配置中添加“选项用户名”——我应该在服务器和客户端中执行哪些步骤,以便客户端指示的用户名显示在状态日志中的“用户 ID”字段中,以便我可以区分连接?
这似乎没那么简单,因为据我所知,要使用户名“有效”,openvpn 服务器必须对其进行身份验证 - 这意味着服务器必须有用户和密码列表(我可以有空密码吗?),我可能无法设置任意用户名。而且这个用户名/密码必须是证书身份验证的补充,而不是代替...
编辑:
客户端 -第一行包含用户名,第二行包含auth-user-pass <filename>
密码<filename>
服务器端 -auth-user-pass-verify <script> <options>
脚本必须返回 0 以表示身份验证成功
编辑:
openvpn 在日志中不断说
daemon.err openvpn(login)[8992]: Options error: Unrecognized option or missing or extra parameter(s) in /etc/openvpn/login.conf:1: mylogin (2.5.3)
其中 login.conf 仅包含两行
mylogin
mypassword
因此由于某种原因,在互联网上找到的建议不起作用:(
编辑:
WTF 登录文件不应该命名为 .conf,因为 openvpn 认为它是它的配置文件!随便命名(.txt),但不要命名为 .conf!
解决方案:
服务器端:
- 添加到服务器配置
auth-user-pass-verify /etc/openvpn/verify.sh via-file
username-as-common-name
script-security 2
- 在服务器上创建
/etc/openvpn/verify.sh
以下内容:
#!/bin/sh
exit 0
- 授予
/etc/openvpn/verify.sh
权限 0777
客户端:
--auth-user-pass /etc/openvpn/login.txt
在启动 openvpn 的命令行中添加- 创建
/etc/openvpn/login.txt
并输入以下内容
username123
password456
/etc/openvpn/login.txt
授予openvpn 访问的权限。
最后你将在服务器上的状态文件中看到
CLIENT_LIST,username123,<ip:port>,<ip>,,...,...,<date>,<unixtime>,username123,0,0