如何查看连接的用户打开VPN服务器?

ham*_*fzm 76 openvpn

我正在开发一个使用 Django 框架管理 OpenVPN 用户的网站。但我需要知道有没有办法从 OpenVPN 中提取活跃用户?我的服务器运行的是 Ubuntu 12.04。

c4u*_*elf 104

应该有一个状态日志,您可以查看以显示给您,我的是,例如:

cat /etc/openvpn/openvpn-status.log

编辑:

作为替代方案,添加标志--management IP port [pw-file]或将相同的指令添加到您的server.conf,例如:

management localhost 7505

这将允许您 telnet 到该端口并为您提供要运行的命令列表:

telnet localhost 7505

help

  • `/etc/openvpn/openvpn-status.log` 在 Debian 上对我不起作用,它从未改变,相反,`/var/run/openvpn/server.status` 确实工作得很好。 (3认同)
  • 在 Ubuntu 20.04 中,路径为 `/var/log/openvpn/openvpn-status.log` (2认同)

小智 23

要完成@sekrett答案:

killall -USR2 openvpn ; tail -f /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

它将继续运行,这不是“常规”杀死,只是打印一些统计信息的请求。

显示的统计数据非常易读。示例输出:

Oct 14 07:34:14 vpn2 openvpn[20959]: Updated,Fri Oct 14 07:34:14 2016
Oct 14 07:34:14 vpn2 openvpn[20959]: Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.132,hostname1,213.219.XXX.XXX:63765,Fri Oct 14 07:25:01 2016
Oct 14 07:26:26 vpn2 openvpn[20959]:
10.8.0.242,hostname2,213.219.XXX.XXX:62416,Sun Sep 25 03:49:19 2016
Run Code Online (Sandbox Code Playgroud)


Flo*_*ent 11

我自己也有同样的需求,我发现的最简单的解决方案是使用上述 telnet 连接到管理界面(您必须在服务器配置文件中添加:management localhost 6666)。

要获得确切的客户数量,您可以执行以下操作:

  • 远程登录本地主机 6666
  • 地位

然后你会得到很多日志:

10.9.10.11,test-docker,52.58.48.98:56859,Wed May  4 09:37:34 2016
10.9.7.45,test-docker,52.58.156.80:38774,Wed May  4 09:36:59 2016
10.9.1.103,test-docker,52.58.161.230:52201,Wed May  4 09:35:47 2016
GLOBAL STATS
Max bcast/mcast queue length,0
END
>CLIENT:ESTABLISHED,19845
>CLIENT:ENV,n_clients=19361
>CLIENT:ENV,time_unix=1462357164
Run Code Online (Sandbox Code Playgroud)
  • 寻找 => >CLIENT:ENV,n_clients=19361

就我而言,由于我有非常多的客户端,使用日志文件绝对不是很实用。


小智 10

我管理我们公司的 OpenVPN 服务器,我看到活动连接的方式是这样的,

添加到/etc/openvpn/server.conf

management 127.0.0.1 5555
Run Code Online (Sandbox Code Playgroud)

重启 openvpn 服务器

systemctl restart openvpn@server.service
Run Code Online (Sandbox Code Playgroud)

添加 OpenVPN Monitor Python 包 - 这将通过 Gunicorn Web 服务器运行并显示活动连接,

mkdir /opt/openvpn-monitor
Run Code Online (Sandbox Code Playgroud)

创建一个虚拟环境(不是必需的,但是使用 py 包的好习惯)

cd /opt/openvpn-monitor
virtualenv venv
source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

安装所需的包

pip install openvpn-monitor gunicorn
Run Code Online (Sandbox Code Playgroud)

添加监视器配置文件

vi /opt/openvpn-monitor/openvpn-monitor.conf

[openvpn-monitor]
site=your-openvpn-site
#logo=logo.jpg
#latitude=40.72
#longitude=-74
maps=True
geoip_data=/var/lib/GeoIP/GeoLite2-City.mmdb
datetime_format=%d/%m/%Y %H:%M:%S

[VPN1]
host=localhost
port=
name=Your VPN Server Name
show_disconnect=False
Run Code Online (Sandbox Code Playgroud)

启动将显示活动连接的 Web 服务器,

gunicorn openvpn-monitor -b 0.0.0.0:80 --name openvpn-monitor --daemon
Run Code Online (Sandbox Code Playgroud)

停止监听

pkill gunicorn 
Run Code Online (Sandbox Code Playgroud)

要查看活动连接,请转到 VPN 服务器的公共 IP

http://<ip of openvpn server>
Run Code Online (Sandbox Code Playgroud)

确保为端口 80 配置适当的防火墙,仅将受信任的入站 IP 列入白名单

在此处输入图片说明


sek*_*ett 5

您还可以向 openvpn 进程发送 usr2 信号,使其将统计信息写入 syslog。这是安全的,如果您之前没有启用管理界面,则无需重新启动。

  • `kill` 命令可以发送不同的信号,USR2 不会杀死,它只是一个信号。您可以在此处查看列表:https://www.linux.org/threads/kill-signals-and-commands-revised.11625/ 或运行 `kill -l`。 (2认同)