Roteamento no openVPN com redes iguais

Esse é um breve artigo explicando como fazer para que duas redes com a mesma faixa de IPs consigam se comunicar através de uma VPN.

[ Hits: 29.261 ]

Por: Carlos A. Parisotto em 18/08/2010


Criando as rotas



Pressuponho que a VPN já esteja funcionando e que as máquinas já estejam se comunicando pelo IP da VPN (o servidor com 10.0.0.11 e o cliente com 10.0.0.1).

Supondo que a rede do servidor seja 192.168.1.0/24 e a do cliente 192.168.100.0/24, o esquema é simples, adicionar as seguintes linhas em algum arquivo que inicia junto com o Linux.

No servidor:

/sbin/route add -net 192.168.100.0 netmask 255.255.255.0 gw 10.0.0.11

No cliente:

/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.1

A partir dessa configuração estará definido que todo pacote enviado para um IP que está na outra rede irá passar pelo túnel, ou seja, se na rede do servidor, algum micro da rede do 192.168.100.0 tentar 'pingar' algum da rede 192.168.1.0, irá conseguir.

Ok, vamos para a parte que nos "enche o saco". Se as duas redes usarem faixa de IP 192.168.1.0/24, não temos como pingar um IP da outra rede, pois qualquer pacote enviado para a rede 192.168.1.0/24 não irá passar pelo túnel, ou se você preferir configurar para passar pelo túnel, o micro não conseguirá se comunicar com a própria rede (isso muitas vezes inclui o próprio gateway, então nem vou começar a falar dos problemas que isso irá custar).

A solução por mim encontrada foi mascarar via iptables as redes e "enganar as rotas". Um exemplo disso, quando a rede do servidor tentar pingar o IP 192.168.5.50, ele irá pingar o micro com IP 192.168.1.50, que está na rede do cliente. Vamos às regras.

Rede A (não importa se é cliente ou servidor):

# route add -net 192.168.5.0 netmask 255.255.255.0 gw 10.0.0.11

(através dessa regra definimos que tudo que vai para a rede 192.168.5.0/24 passará pelo túnel)

Rede B (não importa se é cliente ou servidor):

# iptables -t nat -A PREROUTING -d 192.168.5.0/24 -j NETMAP --to 192.168.1.0/24

(através dessa regra todo pacote que vier com destino à rede 192.168.5.0/24 será destinado à rede 192.168.1.0/24)

E é assim que a coisa funciona. Pessoal, esse foi meu primeiro artigo, me perdoem pela falta de didática, espero que tenham entendido, mas para quem não tiver entendido, ou se algum procedimento falhar, estou à disposição para tirar dúvidas.

Página anterior    

Páginas do artigo
   1. Criando o openVPN
   2. Criando as rotas
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Hugo - Gerador de Site Estático

Replicação e balanceamento de carga em servidores usando DNS

Atualizando Flash Player no Firefox em Antergos (Arch Linux)

Qualidade de Serviços para Gateways Linux (QoS)

Canal IRC #vivaolinux na rede irc.freenode.net

  
Comentários
[1] Comentário enviado por removido em 18/08/2010 - 12:49h

Vou testar. Se isto funcionar me será muito útil para uma outra coisa. Grande ideia você me deu. Obrigado.

[2] Comentário enviado por davidsonpaulo em 20/08/2010 - 17:40h

Rapaz, você com certeza invocou os princípios dos mais antigos e valorosos guerreiros samurais para desenvolver essa solução. Gostei muito. Parabéns!

[3] Comentário enviado por toniher em 16/12/2010 - 09:04h

Bom dia, Carlos.

Mas onde eu adiciono o meu IP remoto?

[4] Comentário enviado por carlosparisotto em 17/12/2010 - 08:38h

No arquivo client.conf, você coloca na primeira linha:
remote (IP do seu servidor)
Esse é o único lugar em que você precisa utilizar definir seu IP externo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts