Jak wyświetlić połączonych użytkowników, aby otworzyć serwer VPN?


59

Zajmuję się tworzeniem strony internetowej do zarządzania użytkownikami OpenVPN z frameworkiem Django. Ale muszę wiedzieć, czy jest jakiś sposób na wyodrębnienie aktywnych użytkowników z OpenVPN? Na moim serwerze działa Ubuntu 12.04.

Odpowiedzi:


84

Powinien istnieć dziennik stanu, na który można spojrzeć, na przykład mój:

cat /etc/openvpn/openvpn-status.log

EDYTOWAĆ:

Alternatywnie, dodanie flagi --management IP port [pw-file]lub dodanie tej samej dyrektywy do server.conf, na przykład:

management localhost 7505

Pozwoliłoby to na telnet do tego portu i zaoferowanie listy poleceń do uruchomienia:

telnet localhost 7505

help


1
Dzięki, ale czy jest jakiś inny sposób, aby nie patrzeć na zmiany plików? Na przykład biblioteka z listą podłączonych użytkowników?
Hamid FzM

1
@HamidFzM nie jestem pewien co do biblioteki, możesz użyć interfejsu zarządzania dodanego jako edycja; nie używaj adresu IP innego niż localhost, ponieważ z pewnością zaszkodziłby twojemu bezpieczeństwu
c4urself

@ c4urself, moje dane wyjściowe do .log to: bit.ly/1ORnsYp Gdzie mogę zobaczyć podłączonych użytkowników? Czy to możliwe, aby zobaczyć IP przypisane do nich za pośrednictwem tego .log?
Maxim V. Pavlov

@ MaximV.Pavlov wygląda na to, że nikt nie jest połączony w twoim przypadku. Tak, adresy IP są wyświetlane.
c4urself

2
/etc/openvpn/openvpn-status.lognie działało dla mnie w Debianie, nigdy się nie zmieniło, zamiast tego /var/run/openvpn/server.statusdziałało idealnie.
Nelson

20

Aby wypełnić odpowiedź @sekrett :

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

Będzie działał, nie jest to „zwykłe” zabójstwo, tylko prośba o wydrukowanie niektórych statystyk.

Wyświetlane statystyki są bardzo czytelne. Przykładowe dane wyjściowe:

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

Dzięki za poprawę. Moja odpowiedź była słuszna, ale brakuje w niej przykładu i wyjaśnienia. :)
sekrett

7

Sam dostałem tę samą potrzebę i najprostszym rozwiązaniem, jakie znalazłem, było użycie wspomnianego telnetu do połączenia z interfejsem zarządzania (musisz dodać: zarządzanie localhost 6666 , w pliku konfiguracyjnym serwera).

Aby uzyskać dokładną liczbę klientów, możesz:

  • telnet localhost 6666
  • status

Otrzymasz wiele dzienników:

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
  • poszukaj =>> KLIENT: ENV, n_clients = 19361

W moim przypadku, ponieważ mam bardzo dużą liczbę klientów, korzystanie z pliku dziennika jest zdecydowanie mało praktyczne.


twoje polecenie statusu pomogło mi, dzięki
Mohammed Noureldin

4

Możesz również wysłać sygnał usr2 do procesu openvpn, aby zapisał informacje statystyczne do syslog. Jest to bezpieczne, nie trzeba restartować, jeśli wcześniej nie włączano interfejsu zarządzania.


czy możesz napisać komendę w tym celu?
Shayan_Aryan

1
@MichaelC napisał: killall -USR2 openvpn. Następnie obserwuj dzienniki. Może być /var/log/sysloglub /var/log/messageszależy od dystrybucji.
sekrett

ale to nie zabija openvpn?
Shayan_Aryan

killpolecenie może wysyłać różne sygnały, USR2 nie zabije, to tylko sygnał. Możesz zobaczyć listę tutaj: linux.org/threads/kill-signals-and-commands-revised.11625 lub przez uruchomienie kill -l.
sekrett

Właśnie tego spróbowałem. Nie podaje informacji o liczbie połączonych klientów
Shayan_Aryan

3

Zarządzam serwerami OpenVPN naszej firmy i tak widzę aktywne połączenia,

dodaj do /etc/openvpn/server.conf

management 127.0.0.1 5555

zrestartuj serwer openvpn

systemctl restart openvpn@server.service

dodaj pakiet Python Monitor OpenVPN - będzie on działał przez serwer WWW Gunicorn i pokazywał aktywne połączenia,

mkdir /opt/openvpn-monitor

stworzyć wirtualną env (niewymagane, ale dobra praktyka z pakietami py)

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

zainstaluj wymagane pakiety

pip install openvpn-monitor gunicorn

dodaj plik konfiguracyjny Monitora

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

uruchom serwer WWW, który pokaże aktywne połączenia,

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

Aby zatrzymać monitor

pkill gunicorn 

aby zobaczyć aktywne połączenia, przejdź do publicznego adresu IP swojego serwera VPN

http://<ip of openvpn server>

upewnij się, że skonfigurowałeś właściwą zaporę dla portu 80, biała lista tylko zaufanych przychodzących adresów IP

wprowadź opis zdjęcia tutaj


1

Wystarczy użyć sacli z następującą komendą. Spowoduje to wyświetlenie listy podłączonych klientów VPN.

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

Aby zobaczyć wszystkie adresy IP, użyj tej opcji. ./sacli VPNStatus

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.