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
#!/bin/bash
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# MODIFY this to match your network
vpn_network="0.0.0.0/24"
####### FUNCTIONS ########
act_check () {
sudo echo "looking for active clients"
#Look for Virtual IPs that are online and save them.
activeIPs=$(fping -ag "$vpn_network")
i=0
for ip in $activeIPs; do
if [[ $i -eq 0 ]]
then
i=$i+1
continue
fi
echo " -- Active --"
echo "| "$(sudo grep '/.*Learn: '$ip /var/log/openvpn.log | head -1 | sed 's/\/.*$//')
echo "| ip: $ip"
echo " ------------"
echo " "
done
}
##########################
if [ "$1" = "view" ] ; then
echo "view is set"
if [ -z "$2" ] ; then
watch "$SCRIPT_DIR""/ovpn-activity"
else
watch -n $2 "$SCRIPT_DIR""/ovpn-activity"
fi
else
act_check
fi
exit 0
应该有一个您可以查看的状态日志向您展示,例如:
cat /etc/openvpn/openvpn-status.log
编辑:
作为替代方案,添加标志
--management IP port [pw-file]
或将相同的指令添加到您的server.conf
,例如:management localhost 7505
这将允许您远程登录到该端口并为您提供要运行的命令列表:
telnet localhost 7505
help
要完成@sekrett答案:
它会继续运行,这不是“常规”杀戮,只是打印一些统计数据的请求。
显示的统计数据非常易读。样本输出:
我自己也有同样的需求,我发现最简单的解决方案是使用前面提到的 telnet 连接到管理界面(您必须在服务器配置文件中添加:管理 localhost 6666)。
要获得确切的客户数量,您可以执行以下操作:
然后你会得到很多日志:
就我而言,由于我有大量客户端,因此使用日志文件绝对不是很实用。
我管理我们公司的 OpenVPN 服务器,我看到活动连接的方式是这样的,
添加到 /etc/openvpn/server.conf
重启openvpn服务器
添加一个 OpenVPN Monitor Python 包 - 这将通过 Gunicorn Web 服务器运行并显示活动连接,
创建一个虚拟环境(不是必需的,但使用 py 包的良好做法)
安装所需的软件包
添加监视器配置文件
启动将显示活动连接的 Web 服务器,
停止监控
要查看活动连接,请转到 VPN 服务器的公共 IP
确保为端口 80 配置适当的防火墙,仅将受信任的入站 IP 列入白名单
您还可以向 openvpn 进程发送 usr2 信号,使其将统计信息写入 syslog。这是安全的,如果您之前没有启用管理界面,则无需重新启动。
只需将 sacli 与以下命令一起使用。这将列出已连接的 VPN 客户端。
要查看所有 IP,请使用此选项。./sacli VPN状态
我制作了一个小脚本,可以进行一次检查,也可以设置为以指定的时间间隔进行监视。
我认为这比监控 /etc/openvpn/openvpn-status.log 要好,因为这更新起来真的很慢。也许有一种方法可以在某些设置中调整间隔但是,我有时只需要监控 vpn 连接。不是 24/7。它也是一个相当混乱的日志。
此脚本位于 OpenVPN 服务器上。仅在 Ubuntu 20.04 上测试
一次运行即可:
以 20 秒的间隔持续监控:
将此保存到 .sh 文件(例如烤箱活动.sh):
确保更改 VPN 子网以匹配您的子网。
毫无疑问还有改进的余地,但我不是脚本天才。我需要它来查看同事何时使用 VPN,以便我可以查看重启服务器是否安全。如果是这样,我可以看到谁在线并打电话给他们询问是否可以在不中断他们工作的情况下重新启动。
嘿@perfecto25 我按照你的步骤托管 OpenVPN 监视器,它正在工作,但现在我很想在它上面再添加一个安全层。
有没有办法将用户身份验证添加到 gunicorn 上托管的 OpenVPN 监控工具,因为它包含易受攻击的用户信息?