Statistiques OpenVPN automatiques

Je suis un grand fan d’OpenVPN pour avoir un accès complet à internet lorsque celà n’est pas possible avec la connexion que j’utilise. Quand je me déplace avec mon portable j’ai souvent à passer par des proxys en tout genre, avec ou sans authentification (voir pire… avec authentification NTLM…) et c’est là qu’OpenVPN est vraiment indispensable.

Ma configuration marche tellement bien que plusieurs personnes de mon entourage m’ont demandé des accès. Mais j’ai rapidement eu envie de surveiller la consommation relative à OpenVPN ainsi que les utilisateurs connectés à un instant T.

OpenVPN ne facilite pas vraiment la tâche pour récupérer des informations. Elles sont de plus très minimales. Deux moyens sont possibles : envoyer un signal SIGUSR2 au processus OpenVPN ou consulter le fichier défini par l’option status dans la configuration du serveur.

La solution la plus simple que j’ai trouvé est de réaliser un petit script qui parcourt le ou les fichiers de configuration d’OpenVPN (pour ma part deux instances fonctionnent donc j’ai deux fichiers à analyser). Ce script est écrit en Perl et génère une page HTML classique contenant un tableau avec des informations comme le nom de l’utilisateur, son adresse IP source, son adresse IP virtuelle, les quantités de données envoyées et reçues et enfin le temps de connexion.

Je l’utilise dans un cronjob qui réécrit la page en question toutes les minutes.

Pour l’utiliser :

openvpnstatus.pl fichier_log1 [fichier_log2...] > webpage.html

Il permet d’utiliser des en-têtes et pieds de page personnalisés. Il faut positionner les variables header et footer.

Voici le script openvpnstatus.pl.

Laisser un commentaire

Vous devez être connecté pour laisser un commentaire.