Falha no handshake OpenVPN TLS - o que mais poderia ser?

1

Eu tenho dois clientes muito diferentes em duas redes muito diferentes, ambos incapazes de se conectar a um servidor OpenVPN recém-configurado, ambos causando entradas de log no servidor como o seguinte:

Aug  8 20:37:15 myserver ovpn-server[3797]: 12.34.56.78:48573 TLS: Initial packet from [AF_INET]12.34.56.78:48573, sid=80063aef 9e45c93a
Aug  8 20:38:15 myserver ovpn-server[3797]: 12.34.56.78:48573 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Aug  8 20:38:15 myserver ovpn-server[3797]: 12.34.56.78:48573 TLS Error: TLS handshake failed
Aug  8 20:38:15 myserver ovpn-server[3797]: 12.34.56.78:48573 SIGUSR1[soft,tls-error] received, client-instance restarting

Os clientes são o OpenVPN em um computador laptop * buntu conectado a um roteador NAT ADSL e um roteador WWAN 3G / 4G com um cliente OpenVPN integrado.

Aqui está o que eu verifiquei até agora:

  • O Firewall está aberto (bem, duh, de que outra forma o handshake TLS começaria)
  • A hora / data está definida corretamente nas duas extremidades
  • O cliente OpenVPN está atualizado (pelo menos no laptop, mais difícil de verificar no roteador 3G / 4G)
  • Os números de porta UDP não são alterados durante a vida útil da negociação (consulte log acima)

O que o ELSE pode estar causando isso?

Edit: Então, o enredo engrossa ... Em desespero, tentei mudar toda a cadeia de configurações para usar o TCP, senão deixar tudo como estava. Bang! O cliente OpenVPN no meu laptop * buntu conseguiu se conectar imediatamente. Mas o que fazer quando o cliente OpenVPN do roteador 3G / 4G não suporta o transporte TCP? Eu não terminei aqui ainda!

Editar: Só para ficar claro aqui; Alterei precisamente quatro coisas para que isso funcionasse:

  1. Edite a configuração do OpenVPN para dizer proto tcp em vez de proto udp e reinicie o OpenVPN
  2. Adicionada uma nova regra ao firewall iptables do servidor, para permitir o TCP 1194 - de outra forma idêntico à regra existente que permite UDP 1194
  3. Editado o protocolo na definição de serviço na regra de firewall no roteador meu laptop está conectado para permitir saída TCP 1194 em vez de saída UDP 1194 (apenas uma caixa suspensa realmente)
  4. Editei as informações de conexão do OpenVPN no meu laptop por meio do Network Manager e verifiquei a caixa de seleção Use a TCP connection

Todos outras configurações e configurações permanecem idênticas ao que era antes.

Edit: Eu tenho uma suspeita de que algo estranho está acontecendo com o roteamento do tráfego UDP no meu servidor VPN; o endereço IP ao qual o OpenVPN está configurado para se vincular não é o endereço IP principal do servidor, na verdade, nem está na mesma sub-rede. Veja como é a tabela de roteamento:

$ route
Kernel IP routing table
Destination     Gateway          Genmask         Flags Metric Ref    Use Iface
default         11-22-33-1.thing 0.0.0.0         UG    0      0        0 eth0
22.33.44.0      *                255.255.255.0   U     0      0        0 eth0
10.8.0.0        *                255.255.255.0   U     0      0        0 tun0
11.22.33.0      *                255.255.255.0   U     0      0        0 eth0

$ ip route
default via 11.22.33.1 dev eth0 onlink 
22.33.44.0/24 dev eth0  proto kernel  scope link  src 22.33.44.55 
10.8.0.0/24 dev tun0  proto kernel  scope link  src 10.8.0.1 
11.22.33.0/24 dev eth0  proto kernel  scope link  src 11.22.33.44 

O endereço IP 22.33.44.55 foi atribuído posteriormente e é aquele ao qual o OpenVPN se vincula. Agora sou o primeiro a admitir que sei próximo a nada sobre roteamento IP, mas será que o tráfego UDP no "novo" endereço IP de alguma forma se perde devido a não ter seu próprio padrão? rota - ou algo assim?

    
por Ola Tuvesson 08.08.2017 / 21:47

1 resposta

0

Acontece que eu estava certo: a opção local 22.33.44.55 no server.config do OpenVPN estava faltando. Adicioná-lo e reiniciar o OpenVPN resolveu o problema, e o transporte UDP agora funciona no meu IP secundário. Sem isso, as respostas do OpenVPN estavam sendo enviadas através do IP padrão - embora eu não entenda por que isso também não impediu o TCP de funcionar. Erro de estudante, se você quiser, mas o script de configuração do OpenSSL que eu usei ( link ) fez perguntar para o endereço IP para usar durante a configuração, então eu apenas assumi que isso tinha sido configurado corretamente.

    
por 09.08.2017 / 14:39

Tags