Troubleshooting: timeout de TLS no OpenVPN (roteamento assimétrico em Multi-WAN)¶
O cenário e o problema¶
Em firewalls com múltiplos links de internet (Multi-WAN), clientes externos do OpenVPN podem falhar na fase de negociação de chaves. O erro típico no log do cliente, após 60 segundos, é:
▎ TLS Error: TLS key negotiation failed to occur within 60 seconds
▎ TLS handshake failed
Este documento cobre o diagnóstico e a correção desse incidente, causado pelo roteamento assimétrico que o comportamento padrão do protocolo UDP gera nesse tipo de topologia.
Topologia de referência (IPs fictícios)¶
- eth1 (link principal / rota default): IP 203.0.113.10
- eth2 (link secundário / dedicado à VPN): IP 198.51.100.20
- Cliente externo: IP 192.0.2.50
- Porta OpenVPN: UDP 1194 (padrão) ou 50000 (customizada)
Processo de diagnóstico (CLI)¶
O primeiro passo é isolar se o pacote está sendo bloqueado pelo provedor de internet ou se o problema está na camada lógica do servidor. Substitua a porta 1194 nos comandos abaixo pela porta usada no seu ambiente.
1. Verificação do serviço (bind)¶
Confirme se o daemon do OpenVPN está ativo e escutando na porta correta.
Saída esperada (serviço escutando em todas as interfaces):2. Captura de pacotes na interface WAN¶
Inspecione a interface de rede dedicada à VPN (eth2) para confirmar que os pacotes do cliente chegam ao firewall.
Saída esperada:
O tráfego chega na interface eth2 sem problemas, então não há bloqueio de operadora.
3. Simulação da rota de retorno¶
O problema acontece porque a requisição entra por um link, mas o servidor tenta responder pelo outro. Para confirmar, consulte a tabela de roteamento do kernel para o IP do cliente:
Saída obtida:
O kernel direciona a resposta do OpenVPN parcipal), diferente da interface de entrada(eth2).
4. Auditoria do Policy Based Routing (PBR)¶
Verifique se o firewall tem as regras de Multi-WAN configuradas.
Saída esperada (as regras existem):
Causa raiz¶
A falha combina o comportamento do protocolo UDP com a topologia Multi-WAN:
- Como o OpenVPN escuta em 0.0.0.0, ele recebe o pacote pela eth2, mas entrega a resposta ao kernel do Linux sem especificar o IP de origem 198.51.100.20.
- Sem um IP de origem explícito, o Linux ignora a regra 85 do PBR e despacha o pacote pela tabela principal de rotas, que sai pela eth1.
- O pacote sai com o IP trocado (de 198.51.100.20 para 203.0.113.10). O firewall do cliente detecta a quebra do estado de conexão e descarta o tráfego, o qu
Solução: simetria de rotas (multihome)¶
Para corrigir o roteamento assimétrico, force o OpenVPN a registrar a interface de entrada de cada requisição e a usar o mesmo endereço na resposta.
Aplicação¶
Edite o arquivo de configuração do servidor (server.conf) ou acesse a seção de configurações avançadas (Custom Options) do painel de gerência da VPN, e adicione:
Se a VPN não precisar operar em múltiplas interfaces, também é possível fixar o IP de escuta com a diretiva local 198.51.100.20.Validação¶
Depois de reiniciar o serviço, o daemon passa a assinar os pacotes de resposta com o IP de origem correto. Isso aciona a regra de PBR do sistema operacional: o pacote volta pela eth2 e o handshake TLS se completa.