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.

Hamid FzM
źródło

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

c4urself
źródło
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
MichaelC
źródło
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.

Florent
źródło
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.

sekrett
źródło
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 [email protected]

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

perfecto25
źródło
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

BouncingSoles
źródło