AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 571592
Accepted
hamidfzm
hamidfzm
Asked: 2014-02-02 16:30:56 +0800 CST2014-02-02 16:30:56 +0800 CST 2014-02-02 16:30:56 +0800 CST

如何查看已连接用户打开vpn服务器?

  • 772

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

openvpn
  • 8 8 个回答
  • 279196 Views

8 个回答

  • Voted
  1. Best Answer
    c4urself
    2014-02-02T19:05:07+08:002014-02-02T19:05:07+08:00

    应该有一个您可以查看的状态日志向您展示,例如:

    cat /etc/openvpn/openvpn-status.log

    编辑:

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

    management localhost 7505

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

    telnet localhost 7505

    help

    • 110
  2. MichaelC
    2016-10-14T21:33:08+08:002016-10-14T21:33:08+08:00

    要完成@sekrett答案:

    killall -USR2 openvpn ; tail -f /var/log/syslog
    

    它会继续运行,这不是“常规”杀戮,只是打印一些统计数据的请求。

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

    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
    
    • 24
  3. Florent
    2016-05-05T02:24:29+08:002016-05-05T02:24:29+08:00

    我自己也有同样的需求,我发现最简单的解决方案是使用前面提到的 telnet 连接到管理界面(您必须在服务器配置文件中添加:管理 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
    
    • 寻找 => >CLIENT:ENV,n_clients=19361

    就我而言,由于我有大量客户端,因此使用日志文件绝对不是很实用。

    • 12
  4. perfecto25
    2019-07-23T08:44:17+08:002019-07-23T08:44:17+08:00

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

    添加到 /etc/openvpn/server.conf

    management 127.0.0.1 5555
    

    重启openvpn服务器

    systemctl restart [email protected]
    

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

    mkdir /opt/openvpn-monitor
    

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

    cd /opt/openvpn-monitor
    virtualenv venv
    source venv/bin/activate
    

    安装所需的软件包

    pip install openvpn-monitor gunicorn
    

    添加监视器配置文件

    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
    

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

    gunicorn openvpn-monitor -b 0.0.0.0:80 --name openvpn-monitor --daemon
    

    停止监控

    pkill gunicorn 
    

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

    http://<ip of openvpn server>
    

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

    在此处输入图像描述

    • 12
  5. sekrett
    2016-07-07T07:13:18+08:002016-07-07T07:13:18+08:00

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

    • 5
  6. BouncingSoles
    2018-08-18T07:11:35+08:002018-08-18T07:11:35+08:00

    只需将 sacli 与以下命令一起使用。这将列出已连接的 VPN 客户端。

    /usr/local/openvpn_as/scripts/sacli VPNSummary
    {
    "n_clients": 15
    }
    

    要查看所有 IP,请使用此选项。./sacli VPN状态

    • 2
  7. Andrija Jostergård
    2021-06-08T01:55:33+08:002021-06-08T01:55:33+08:00

    我制作了一个小脚本,可以进行一次检查,也可以设置为以指定的时间间隔进行监视。

    我认为这比监控 /etc/openvpn/openvpn-status.log 要好,因为这更新起来真的很慢。也许有一种方法可以在某些设置中调整间隔但是,我有时只需要监控 vpn 连接。不是 24/7。它也是一个相当混乱的日志。

    此脚本位于 OpenVPN 服务器上。仅在 Ubuntu 20.04 上测试

    一次运行即可:

    ./ovpn-activity.sh
    

    以 20 秒的间隔持续监控:

    ./ovpn-activity.sh view 20
    

    将此保存到 .sh 文件(例如烤箱活动.sh):

    确保更改 VPN 子网以匹配您的子网。

    #!/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
    

    毫无疑问还有改进的余地,但我不是脚本天才。我需要它来查看同事何时使用 VPN,以便我可以查看重启服务器是否安全。如果是这样,我可以看到谁在线并打电话给他们询问是否可以在不中断他们工作的情况下重新启动。

    • 0
  8. Parth Darji
    2022-06-28T06:56:13+08:002022-06-28T06:56:13+08:00

    嘿@perfecto25 我按照你的步骤托管 OpenVPN 监视器,它正在工作,但现在我很想在它上面再添加一个安全层。

    有没有办法将用户身份验证添加到 gunicorn 上托管的 OpenVPN 监控工具,因为它包含易受攻击的用户信息?

    • 0

相关问题

  • OpenVPN:在哪里生成私钥?

  • 将 iPhone 连接到 OpenVPN

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • 最好的点对点 VPN?

  • 通过 VPN 使您的打印机可用的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve