OpenVPN como Rota Backup



  • Olá!

    Me deparei com a necessidade de ter uma conexão backup via OpenVPN, onde a conexão point-to-point default, é realizada através de um link MPLS.

    Consegui contornar o problema através de um Shell Script, executado via cron e gostaria de saber se isso pode implicar em alguma queda de desempenho do servidor ou algum outro problema.

    Segue script para contextualizar.

    #!/bin/sh
    
    # Gateway MPLS Matriz
    GATEWAY="10.x.x.x"
    
    # Quantidade de Requisições
    PING=10
    
    for myGATEWAY in $GATEWAY
    do
    	# Armazenar quantidade de requisições com respostas OK
    	counting=$(ping -c $PING $myGATEWAY | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }' )
    	
    	# Armazenar Status do Cliente OpenVPN
    	status=`/usr/local/sbin/pfSsh.php playback svc status openvpn client 1 | grep 'Service'`
    	
    	# MANTER GATEWAY MPLS
    
    	# Teste de condição para verificar se PING é maior que 80% E se status do cliente OpenVPN é diferente de PARADO
    	if [ $counting -ge 8 -a "$status" != "Service openvpn is stopped." ]; then
    		# Parar Cliente OpenVPN
    		/usr/local/sbin/pfSsh.php playback svc stop openvpn client 1
    
    		# Deletar Rota VPN para Matriz
    		route del -net 192.168.x.x/24 172.x.x.x
    
    		# Deletar Rota VPN para Escritório
    		route del -net 192.168.x.x/25 172.x.x.x
    
    		# Adicionar Rota MPLS para Matriz
    		route add -net 192.168.x.x/24 10.x.x.x
    
    		# Adicionar Rota MPLS para Escritório
    		route add -net 192.168.x.x/24 10.x.x.x
    
    		# Adicionar Rota Default
    		route add default 192.168.x.x
    
    		# Limpar estado das conexões
    		pfctl -F states
    
    		exit
    	
    	# MANTER GATEWAY OPENVPN	
    
    	# Teste de condição para verificar se PING é menor que 80% E se status do cliente OpenVPN é igual PARADO	
    	elif [ "$status" = "Service openvpn is stopped." -a $counting -le 7 ]; then
    
    		# Iniciar cliente OpenVPN
    		/usr/local/sbin/pfSsh.php playback svc start openvpn client 1
    
    		# Deletar rota MPLS para Matriz
    		route del -net 192.168.x.x/24 10.x.x.x
    
    		# Deletar rota MPLS para Escritório
    		route del -net 192.168.x.x/24 10.x.x.x
    
    		# Adicionar rota VPN para Matriz
    		route add -net 192.168.x.x/24 172.x.x.x
    
    		# Adicionar rota VPN para Escritório
    		route add -net 192.168.x.x/24 172.x.x.x
    
    		# Adicionar rota Default
    		route add default 192.168.x.x
    
    		# Limpar estado das conexões
    		pfctl -F states
    
    		exit
    	
    	# CONEXÃO OK
    	
    	else
    		exit
    	fi
    done
    

    Obrigado!

    Atenciosamente,
    Douglas Ferreira