Vamos considerar o seguinte cenário:
- seu VPS possui uma única interface Ethernet, configurada com o endereço IP 4.3.2.1/24;
- seu VPS pode acessar a Internet através de um gateway padrão 4.3.2.254
- seu VPS ainda não ativou nenhuma conexão OpenVPN; portanto, não há interface tun ativa
Nesse cenário, em sua máquina (suponha que sua máquina seja 9.8.7.6/24 com def-gw 9.8.7.254), você pode estabelecer com êxito uma conexão SSH para 4.3.2.1. Portanto, os dois hosts 4.3.2.1 e 9.8.7.6 podem alcançar um ao outro com êxito.
Agora, com uma conexão SSH estabelecida, vamos supor:
- você inicia uma conexão OpenVPN a partir do seu VPS 4.3.2.1;
- como tal, uma nova interface tun0 será dinamicamente configurada (suponha que seja atribuído um IP 10.10.10.2, com um PTP 10.10.10.1).
Nesta fase:
Se nenhuma rota for enviada do servidor OpenVPN remoto para o seu VPS local, nada mudará no prazo de roteamento, e sua conexão SSH sobreviverá sem problemas. Nesse caso, o único tráfego que atravessa a VPN é o direcionado ao servidor OpenVPN remoto (10.10.10.1);
Se o servidor OpenVPN remoto atrasar alguma rota e, especialmente, se o gateway padrão do VPS for substituído pelo 10.10.10.1 (ponto de extremidade OpenVPN remoto), ENTÃO você está tendo problemas. Nesse caso, você está encapsulando TODO o tráfego IP de saída (com exceção do próprio OpenVPN) na VPN.
Nesse segundo caso (substituindo def-gw logo após o estabelecimento da conexão VPN), sua conexão SSH anterior "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á através do caminho anterior, nunca alterado;
- Tráfego do VPS (4.3.2.1) para sua máquina (9.8.7.6):
- sem a VPN (portanto, inicialmente) foi roteada através do gateway 4.3.2.254;
- após o estabelecimento do link VPN, com a substituição def-gw relacionada, ser 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 tais assimetrias caminho e simplesmente solte pacotes).
Além disso, são grandes as chances de seu servidor OpenVPN remoto estar atuando 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 serão mais ... "não boas", mas definitivamente "ruins", quanto à sua conexão SSH: o tráfego de retorno, além de voltar por uma rota diferente, está voltando à sua máquina com um IP de origem diferente (o da interface pública do servidor VPN).
Como resolver este problema?
Muito facilmente, de fato.
Simplesmente instruindo o servidor VPS a não rotear o tráfego para sua máquina ao longo da VPN, mas, em vez disso, contando com a 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.
PS: ao fornecer uma pergunta muito mais detalhada, você teria uma resposta muito mais rápida :-)