Openvpn Site-to-Site

Iniciado por willsazon, 06 de Abril de 2018, 16:14

tópico anterior - próximo tópico

willsazon

Olá pessoal,
eu tenho um servidor vpn Openvpn rodando no Ubuntu 14.10. Este servidor ja roda a um bom tempo onde eu crio as chaves e instalo nos PCs clientes os vendedores. Os mesmo conecta através da GUI o openvpn instalado no Windows. Até aí tudo normal.

Agora porém necessito criar uma vpn site-to-site com esse servidor e um cliente rodando Ubuntu 14.10.
O servidor fica traz de um proxy que fica atraz de um mikrotik, sendo assim o servidor não é o gateway da rede.

o cliente fica atraz de um microtick, e será o gateway da rede filial.


Sendo assim a minha estrutura ficaria.

Fillial

      Mikrotik > 192.168.88.1
      Client Openvpn eth0  > 192.168.88.2
      Client Openvpn eth1  > 192.168.1.1  >> Gateway da rede cliente
      Cliente Openvpn tun0 > 10.0.2.2


Servidor Matriz

           Mikrotik    > 192.168.0.1
           Servidor proxy eth0  > 192.168.0.2
          Servidor proxy eth1  > 192.168.100.1   > Gateway rede matriz
         Servidor OpenVPN eth0 > 192.168.100.70
         Servidor OpenVpn  tun0 > 10.0.2.1     


Segui o tutorial do site do openvpn, adicionei as rotas conforme orientado

Na matriz :
route add -net 192.168.88.0/24 gw 10.0.2.1


Na Filial
route add -net 192.168.100.0/24 gw 10.0.2.2


Configuração do Servidor
#Dispositivo usado pela VPN
dev tun
#Porta usada para conexão
port 2222
#Protocolo de conexão
proto udp
#Certificado da CA
ca keys/ca.crt
#Certificado do Servidor de VPN
cert keys/vpnserver.crt
#Chave usada pela matriz
key keys/vpnserver.key
#Chave Diffie-Hellman
dh keys/dh2048.pem
#Rede usada pela VPN (Matriz 10.0.2.1 e os clientes a partir de 10.0.2.2)
server 10.0.2.0 255.255.255.0
#
client-to-client
#
#Client Config
client-config-dir /etc/openvpn/ccd
#
#Route server-side traffic bound for the client network
route 192.168.88.0 255.255.255.0
#
topology subnet
#Rota usada pelos clientes para acessar a rede da matriz
push "route 192.168.100.0 255.255.255.0"
push "route 192.168.88.0 255.255.255.0"
#
tls-server
#Envia um ping a cada 10 segundos e cancela a conexão se não houver resposta em 120 segundos
keepalive 10 120
#Máximo de clientes conectados simultaneamente
max-clients 100
#
float
#Compressão usando lzma
comp-lzo
#Medodo de codificacao
cipher AES-256-CBC
#Usuário e grupo que o openvpn usará para ser executado
user nobody
group nogroup
#Manter a chave e os túneis persistentes
persist-key
persist-tun
#Nível de Log.
verb 3
#Caminho do log
status /var/log/openvpn.stats


Pasta ccd
iroute 192.168.88.0 255.255.255.0


Regras de firewall do servidor Openvpn na matriz
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -s 10.0.2.0/24 -A POSTROUTING -o eth0 -j MASQUERADE


Na Filial
#esses 3 comandos compartilham a internet
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Eu consigo pingar do Cliente em toda a rede da matriz, porém as maquinas que ficam abaixo do Cliente não consigo pingar nada na rede da matriz.

Os clientes ficam abaixo do Cliente recebem a faixa de rede 192.168.1.xxx.

Alguém sabe se preciso configurar alguma rota no meu proxy?
Alguém pode dar um auxilio?
Ubuntu 14.04.2 LTS

zekkerj

Citar...Ubuntu 14.10...
O Ubuntu 14.10 já está sem suporte há um bom tempo. Sugiro fortemente que você atualize seu servidor e seus clientes para uma versão LTS (16.04 ou, se você tiver coragem, o 18.04 que está pra sair do forno).

Como esse tipo de problema pode estar relacionado com a versão do Ubuntu, eu peço que você confirme se escreveu corretamente a versão, antes da gente prosseguir com qualquer tentativa de solução.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

Citação de: zekkerj online 06 de Abril de 2018, 16:24
Citar...Ubuntu 14.10...
O Ubuntu 14.10 já está sem suporte há um bom tempo. Sugiro fortemente que você atualize seu servidor e seus clientes para uma versão LTS (16.04 ou, se você tiver coragem, o 18.04 que está pra sair do forno).

