Seguindo a Situação.
Um dos meus homeservers está executando um servidor OpenVPN, bem como um OpenSSH Server (e algumas outras coisas) , ambos remotamente acessíveis.
Quando não estou em casa, geralmente me conecto ao servidor por VPN e abro algumas sessões SSH pelo ip público do servidor.
Eu quero conectar meu homeserver a uma VPN externa, de modo que todo o tráfego (de saída) que passa pelo meu servidor seja tunelado através da VPN externa também.
|MobilePhone|---VPN ----|
|
|Other Dev|-----SSH ----|----VPN---->| Homeserver | --- VPN ---> | External Provider |
| ^
|Laptop|--SSH/NFS/VPN---| |
|
|
|Laptop|--------SSH---------------------|
Eu ainda quero poder usar o SSH no meu servidor através do seu (antigo) IP público. Meu roteador ainda está diretamente conectado ao meu provedor, então qualquer tráfego de entrada deve ser redirecionado diretamente para o servidor, então acho que isso deveria ser possível.
Ingênuo como eu sou, pensei, pode funcionar apenas se eu conectar meu servidor à VPN externa via tun1 (tun0 é usado pelo servidor) e estou pronto. A configuração do cliente da VPN externa tem nobind
set, então não deve haver nenhum conflito nas portas.
Eu ainda podia ver a saída da conexão do openvpn. No entanto, pouco tempo depois, todas as minhas conexões caíram.
* Agora não consigo me conectar à minha VPN nem posso fazer SSH nela. Além disso, o apache não está mais acessível. Eu acho que nada seria
Meu roteador ainda responde a pings em seu endereço IP público.
Acho que a conexão com a VPN assumiu a interface de rede dos meus servidores ou algo nesse sentido. Portanto, deve ser um problema de roteamento.
Mas eu não sei exatamente o que está acontecendo lá e quais coisas eu teria que mudar para que isso funcionasse.
Eu gostaria de entender por que isso não está funcionando da maneira como tentei.
O que preciso aprender para configurar esse cenário corretamente?
Notas :
- Eu pensei sobre os pacotes que retornavam. Mas eu pensei que eu poderia de alguma forma configurar uma rota, de tal forma que todos os pacotes vindos do ip interno do meu roteador fossem enviados de volta para o roteador ao invés da VPN?
- Algo parecido com
ip route add 192.168.0.0/24 via 192.168.0.1 dev eth1
?
Atualizar
Eu consegui dar um passo adiante adicionando as seguintes linhas a /etc/network/interfaces
up ip rule add from 192.168.0.0/24 table 128 || true
up ip route add table 128 to 192.168.0.0/24 dev eth0 || true
up ip route add table 128 default via 192.168.178.1 || true
Isso me permitiu acessar o apache e o SSH no meu servidor por meio de seu IP público original, mesmo quando o servidor está conectado a uma VPN externa.
Eu acho que isso tem a ver com o que eu tinha em mente, todos os pacotes originados da minha LAN ou roteador são roteados pela eth0 usando meu roteador como gateway padrão, em vez do adaptador tun1 da VPN externa.
Até aí tudo bem.
O problema que estou tendo agora é, quando meu laptop está conectado ao servidor OpenVPN em execução no meu homeserver, cada conexão expira.
Eu acho que o problema é semelhante ao problema original.
Os pacotes originados do meu laptop, conectados via VPN (172.16.0.10), não são roteados de volta para o laptop, pois os pacotes retornados serão enviados através do gateway padrão, que é a VPN externa à qual o meu servidor está conectado.
Eu brinquei com a tabela de roteamento tentando encaminhar qualquer coisa vinda de 172.16.0.0 de volta para 172.16.0.xx via tun0
. Eventualmente, eu estraguei a tabela de roteamento e agora qualquer pedido atinge o tempo limite quando meu laptop está conectado aos meus servidores VPN, independentemente de o meu servidor estar conectado à VPN externa ou não.
Eu limpei a tabela de roteamento e reiniciei o servidor, esperando consertar pelo menos isso novamente.
Eu não tenho certeza se isso pode ser um problema que meu laptop está conectado à minha lan (192.168.178.xx) também.