Vamos considerar o seguinte cenário:
- o seu VPS tem uma única interface ethernet, configurada com o endereço IP 4.3.2.1/24;
- o seu VPS pode acessar a Internet através de um gateway padrão 4.3.2.254
- o seu VPS não ainda ativou qualquer conexão do OpenVPN; portanto, há no tun interface active
Em tal cenário, a partir de sua máquina (suponhamos que sua máquina seja 9.8.7.6/24 com def-gw 9.8.7.254) você pode estabelecer com sucesso uma conexão SSH para 4.3.2.1. Portanto, ambos os hosts 4.3.2.1 e 9.8.7.6 podem alcançar um ao outro com êxito.
Agora, com essa conexão SSH estabelecida, suponhamos:
- você inicia uma conexão OpenVPN do seu VPS 4.3.2.1;
- como tal, uma nova interface tun0 será dinamicamente configurada (suponha que será atribuído um IP 10.10.10.2, com um PTP 10.10.10.1).
Nesta fase:
-
SE nenhuma rota será empurrada do servidor OpenVPN remoto para o seu VPS local, então nada mudará em termos de roteamento, e sua conexão SSH sobreviverá sem nenhum problema. Neste caso, o único tráfego que atravessa a VPN é o direcionado ao servidor remoto OpenVPN (10.10.10.1);
-
SE servidor OpenVPN remoto enviará de volta algumas rotas e, especificamente, se o gateway padrão do VPS for substituído por 10.10.10.1 (terminal remoto do OpenVPN), ENTÃO você está tendo problemas. Nesse caso, você está tunelando ALL o tráfego IP de saída (com exceção do próprio OpenVPN) dentro da VPN.
Neste segundo caso (substituindo def-gw logo após estabelecer a conexão VPN), sua conexão SSH anterior irá "travar", devido ao roteamento assimétrico:
- O tráfego da sua máquina (9.8.7.6) para o VPS (4.3.2.1) fluirá pelo caminho anterior, nunca alterado;
- Tráfego do VPS (4.3.2.1) para sua máquina (9.8.7.6):
- sem a VPN (inicialmente, portanto) foi roteada pelo gateway 4.3.2.254;
- após o estabelecimento do link da VPN, com substituição de defgw relacionada, é roteado através da VPN (10.10.10.1).
Em outras palavras: assim que o link VPN for estabelecido, sua rota de retorno do VPS para sua máquina mudará e ... isso não é uma coisa boa (vários dispositivos de rede, ao longo do caminho de retorno, podem reconhecer tal caminho assimétrico e simplesmente descartar pacotes).
Além disso, há grandes chances de que seu servidor OpenVPN remoto esteja agindo como uma caixa NAT: todo o tráfego proveniente da VPN será NATted com o endereço IP público do servidor OpenVPN remoto. Se isso for verdade, as coisas não são mais ... "não é bom", mas definitivamente "ruim", como para a sua conexão SSH: retornar o tráfego, além de voltar ao longo de uma rota diferente, está voltando para sua máquina < strong> com um IP de origem diferente (o da interface pública do servidor VPN).
Como resolver este problema?
Muito facilmente, de fato.
Basta instruir o seu servidor VPS para não direcionar o tráfego para a sua máquina ao longo da VPN, mas sim confiar na rota anterior . Deve ser tão fácil quanto adicionar, antes de iniciar o OpenVPN:
route add -host 9.8.7.6 gw 4.3.2.254
onde:
- 9.8.7.6 é o endereço IP público da sua máquina
- 4.3.2.254 é o gateway padrão original do seu VPS.
P.S .: ao fornecer uma pergunta muito mais detalhada, você teria obtido uma resposta muito mais rápida: -)