Como esse tipo de problema pode estar relacionado com a versão do Ubuntu, eu peço que você confirme se escreveu corretamente a versão, antes da gente prosseguir com qualquer tentativa de solução.

Amigo na verdade eu informei errado mesmo. Eu possuo  o 14.04 LTS, com suporte até 2019. Este já é um servidor em produção. então to sem coragem de atualizar. rsrrsrs
Se tiver mais alguma sugestão 
Ubuntu 14.04.2 LTS

zekkerj

Certo. Não é a melhor solução, mas pelo menos a gente tem uma base mais estável pra trabalhar.
Explique pra mim, pq na matriz você não adicionou o OpenVPN diretamente ao servidor proxy? Aliás, qual é o sistema que roda nesse proxy? Qual nível de acesso você tem a ele?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

Citação de: zekkerj online 06 de Abril de 2018, 16:45
Explique pra mim, pq na matriz você não adicionou o OpenVPN diretamente ao servidor proxy?
Simplesmente pelo fato de não utilizar muitos serviços em uma só maquina. Parando a VPN não paro a internet ou a rede local da matriz.

Citação de: zekkerj online 06 de Abril de 2018, 16:45
Aliás, qual é o sistema que roda nesse proxy?
Proxy rodando Ubuntu Server 14.04 LTS com Squid Proxy transparente. 

Citação de: zekkerj online 06 de Abril de 2018, 16:45
Qual nível de acesso você tem a ele?
Acesso root, local e remoto. 
Ubuntu 14.04.2 LTS

zekkerj

Então, será MUITO mais fácil fazer isso, se o OpenVPN ficar junto com o serviço de gateway da sua rede.

Prosseguindo... não está claro pra mim se a rede dos clientes da filial é a 192.168.1.0/24 ou a 192.168.88.0/24. Isso fará muita diferença, pois você precisa adicionar uma rota ao seu proxy, direcionando pacotes destinados a eles de volta ao seu servidor OpenVPN (se fosse uma máquina só, isso seria desnecessário).

Outra coisa, me parece que essas regras de NAT no firewall da matriz, além de errada, é desnecessária. A regra de NAT é necessária quando você tem um tráfego com um endereço de origem que não é alcançável pelo destino (p.ex. quando vc quer acessar a internet a partir de uma máquina que usa IP de rede privada).
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

Citação de: zekkerj online 06 de Abril de 2018, 17:13
Então, será MUITO mais fácil fazer isso, se o OpenVPN ficar junto com o serviço de gateway da sua rede.

Prosseguindo... não está claro pra mim se a rede dos clientes da filial é a 192.168.1.0/24 ou a 192.168.88.0/24. Isso fará muita diferença, pois você precisa adicionar uma rota ao seu proxy, direcionando pacotes destinados a eles de volta ao seu servidor OpenVPN (se fosse uma máquina só, isso seria desnecessário).

Outra coisa, me parece que essas regras de NAT no firewall da matriz, além de errada, é desnecessária. A regra de NAT é necessária quando você tem um tráfego com um endereço de origem que não é alcançável pelo destino (p.ex. quando vc quer acessar a internet a partir de uma máquina que usa IP de rede privada).

A rede da filial possui um mikrotik com a classe 192.168.88.0, porém eu criei um cliente openvpn com duas placas de rede onde a eth0 recebe o ip vindo do mikrotik sendo a eth0 o ip 192.168.88.2(saida para internet) e a placa de rede eth1 192.168.1.1 (rede local).

No servidor Openvpn da matriz, se eu não seto esta regra os clientes não tem acesso a rede local, somente ao servidor do Openvpn. Eu preciso que eles veja a rede toda.
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -s 10.0.2.0/24 -A POSTROUTING -o eth0 -j MASQUERADE


O servidor Openvpn na matriz possui apenas uma placa de rede, eth0 que recebe internet e compartilha com o túnel tun0.

Ubuntu 14.04.2 LTS

zekkerj

Essa regra não é necessária se você setar as rotas corretamente.

Então, os clientes da filial estão na faixa 192.168.1.0/24, certo?


Enviado do meu smartphone
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

#8
Citação de: zekkerj online 06 de Abril de 2018, 19:12
Essa regra não é necessária se você setar as rotas corretamente.

Então, os clientes da filial estão na faixa 192.168.1.0/24, certo?


Enviado do meu smartphone
Não posso remover a regra por que também possuo vendedores externos que se conectam via notebook e sempre estão em um hotel diferente.

