Você pode alternar o OpenVPN para TCP nas configurações (do cliente e do servidor, e talvez garantir que o seu TCP OpenVPN esteja seguro antes ou se você desabilitar o serviço UDP). Isso terá o efeito de garantir que todos os pacotes passem eventualmente. Isso ainda será lento, mas vale pelo menos a experiência. De openvpn.net:
If you want your OpenVPN server to listen on a TCP port instead of a UDP port, use
proto tcp
instead ofproto udp
(If you want OpenVPN to listen on both a UDP and TCP port, you must run two separate OpenVPN instances).
Quanto à perda de pacotes, você só pode corrigir o caminho que os pacotes tomam. Use o traceroute de ambas as extremidades para encontrar a parte incorreta do link e ver como ignorá-lo ou torná-lo mais robusto.
Em vez do TCP todo o caminho, tente ver se você pode alugar o tempo de infraestrutura muito perto do link que está sofrendo para encapsular o TCP através do link fraco para o destino. Isso permitiria que os pacotes UDP voassem o máximo possível sem ter que ack TCP ou retransmitir por todo o comprimento do seu túnel, apenas a parte ruim dele.
Se o elo fraco estiver no meio, você pode se beneficiar do aluguel de infraestrutura em ambas as extremidades do elo fraco, em vez de apenas de um lado, mas se estivermos falando da Antártica, talvez isso seja difícil.
Se você escolheu testar essa rota, recomendo o udptunnel como uma possível solução. ( udptunnel
é o seu próprio pacote no Ubuntu, mas outras opções como o socat ou o netcat criativo funcionarão.)