Verificar continuamente o status da conexão OpenVPN

3

Estou tentando verificar e exibir o status (conectado / não conectado) e o nome do host / cn do servidor de uma conexão OpenVPN que deve se conectar a cada inicialização.

Agora descobri que em /var/log/syslog a conexão está registrada, o que eu poderia usar para determinar se Initialization Sequence Completed estava registrado e obter o nome do host / cn, 19 linhas acima de [brimstone] Peer Connection Initiated with [AF_INET]1.2.3.4:1234 .

Pegando esse log, eu posso verificar o Initialization Sequence Completed , o que significa que estou conectado e o nome do host, que eu quero apenas para um script diferente.

Agora, meu problema é que atualmente não sei se a conexão ainda está ativa e / ou se estou conectado a outro servidor. Eu poderia verificar periodicamente o log de alterações, mas isso parece um pouco extremo para uma tarefa bastante básica.

Como posso verificar o status da conexão do meu OpenVPN e, se conectado, obter o nome de host do servidor / cn?

    
por apoc 27.07.2015 / 17:01

2 respostas

4

Você não precisa fazer isso, mas ainda pode fazê-lo por meio da verificação de seu endereço IP externo aparente: o seguinte comando

   wget 216.146.38.70:80

consultas checkip.dyndns.org para o seu IP externo. Você deve ser capaz de reconhecer o status atual de sua conexão dessa maneira.

Como alternativa, você pode verificar sua tabela de roteamento:

   $ ip route show
   0.0.0.0/1 via 10.8.0.17 dev tun0 
   default via 192.168.73.1 dev eth0  proto static 
   10.8.0.0/24 via 10.8.0.17 dev tun0 
   10.8.0.17 dev tun0  proto kernel  scope link  src 10.8.0.18 
   128.0.0.0/1 via 10.8.0.17 dev tun0 
   192.168.73.0/24 dev eth0  proto kernel  scope link  src 192.168.73.74  metric 1 
   IP.Address.Of.Your.OpenVPN.server via 192.168.73.1 dev eth0 

(isso é para um OpenVPN roteado, mas isso não importa). A linha importante é a última: se você tiver algo assim, seus pacotes serão roteados pelo OpenVPN.

Você também pode usar um instrumento como mtr que pings e traceroutes simultaneamente (e continuamente !!) um determinado endereço IP, por exemplo:

   mtr www.debian.org

Se o OpenVPN estiver ativo, você verá os pacotes roteados pelo túnel ( tun0 ou tap0 ), não pelo seu gateway normal.

Como eu disse no começo, você não precisa fazer isso: o OpenVPN fornece um mecanismo para verificar continuamente o status da conexão e para reiniciá-la, se necessário:

--keepalive n m

A helper directive designed to simplify the expression of --ping and --ping-restart in server mode configurations. For example, --keepalive 10 60 expands as follows:

 if mode server:
   ping 10
   ping-restart 120
   push "ping 10"
   push "ping-restart 60"
 else
   ping 10
   ping-restart 60

Você pode usar keepalive ou qualquer combinação adequada de ping , ping-restart , ping-exit para controlar automaticamente o status da conexão.

    
por 27.07.2015 / 18:35
1

Você talvez possa usar uma combinação de openvpn:

up, down, uprestart e ping-restart

arquivo de configuração (ou suas linhas de comando correspondentes)?

    
por 27.07.2015 / 18:30