Sim os clientes usarão a rede 192.168.1.0/24
Ubuntu 14.04.2 LTS

zekkerj

#9
A regra não é necessária se você ajustar as rotas corretamente .

Os clientes que conectam a partir de redes avulsas recebem IP da rede 10.0.2.0/24, e as máquinas de sua rede não sabem como alcançar essa rede, por isso entregam o pacote de retorno ao proxy, que é o gateway da sua rede.

Assim, bastaria que o seu proxy fosse também o servidor OpenVPN, ou pelo menos, que tivesse rota para a rede 10.0.2.0/24, pra funcionar. Como ele não tem, ele manda esses pacotes pro gateway dele (a Internet), onde eles se perdem.

A função do NAT é remendar esse erro de roteamento, substituindo o endereço de rota desconhecida por outro roteável. Mas deve ser visto assim, como um remendo, um quebra-galho, não como solução definitiva.

O que acontece com os clientes na filial é ainda um pouco pior: sua regra de NAT não os leva em conta, pois apesar de entrarem pela VPN, esses pacotes não se originam na rede 10.0.2.0/24, mas sim na rede 192.168.1.0/24, assim eles não sofrem NAT. Por isso em disse antes que sua regra de NAT está errada. Agora, com um pouco mais de informação, vejo que ela não está errada, e sim incompleta.

Estes dois comandos no seu servidor proxy devem resolver seu problema:

sudo route add -net 10.0.2.0/24 gw 192.168.100.70
sudo route add -net 192.168.1.0/24 gw 192.168.100.70

Enviado do meu smartphone
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

Citação de: zekkerj online 07 de Abril de 2018, 07:50
A regra não é necessária se você ajustar as rotas corretamente .

Os clientes que conectam a partir de redes avulsas recebem IP da rede 10.0.2.0/24, e as máquinas de sua rede não sabem como alcançar essa rede, por isso entregam o pacote de retorno ao proxy, que é o gateway da sua rede.

Assim, bastaria que o seu proxy fosse também o servidor OpenVPN, ou pelo menos, que tivesse rota para a rede 10.0.2.0/24, pra funcionar. Como ele não tem, ele manda esses pacotes pro gateway dele (a Internet), onde eles se perdem.

A função do NAT é remendar esse erro de roteamento, substituindo o endereço de rota desconhecida por outro roteável. Mas deve ser visto assim, como um remendo, um quebra-galho, não como solução definitiva.

O que acontece com os clientes na filial é ainda um pouco pior: sua regra de NAT não os leva em conta, pois apesar de entrarem pela VPN, esses pacotes não se originam na rede 10.0.2.0/24, mas sim na rede 192.168.1.0/24, assim eles não sofrem NAT. Por isso em disse antes que sua regra de NAT está errada. Agora, com um pouco mais de informação, vejo que ela não está errada, e sim incompleta.

Estes dois comandos no seu servidor proxy devem resolver seu problema:

sudo route add -net 10.0.2.0/24 gw 192.168.100.70
sudo route add -net 192.168.1.0/24 gw 192.168.100.70

Enviado do meu smartphone

Bom dia meu amigo,
fiz conforme indicado porém meu problema persiste. Consigo pingar toda a rede,(192.168.100.0) mas não consigo conectar.
Ubuntu 14.04.2 LTS

zekkerj

Se você pinga é porque conectou na VPN, não?

Ou é conexão no sistema de destino?


Enviado do meu smartphone
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

Citação de: zekkerj online 09 de Abril de 2018, 11:20
Se você pinga é porque conectou na VPN, não?

Ou é conexão no sistema de destino?


Enviado do meu smartphone

A VPN conectou.
Eu pingo dentro da rede da matriz e ping o servidor na rede da filial.
Digitando o ip 10.0.2.2 no servidor matriz consigo me conectar via SSH no servidor cliente.

quando tendo acessar a rede da matriz via \\ ou via terminal service não conecta.
Ubuntu 14.04.2 LTS

zekkerj

O firewall do servidor de destino está configurado pra aceitar conexões das redes 10.0.2.0/24 e 192.168.1.0/24 ?
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

willsazon

Citação de: zekkerj online 09 de Abril de 2018, 14:20
O firewall do servidor de destino está configurado pra aceitar conexões das redes 10.0.2.0/24 e 192.168.1.0/24 ?

Agora você me pegou meu amigo.
Preciso ver isso na máquina gateway da rede ou no servidor vpn matriz/filial?

Caso nao esteja você sabe me dizer como eu habilita?
Ubuntu 14.04.2 LTS