Wie können verbundene Benutzer zum Öffnen des VPN-Servers angezeigt werden?


59

Ich entwickle eine Website zum Verwalten von OpenVPN-Benutzern mit dem Django-Framework. Aber ich muss wissen, ob es eine Möglichkeit gibt, aktive Benutzer aus OpenVPN zu extrahieren. Auf meinem Server läuft Ubuntu 12.04.

Antworten:


84

Es sollte ein Statusprotokoll geben, das Sie einsehen können, um anzuzeigen, dass es sich bei meinem um Folgendes handelt:

cat /etc/openvpn/openvpn-status.log

BEARBEITEN:

Alternativ können Sie das Flag --management IP port [pw-file]hinzufügen oder dieselbe Direktive zu Ihrem hinzufügen server.conf, zum Beispiel:

management localhost 7505

Auf diese Weise können Sie eine Telnet-Verbindung zu diesem Port herstellen und eine Liste der auszuführenden Befehle anzeigen:

telnet localhost 7505

help


1
Danke, aber gibt es eine andere Möglichkeit, nicht auf Dateiänderungen zu achten? Zum Beispiel eine Bibliothek, die verbundene Benutzer auflistet?
Hamid FzM

1
@ HamidFzM nicht sicher über eine Bibliothek, können Sie die Verwaltungsoberfläche verwenden, die ich als Bearbeitung hinzugefügt habe; Bitte verwenden Sie keine andere IP als localhost, da dies sicherlich Ihre Sicherheit beeinträchtigen würde
c4urself

@ c4urself, meine Ausgabe für das .log ist: bit.ly/1ORnsYp Wo kann ich die verbundenen Benutzer sehen? Ist es möglich, die ihnen zugewiesenen IPS über dieses .log zu sehen?
Maxim V. Pavlov

@ MaximV.Pavlov sieht so aus, als wäre in deinem Fall niemand verbunden. Ja, IP-Adressen werden angezeigt.
c4urself

2
/etc/openvpn/openvpn-status.loghat bei mir unter Debian nicht funktioniert, es hat sich nie geändert, stattdessen /var/run/openvpn/server.statushat es perfekt funktioniert.
Nelson

20

Um die Antwort von @sekrett zu vervollständigen :

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

Es läuft weiter, es ist kein "normaler" Kill, nur eine Aufforderung, einige Statistiken auszudrucken.

Angezeigte Statistiken sind sehr gut lesbar. Beispielausgabe:

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

Danke für die Verbesserung. Meine Antwort war richtig, aber es fehlt ein Beispiel und eine Erklärung. :)
Sekrett

7

Ich habe das gleiche Bedürfnis selbst und die einfachste Lösung, die ich herausgefunden habe, war, wie erwähnt Telnet zu verwenden, um eine Verbindung zur Verwaltungsschnittstelle herzustellen (Sie müssen hinzufügen: management localhost 6666 , in der Serverkonfigurationsdatei).

So ermitteln Sie die genaue Anzahl der Clients:

  • telnet localhost 6666
  • Status

Dann erhalten Sie viele Protokolle:

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
  • Suchen Sie nach =>> CLIENT: ENV, n_clients = 19361

In meinem Fall, da ich eine sehr große Anzahl von Clients habe, ist die Verwendung der Protokolldatei definitiv nicht sehr praktisch.


Ihr Statusbefehl hat mir geholfen, thx
Mohammed Noureldin

4

Sie können auch ein usr2-Signal an den openvpn-Prozess senden, damit er statistische Informationen in das Syslog schreibt. Dies ist sicher, Sie müssen nicht neu starten, wenn Sie die Verwaltungsschnittstelle zuvor nicht aktiviert haben.


kannst du dazu einen befehl schreiben
Shayan_Aryan

1
@MichaelC schrieb sie: killall -USR2 openvpn. Dann schau dir die Protokolle an. Es kann /var/log/syslogoder /var/log/messagesabhängig von der Distribution sein.
Sekrett

aber es tötet nicht openvpn?
Shayan_Aryan

killBefehl kann verschiedene Signale senden, USR2 wird nicht töten, es ist nur ein Signal. Sie können eine Liste hier anzeigen : linux.org/threads/kill-signals-and-commands-revised.11625 oder indem Sie ausführenkill -l .
Sekrett

Ich habe es einfach versucht. Es gibt nicht die Informationen über verbundene Kunden zählen
Shayan_Aryan

4

Ich verwalte die OpenVPN-Server unseres Unternehmens und sehe aktive Verbindungen folgendermaßen:

Fügen Sie /etc/openvpn/server.conf hinzu

management 127.0.0.1 5555

Starten Sie den OpenVPN-Server neu

systemctl restart openvpn@server.service

Hinzufügen eines OpenVPN Monitor Python-Pakets - dieses wird über einen Gunicorn-Webserver ausgeführt und zeigt aktive Verbindungen an.

mkdir /opt/openvpn-monitor

Erstellen Sie eine virtuelle Umgebung (nicht erforderlich, aber gute Praxis mit Py-Paketen)

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

Installieren Sie die erforderlichen Pakete

pip install openvpn-monitor gunicorn

Fügen Sie eine Monitor-Konfigurationsdatei hinzu

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

Starten Sie den Webserver, auf dem aktive Verbindungen angezeigt werden.

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

Monitor anhalten

pkill gunicorn 

Um aktive Verbindungen anzuzeigen, rufen Sie die öffentliche IP-Adresse Ihres VPN-Servers auf

http://<ip of openvpn server>

Stellen Sie sicher, dass die richtige Firewall für Port 80 konfiguriert ist, und listen Sie nur vertrauenswürdige eingehende IPs auf

Bildbeschreibung hier eingeben


1

Verwenden Sie einfach sacli mit dem folgenden Befehl. Dadurch werden die verbundenen VPN-Clients aufgelistet.

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

Verwenden Sie diese Option, um alle IP-Adressen anzuzeigen. ./sacli VPNStatus

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.