86 votes

Comment voir les utilisateurs connectés à un serveur vpn ouvert ?

Je développe un site web pour gérer les utilisateurs d'OpenVPN avec le framework Django. Mais j'ai besoin de savoir s'il existe un moyen d'extraire les utilisateurs actifs d'OpenVPN ? Mon serveur fonctionne sous Ubuntu 12.04.

2voto

BouncingSoles Points 29

Il suffit d'utiliser sacli avec la commande suivante. Cela donnera la liste des clients VPN connectés.

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

Pour voir toutes les IPs, utilisez cette option. ./sacli VPNStatus

0voto

J'ai fait un petit script qui peut soit faire une vérification unique ou être configuré pour continuer à surveiller avec des intervalles spécifiés.

Je pense que c'est mieux que de surveiller le fichier /etc/openvpn/openvpn-status.log car il est très lent à mettre à jour. Il y a peut-être un moyen d'ajuster les intervalles dans certains paramètres MAIS, je n'ai besoin de surveiller les connexions vpn que de temps en temps. Pas 24 heures sur 24, 7 jours sur 7. De plus, c'est un journal assez désordonné.

Ce script est sur le serveur OpenVPN. Testé uniquement sur Ubuntu 20.04

Un seul passage suffit :

./ovpn-activity.sh

Pour garder le contrôle avec un intervalle de 20 secondes :

./ovpn-activity.sh view 20

Enregistrez le tout dans un fichier .sh (exemple : oven-activity.sh) :

Veillez à modifier le sous-réseau VPN pour qu'il corresponde au vôtre.

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

Il y a sans doute des améliorations possibles, mais je ne suis pas un script. J'en avais besoin pour voir quand les collègues utilisaient le VPN afin de voir s'il était sûr de redémarrer le serveur. Et si oui, je pouvais voir qui était en ligne et les appeler pour leur demander si c'était ok pour redémarrer sans interrompre leur travail.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X