¿Cómo ver los usuarios conectados para abrir el servidor VPN?

59

Estoy desarrollando un sitio web para administrar usuarios de OpenVPN con el marco Django. Pero necesito saber, ¿hay alguna forma de extraer usuarios activos de OpenVPN? Mi servidor ejecuta Ubuntu 12.04.

Hamid FzM
fuente

Respuestas:

84

Debe haber un registro de estado que pueda ver para mostrarle, el mío es, por ejemplo:

cat /etc/openvpn/openvpn-status.log

EDITAR:

Como alternativa, agregar la bandera --management IP port [pw-file]o la misma directiva a su server.conf, por ejemplo:

management localhost 7505

Esto le permitiría hacer telnet a ese puerto y ofrecerle una lista de comandos para ejecutar:

telnet localhost 7505

help

c4urself
fuente
1
Gracias, pero ¿hay alguna otra manera de no observar los cambios de archivos? Por ejemplo, una biblioteca que enumera los usuarios conectados?
Hamid FzM
1
@HamidFzM no está seguro acerca de una biblioteca, puede usar la interfaz de administración que agregué como edición; por favor, no use una IP que no sea localhost ya que seguramente sería en detrimento de su seguridad
c4urself
@ c4urself, mi salida para .log es: bit.ly/1ORnsYp ¿Dónde puedo ver a los usuarios conectados? ¿Es posible ver los ips asignados a ellos a través de este .log?
Maxim V. Pavlov
@ MaximV.Pavlov parece que nadie está conectado en su caso. Sí, se muestran las direcciones IP.
c4urself
2
/etc/openvpn/openvpn-status.logno funcionó para mí en Debian, nunca cambió, en cambio /var/run/openvpn/server.statusfuncionó perfectamente.
Nelson
20

Para completar la respuesta de @sekrett :

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

Seguirá ejecutándose, no es un asesinato "normal", solo una solicitud para imprimir algunas estadísticas.

Las estadísticas mostradas son muy legibles. Salida de muestra:

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
fuente
Gracias por mejorar Mi respuesta fue correcta pero carece de un ejemplo y una explicación. :)
sekrett
7

Tengo la misma necesidad y la solución más fácil que descubrí fue usar el telnet mencionado para conectarme a la interfaz de administración (deberá agregar: localhost 6666 de administración , en el archivo de configuración del servidor).

Para obtener el número exacto de clientes que puede hacer:

  • telnet localhost 6666
  • estado

Entonces obtendrás muchos registros:

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
  • busque =>> CLIENTE: ENV, n_clients = 19361

En mi caso, dado que tengo una gran cantidad de clientes, usar el archivo de registro definitivamente no es muy práctico.

Florent
fuente
su comando de estado me ayudó, gracias
Mohammed Noureldin
4

También puede enviar la señal usr2 al proceso openvpn para que escriba información estadística en syslog. Esto es seguro, no necesita reiniciar en caso de que no haya habilitado la interfaz de administración antes.

sekrett
fuente
¿Puedes escribir un comando para esto?
Shayan_Aryan
1
@MichaelC escribió: killall -USR2 openvpn. Entonces mire los registros. Puede ser /var/log/syslogo /var/log/messagesdepende de la distribución.
sekrett
pero no mata a openvpn?
Shayan_Aryan
killEl comando puede enviar diferentes señales, USR2 no matará, es solo una señal. Puede ver una lista aquí: linux.org/threads/kill-signals-and-commands-revised.11625 o ejecutándose kill -l.
sekrett
Solo lo intenté. No da la información sobre el recuento de clientes conectados
Shayan_Aryan
4

Administro los servidores OpenVPN de nuestra empresa y la forma en que veo las conexiones activas es así,

agregar a /etc/openvpn/server.conf

management 127.0.0.1 5555

reiniciar el servidor openvpn

systemctl restart [email protected]

agregue un paquete OpenVPN Monitor Python: esto se ejecutará a través de un servidor web Gunicorn y mostrará conexiones activas,

mkdir /opt/openvpn-monitor

crear un entorno virtual (no es obligatorio pero es una buena práctica con los paquetes py)

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

instalar paquetes requeridos

pip install openvpn-monitor gunicorn

agregar un archivo de configuración de Monitor

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

inicie el servidor web que mostrará conexiones activas,

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

Para detener el monitor

pkill gunicorn 

Para ver las conexiones activas, vaya a la IP pública de su servidor VPN

http://<ip of openvpn server>

asegúrese de configurar el firewall adecuado para el puerto 80, la lista blanca solo incluye IP entrantes de confianza

ingrese la descripción de la imagen aquí

perfecto25
fuente
1

Simplemente use sacli con el siguiente comando. Esto enumerará los clientes VPN conectados.

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

Para ver todas las IP use esta opción. ./sacli VPNStatus

BouncingSoles
fuente