Como reconectar o OpenVPN após uma desconexão súbita da porta IP específica

1

Eu tenho o OpenVPN conectado a um aplicativo específico (A) com a porta local (127.0.0.1:2727). Isso (A) conectado à minha rede principal.

Mas toda vez que a VPN é desconectada, ela não pode ser conectada novamente a (A) porque o (A) está conectado ao ip da VPN.

alguma ideia de como resolver este problema? Eu quero fazer o (A) conectado a uma rede específica (minha rede principal) após a VPN desconectada. Eu tentei usar o ForceBindIP mas não funciona ..

    
por Billy Adelphia 08.10.2016 / 18:29

1 resposta

1

tl; dr : adicione rota explícita ao host remoto do programa misterioso ( /32 ).

Eu olhei para o manual do OpenVPN , mas ainda não está claro se ele pode fazer isso nativamente (via% código%). Por segurança, use scripts / programas com --route e --up . É importante observar que a modificação da configuração de roteamento exige raiz, o que você não tem quando o --down está em execução se --down também for especificado.

Para ser portável, o script / programa --user precisaria fazer o seguinte, dependendo de como seu programa misterioso se conecta:

  1. Resolver endereço IP remoto do programa misterioso ( --up )
  2. Determinar o gateway ( $remote_addr ) para o endereço IP remoto - isso pode ou não ser o gateway padrão
  3. Adicionar rota explícita como $gateway

Dessa forma, funcionará corretamente com ip route add $remote_addr via $gateway .

O script / programa --redirect-gateway precisaria ser quase o mesmo, exceto que ele precisa excluir a rota.

Ao escrever um script (Bash), os problemas realmente começam no passo 1. Você só precisa do endereço IP e nada mais. Algo como --down faria o truque, mas prefere endereços IPv6 muito, o que pode ou não ser apropriado. Outras ferramentas ( getent hosts etc) não usam o resolvedor do sistema operacional, mas consultam diretamente o DNS, o que pode não ser o que você deseja (pense em dig +short ).

O segundo passo é relativamente fácil em qualquer SO ( /etc/hosts etc), mas no Windows. No Windows, você precisa programar o algoritmo para encontrar você mesmo a rota mais específica.

Se você acha que tudo está estático (endereço IP remoto, endereço IP do próximo salto), também é possível usar ip route get :

do OpenVPN
route 1.2.3.4 255.255.255.255 10.1.2.3

... onde --route é o host remoto do programa de mistério e 1.2.3.4 é o próximo salto de roteamento para alcançá-lo.

Outra solução é não usar 10.1.2.3 , significando que a interface de rede VPN será completamente desligada quando o OpenVPN perder sua conexão. Isso tem uma implicação muito séria: o tráfego irá vazar assim que a conexão for interrompida.

    
por 12.10.2016 / 09:59