OpenVPN e scripts de conexão do cliente

2

Eu tenho um servidor OpenVPN (2.3.2) no Debian Wheezy operando em modo de ponte. Tudo está funcionando bem em termos de conexão do cliente e acesso à (s) rede (s) de que ele precisa. Eu estou tentando adicionar alguns sinos e assobios através do uso da opção de conexão do cliente. Esta é a parte pertinente do arquivo de configuração openvpn:

script-security 3 system
client-connect /etc/openvpn/scripts/clientconnect.sh

Em uma tentativa de verificar se o script é realmente executado, clientconnect.sh consiste nisso:

#!/bin/bash
echo "testing">>/etc/openvpn/scripts/test
exit 0

Simples o suficiente.

Se eu executar o script a partir da linha de comando, como "teste" esperado é anexado para / etc / openvpn / scripts / test todas as vezes e 0 retornado.

Quando me conecto com meu cliente, recebo um "teste" / etc / openvpn / scripts / test. Ótimo!

Mas quando eu me desconecto e me conecto novamente, não obtenho outro "teste"

Então, para verificar se o seu está sendo executado, alterei o valor de saída em clientconnect.sh para 1

com certeza, todas tentativas de conexão do cliente falharam porque o script retorna um valor diferente de 0.

Por que parece que o script não está sendo executado?

BTW, se eu reiniciar o serviço openvpn no servidor, obtenho "teste" uma vez mais, mas mais uma vez, nada é escrito em conexões subseqüentes.

Todos os ponteiros / Ajuda / Encantamentos Místicos são recebidos com gratidão! Dylan

    
por GeoSword 13.11.2015 / 18:52

1 resposta

2

O OpenVPN é feito para ser muito resiliente a interrupções de rede (e realmente se destaca), então, a menos que você tenha algo como explicit-exit-notify [n] na configuração do seu cliente, desconectar esse cliente parecerá uma falha de rede para o servidor. / p>

Então, dependendo de como você configurou timeouts / keepalives etc, pode ser uma quantidade de tempo antes que o servidor decida que o cliente realmente foi embora. Você pode não ter atingido essa condição em seus testes.

Uma maneira de verificar isso é ativar a interface de gerenciamento em seu servidor então faça telnet localhost 1194 lá e verifique se o cliente está realmente desconectado - depois de desconectar no lado do cliente - executando o comando "status" e inspecionando sua saída.

Outra abordagem, mais de baixa tecnologia, para testar isso é ligar um script ao evento client-disconnect e ver se ele é executado quando o cliente se desconecta.

    
por 13.11.2015 / 20:40