Esta é uma pergunta canônica sobre a solução de conflitos de sub-rede IPv4 entre a rede local de um cliente VPN e uma através do link VPN a partir dela.
Após conectar-se a um local remoto via OpenVPN, os clientes tentam acessar um servidor em uma rede existente em uma sub-rede como 192.0.2.0/24. No entanto, às vezes, a rede na LAN do cliente tem o mesmo endereço de sub-rede: 192.0.2.0/24. Os clientes não conseguem se conectar ao servidor remoto digitando seu IP devido a esse conflito. Eles não conseguem acessar a Internet pública enquanto estiverem conectados à VPN.
O problema é que essa sub-rede 192.0.2.0/24 precisa ser roteada pela VPN, mas também precisa ser roteada como a LAN do cliente.
Alguém sabe como mitigar esse problema? Eu tenho acesso ao servidor OpenVPN.
Respostas:
É possível resolver isso usando NAT; simplesmente não é muito elegante.
Portanto, sob a suposição de que você não poderia resolver isso com redes internas com números de rede tão incomuns que nunca entram em conflito, aqui está o princípio:
Como a sub-rede local e a remota têm números de rede idênticos, o tráfego do seu cliente nunca perceberá que precisa passar pelo gateway de túnel para alcançar seu destino. E mesmo se imaginarmos que poderia, a situação seria a mesma para o host remoto, pois está prestes a enviar uma resposta.
Portanto, fique comigo e finja que, até o momento, não há problemas secundários enquanto escrevo que, para uma conectividade completa, você precisará do NAT nas duas extremidades dentro do túnel, a fim de diferenciar os hosts e permitir o roteamento.
Fazendo algumas redes aqui em cima:
Portanto, dentro do túnel da VPN, os hosts do escritório agora são 198.51.100.xe os hosts do escritório remoto são 203.0.113.x. Além disso, vamos fingir que todos os hosts estão mapeados 1: 1 no NAT de seus respectivos gateways VPN. Um exemplo:
Portanto, quando o host 192.0.2.5/24 no escritório remoto deseja conectar-se ao host com o mesmo ip na rede do escritório, ele precisa fazer isso usando o endereço 198.51.100.5/24 como destino. O seguinte acontece:
Portanto, embora exista uma solução, há vários problemas que devem ser abordados para que isso funcione na prática:
Portanto, resolver isso precisa de um design cuidadoso. Se o seu escritório remoto realmente é formado por guerreiros da estrada, você adiciona uma camada de problemas:
Dependendo do seu cliente VPN, você poderá selecionar automaticamente uma VPN ou outra, dependendo do endereço de rede do segmento local.
Observe que todas as menções ao NAT nesse contexto denotam uma função NAT que, por assim dizer, ocorre na perspectiva do túnel. Em termos processuais, o mapeamento estático de NAT deve ser feito antes que o pacote "entre" no túnel, ou seja, antes de ser encapsulado no pacote de transporte, que deve levá-lo pela Internet até o outro gateway VPN.
Isso significa que não se deve confundir os endereços IP públicos dos gateways VPN (e que, na prática, também podem ser NAT: ed, mas totalmente fora da perspectiva de transporte para o site remoto por VPN) com os endereços privados exclusivos usados como disfarces. para os endereços particulares duplicados. Se essa abstração é difícil de visualizar, é apresentada aqui uma ilustração de como o NAT pode ser fisicamente separado do gateway VPN para esse fim:
Uso do NAT em redes sobrepostas .
Condensar a mesma imagem a uma separação lógica dentro de uma máquina, capaz de executar a funcionalidade de gateway NAT e VPN, está simplesmente dando o mesmo exemplo um passo adiante, mas coloca mais ênfase nos recursos do software em questão. Hackear junto com, por exemplo, OpenVPN e iptables e postar a solução aqui seria um desafio digno.
Em termos de software, certamente é possível:
PIX / ASA 7.xe posterior: VPN IPsec de LAN para LAN com exemplo de configuração de redes sobrepostas
e:
Configurando um túnel IPSec entre roteadores com sub-redes de LAN duplicadas
Portanto, a implementação real depende de muitos fatores, dos sistemas operacionais envolvidos, do software associado e de suas possibilidades. Mas certamente é factível. Você precisaria pensar e experimentar um pouco.
Eu aprendi isso com a Cisco, como visto pelos links.
fonte
Se você precisar de uma solução temporária suja temporária para um ou vários servidores conhecidos, a solução mais simples deve ser a opção de roteamento estático do lado do cliente.
No meu caso, adicionei meu servidor de destino desejado (192.168.1.100) à minha tabela de roteamento no meu cliente linux via:
Depois, remova esta rota estática com o comando route delete.
fonte
dev tun0
você precisa-interface tun0
Sim, este é o pior. para mim, isso acontecia o tempo todo em quartos de hotel, antes que os administradores de VPN percebessem que deveriam usar intervalos de IP mais obscuros. 10.0.0.0/24 e 10.1.1.1/24 são os piores. se você puder ajudá-lo a nunca conectar uma rede sem fio assim.
portanto, a resposta é "consertar" o wap para usar uma rede interna diferente (por exemplo, 10.255.255.0/24) e fornecer uma concessão diferente (por exemplo, ip em um intervalo que possa rotear de volta para corp vpn), ou se você não tiver / não consigo obter administrador no wap, basta ir para a starbucks. ou 20 minutos de wardriving :)
se isso for apenas em um ambiente de laboratório, use intervalos diferentes.
fonte
Estou em um Mac rodando El Capitan. Embora as sugestões acima não tenham funcionado para mim, elas me levaram a uma solução funcional:
ifconfig
inicie a VPN, faça
ifconfig
e observe qual é a nova interface. No meu caso, era ppp0 com um endereço IP 192.168.42.74digitar:
Testei primeiro com um
ping
e depois provei que funcionava acessando o servidor git.Quando tentei usar o dev ppp0 para o final do comando route, como mencionado acima, ele reclamou.
fonte
192.168.1.79
vindo nessa troca?Eu tenho uma solução simples que estou usando em um espaço de trabalho conjunto com um intervalo de IP conflitante (10.x)
Conectei-me à rede com meu telefone celular e compartilhei a conexão de rede via bluetooth com meu laptop. Agora posso usar a VPN para meu empregador remoto.
Tenho certeza de que isso funcionará da mesma forma via USB, se você precisar de uma conexão mais rápida.
fonte
Se você só precisa acessar alguns ou um endereço IP, adicione a instrução route ao seu arquivo de configuração ovpn assim:
rota 192.168.1.10 255.255.255.255
rota 192.168.1.11 255.255.255.255
Ele adicionará uma rota apenas para os IPs quando você conectar o seu VPN e o removerá quando o VPN desconectar.
Funcionou para mim no Windows de qualquer maneira.
fonte
A resposta de Aydin K. é para linux. Se você deseja a mesma funcionalidade para o Windows, digite
ou
você pode obter o ID da interface com o comando:
fonte
Apenas como lembrete: todo esse problema se deve a anos de escassez de endereços IPv4 e ao uso extensivo do intervalo de IP privado por trás do NAT para solucionar essa escassez!
A solução ideal e definitiva para esse problema é bastante direta (embora possa e demore algum tempo para ser implementada globalmente): IPv6 ...
Em um mundo IPv6, não há escassez pública de IP (e não haverá evento em algumas décadas). Portanto, não há razão para não ter um IP público em todos os dispositivos de todas as redes. E se você precisar de isolamento de rede, continue filtrando com um firewall, mas sem o NAT feio ...
fonte