Como visualizar usuários conectados para abrir o servidor VPN?

59

Estou desenvolvendo um site para gerenciar usuários OpenVPN com o framework Django. Mas preciso saber se existe alguma maneira de extrair usuários ativos do OpenVPN? Meu servidor está executando o Ubuntu 12.04.

Hamid FzM
fonte

Respostas:

84

Deve haver um log de status que você possa ver para mostrar, por exemplo:

cat /etc/openvpn/openvpn-status.log

EDITAR:

Como alternativa, adicionar o sinalizador --management IP port [pw-file]ou a mesma diretiva ao seu server.conf, por exemplo:

management localhost 7505

Isso permitiria telnet para essa porta e ofereceria uma lista de comandos para executar:

telnet localhost 7505

help

c4urself
fonte
11
Obrigado, mas existe alguma outra maneira de não observar as alterações nos arquivos? Por exemplo, uma biblioteca que lista usuários conectados?
Hamid FzM
11
@HamidFzM não tem certeza sobre uma biblioteca, você pode usar a interface de gerenciamento que adicionei como edição; por favor, não use um outro IP do localhost como certamente seria um prejuízo para a sua segurança
c4urself
@ c4urself, minha saída para o .log é: bit.ly/1ORnsYp Onde posso ver os usuários conectados? É possível ver os ips atribuídos a eles através deste .log?
Maxim V. Pavlov
@ MaximV.Pavlov parece que ninguém está conectado no seu caso. Sim, os endereços IP são mostrados.
C4urself 12/08/2015
2
/etc/openvpn/openvpn-status.lognão funcionou para mim no Debian, nunca mudou; em vez disso /var/run/openvpn/server.status, funcionou perfeitamente.
Nelson
20

Para completar a resposta @sekrett :

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

Ele continuará funcionando, não é uma matança "regular", apenas uma solicitação para imprimir algumas estatísticas.

As estatísticas exibidas são muito legíveis. Saída de amostra:

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
fonte
Obrigado pela melhoria. Minha resposta estava certa, mas falta um exemplo e explicação. :)
sekrett
7

Eu mesmo tenho a mesma necessidade e a solução mais fácil que descobri foi usar o telnet mencionado para conectar-se à interface de gerenciamento (você precisará adicionar: management localhost 6666 , no arquivo de configuração do servidor).

Para obter o número exato de cliente, você pode:

  • telnet localhost 6666
  • status

Então você terá muitos logs:

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

No meu caso, como tenho um número muito grande de clientes, o uso do arquivo de log definitivamente não é muito prático.

Florent
fonte
seu comando de status ajudou-me, thx
Mohammed Noureldin
4

Você também pode enviar o sinal usr2 para o processo openvpn para fazer com que ele grave informações estatísticas no syslog. Isso é seguro, você não precisa reiniciar caso não tenha ativado a interface de gerenciamento antes.

sekrett
fonte
você pode escrever um comando para isso?
Shayan_Aryan
11
@MichaelC escreveu: killall -USR2 openvpn. Então assista os logs. Pode ser /var/log/syslogou /var/log/messagesdependendo da distribuição.
sekrett
mas não mata o openvpn?
21818 Shayan_Aryan
killcomando pode enviar sinais diferentes, USR2 não mata, é apenas um sinal. Você pode ver uma lista aqui: linux.org/threads/kill-signals-and-commands-revised.11625 ou executando kill -l.
22618 Sekrett
Eu apenas tentei. Ele não fornece a informação sobre clientes conectados, conte #
Shayan_Aryan
4

Eu gerencio os servidores OpenVPN de nossas empresas e a maneira como vejo as conexões ativas é assim,

adicione ao /etc/openvpn/server.conf

management 127.0.0.1 5555

reinicie o servidor openvpn

systemctl restart [email protected]

adicione um pacote Python do OpenVPN Monitor - ele será executado através de um servidor da web Gunicorn e mostrará conexões ativas,

mkdir /opt/openvpn-monitor

criar um ambiente virtual (não é necessário, mas é uma boa prática com pacotes py)

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

instalar pacotes necessários

pip install openvpn-monitor gunicorn

adicionar um arquivo de configuração do 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 o servidor web que mostrará conexões ativas,

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

Para parar o monitor

pkill gunicorn 

para ver as conexões ativas, acesse o IP público do seu servidor VPN

http://<ip of openvpn server>

certifique-se de configurar o firewall adequado para a porta 80, lista de permissões apenas IPs de entrada confiáveis

insira a descrição da imagem aqui

perfecto25
fonte
1

Basta usar sacli com o seguinte comando. Isso listará os clientes VPN conectados.

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

Para ver todos os IPs, use esta opção. ./sacli VPNStatus

BouncingSoles
fonte