Tutorial – Como interligar dois locais através de uma VPN?
Imagine por exemplo que tem uma empresa na Guarda e uma filial em Viseu e pretende constituir uma única rede privada (Guarda+Viseu) sem contratar circuitos dedicados ou algum tipo de ligação adicional. Na prática, pretende-se que as duas redes privadas (da Guarda e Viseu) se "unam" podendo um utilizador que se encontre em Viseu aceder localmente aos serviços da rede da Guarda (ex. um utilizador da Guarda poderá imprimir numa impressora localizada em Viseu, entre outros serviços).
Para a implementação de um cenário deste tipo, hoje vamos ensinar como poderão implementar uma VPN (Site-toSite VPN) entre dois locais, recorrendo ao OpenVPN e ao Linux.
As organizações que usam VPNs beneficiam com um aumento de flexibilidade e escalabilidade a nível de comunicações e até produtividade. As VPN’s permite “trazer” as máquinas remotas para dentro da rede interna, garantindo de certa forma uma nível de segurança idêntico como se o utilizador estivesse dentro da organização. Além dos benefícios referidos, realçar também a poupança de custos a nível de comunicações (já que não é necessário contratar circuitos dedicados). Para quem exerce teletrabalho, as VPNs são sem duvida uma forma de estar ligado à organização/empresa remotamente e de forma segura.
Requisitos para a implementação deste tutorial
- As máquinas que vão estabelecer a VPN deverão ter um IP Publico (num cenário real)
- As máquinas deverão ter instalado o Linux CentOS 6.2 (deverá funcionar em outras versões
Nota: Vamos considerar os nomes Pplware-Guarda (Sede) e Pplware-Viseu (Filial)
Para a instalação e configuração do cenário, devem seguir os seguintes passos:
Passo 1 - Adicionar o Repositório EPEL (fazer em ambas as máquinas)
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm |
Passo 2 - Instalar o OpenVPN (fazer em ambas as máquinas)
yum install openvpn |
Configurar openvpn em Pplware-Guarda
Passo 3 - Criar uma chave privada
openvpn --genkey --secret /etc/openvpn/chaveprivada |
Passo 4 - Criar o ficheiro /etc/openvpn/pplware-guarda.conf e acrescentar a seguinte informação:
# interface TUN dev tun ifconfig 10.0.0.1 10.0.0.2 cd /etc/openvpn secret chaveprivada port 5000 user nobody group nobody comp-lzo ping 15 verb 3 |
Passo 5 - Para colocar a VPN a funcionar no Pplware-Guarda, deverão executar o comando
openvpn --config /etc/openvpn/pplware-guarda.conf –daemon |
ao fazer um ifconfig,deverá observar algo semelhante:
tun0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.1 P-t-P:10.0.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1255 Metric:1
RX packets:138353257 errors:0 dropped:0 overruns:0 frame:0
TX packets:1144923568 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (3245.0 Mb) TX bytes:383951667 (2321.1 Mb)
Configurar openvpn em Pplware-Viseu
Passo 6 - Copie a chave privada que foi gerada no passo 3 para este servidor e coloque-a em /etc/openvpn/chaveprivada
Passo 7 - Criar o ficheiro etc/openvpn/pplware-viseu.conf e acrescentar a seguinte informação:
# interface TUN dev tun ifconfig 10.0.0.2 10.0.0.1 remote IP_DA_MÀQUINA_Pplware-Guarda cd /etc/openvpn secret chaveprivada port 5000 user nobody group nobody comp-lzo ping 15 verb 3 |
Nota: Não se esqueçam de alterar o parâmetro
Passo 8 - Para colocar a VPN a funcionar no Pplware-Viseu, deverão executar o comando
openvpn --config /etc/openvpn/pplware-viseu.conf –daemon |
Para testar se tudo funciona, experimente se consegue pingar o 10.0.0.1 a partir do Pplware-Viseu e assim confirmar se o tunel VPN foi estabelecido corretamente entre as máquinas e assim criado um ponto de ligação entre as redes. É claro que serão necessárias configurações adicionais para que os clientes de um lado cheguem a serviços do outro...mas isso analisaremos em próximos artigos caso haja interesse por parte dos nossos leitores.
Agradecimento ao Hélio Silva pelo teste das configurações.
Este artigo tem mais de um ano
Muito bom este Tut. vão haver bastantes comentarios positivos. Espero que continues . Abraço!
Obrigado Nelson. Com uns leitores assim, a motivação aumenta ainda mais. Um Abraço
Se não for indiscrição, qual é a tua formação, licenciatura em Redes De Comunicação + CCNA?
Boas Cisco,
Sou instrutor Cisco e mestre em computação móvel.
Abraço
Ppinto
Olá Pedro Pinto, parabéns pelo excelente artigo.
Sabes onde poderei arranjar material de estudo sobre configuração de VPNs s2s em firewalls da CheckPoint? Obrigado! 🙂
Pedro Pinto, da minha parte há total interesse nesta matéria. A abordagem das VPN´s em máquinas com SO Windows também seria bem vinda 🙂
Sim uso windows server e gosraria de saber como se faz tal coisa la, e se tambem em Mac OSX, para aceder de ao windows sei que dá porque ja uma vez me fizeram isso, mas nao sei qual o melhor metodo.
Existe um cliente para windows que aceita o mesmo ficheiro de configuração, só tens de alterar a extensão de .conf para .ovpn.. depois tens o cliente por command line “openvpn –config /etc/openvpn/configuracao.ovpn” ou tens uma GUI que faz isso por ti.
Ha uma solucao simples, para casos simples…
Procurem por NeoRouter.
Para casos exigentes ‘e fundamental dominar todo o conceito de VPN, ter experiencia em redes (TCP/IP) e em Linux.
Estes tutoriais sao excelentes mas nao se esquecam que ha materias que devem ser dominadas…. por questoes de seguranca das vossas redes locais.
Cumps,
Thumbs UP!
Vou ver se arranjo um tempinho para testar isso. Mas em Windows não é sempre mais fácil que em Linux? 🙂
Otima materia, sempre acompanho o site e as materias.. Sou do Brasil e descobri por acaso.. Se conseguir postar uma materia sobre VPN no Windows agredeceria tambem.
Abraços!!
Cumps para o Brasil (e que bem se deve estar por aí :))
Ok, mais um pedido registado.O numero de pedidos já se está a tornar numa petição 🙂
Muito bom, parabéns!
Mais um excelente tutorial, gostava que continuassem com os proximos capitulos dado ser um capitulo de especial interesse para mim.
Aguardar a segunda parte…
Awesome ! 😀 Parabens pelo artigo
Boas. Também gostaria de um tutorial destes mas em ambiente windows.
Continuação de um bom trabalho
Questão:
Usar o ip publico funciona, ok, mas na maioria das ligações, é dinâmico e irá ser alterado em pouco tempo. Pode ser configurado um dns em vez de um ip? (com serviço tipo dyndns). Em caso negativo, o que se terá que fazer para isto funcionar em ambientes de ip dinâmico?
Obrigado!
Também funciona por nome, sem problemas.
@k
Funciona perfeitamente com IPs dinâmicos, e os serviços como dydns e no-ip, por ex, funcionam na perfeição com os túneis VPN. Em ambiente Linux não te sei precisar como fazê-lo, mas em Windows posso explicar-te “step-by-step” como fazê-lo. Sucintamente, basta fazeres port-forwarding para as portas TCP e UDP do serviço VPN; configurar no teu router/switch o serviço de dynamic-dns que utilizas (nos routers MEO e ZON já existe essa possibilidade); configurar no teu servidor A uma ligação de recepção VPN e no teu servidor B uma ligação VPN a apontar para o domínio de dynamic-dns que configuras-te…
Na pratica o que tem de haver é conectividade entre os dois pontos. O dyndns e o no-ip são bons serviços, mas para ambientes profissionais nunca testei..não sei se o eventual delay causado ajudará…so testando.
Gostaria de aditar um pequeno ponto.
“As máquinas deverão ter instalado o Linux CentOS 6.2 (deverá funcionar em outras versões)” funciona obviamente com varias versões e talvez mais fácil de instalar em debian ou ubuntu.
Quanto ao facto de se fazer com dyndns, funciona igualmente bem em ambiente profissional, porque actualmente os ips’s não estão a mudar com tanta frequência quanto isso, mas obviamente é muito mais eficiente com ips fixos. Pessoalmente prefiro interligar 2 locais usando router’s, maior facilidade de gestão e menor susceptibilidade a falhas (reboots de updates)
reboots de updates ?so para carregares o kernel novo de resto…é sempre a curtir!! 😉
cmps
Boas, ya em Windows ia dar imenso jeito.
Parabéns, aguardo o mesmo para o windows vai dar jeito.
Muito bom… Venha a segunda parte, pois isto poderá ser uma boa opção para muitas empresas pouparem muitos €€€, criando as suas próprias VPNs em vez de as contratarem aos ISPs.
Rui, depende do que as empresas queiram fazer com a ligação entre as redes! Se estamos a falar por exemplo de backups remotos de dados com mais de 100Gb uma VPN será insuficiente, terão de recorrer ás linhas dedicadas. Numa ligação que exija grandes transferências de dados as linhas dedicadas continuarão a ser a melhor solução.
Se o que pretendem é acesso remoto ás máquinas, mail, file-sharing, etc dá perfeitamente, como dizes, para poupar umas massas. Para pequenas e médias empresas esta solução é ideal!
Também fico á espera do tutorial para Windows.
OK
Muito porreiro… aceder a serviços de um lado e de outro era o ideal, para o caso de IPs dinamicos pode-se faze um nó central e colocar os offices como clientes, assim só é preciso um IP publico. Fica a ideia.
Muito bom o tutorial, mas gostaria que fizessem um para windows.
Acho que para próximo tutorial não deveria ser esquecida a encriptação da vpn, foi um dos passos cruciais quando criei a minha primeira vpn para ser avaliado… No inicio na nossa vpn os dados não eram encriptados e com um sniffer verificaram-se os dados a passar em plain text, depois de encriptação os dados deixaram de poder ser decifrados a olho nu… Continuem com o bom trabalho.
Só o facto de ter “Guarda” demonstra que é um grande post.
Muito bom tutorial… no entanto existe a possibilidade de fazer o mesmo em ambiente Windows, que é bem mais simples.
Se a solução é para contenção de custo, a que apresentam é a ideal. Num cenário em que o cliente já tem o equipamento, seria interessante que o pplware mostrásse um tutorial.
Um dos serviços interessantes a explorar numa VPN site-to-site seria um Sistema de Backups Remotos para garantir a integridade dos dados e fiabilidade no “Disaster Recovery”. Há pouco tempo implementei algo deste género num cliente!
Abraço e continuem com o bom trabalho
Muito bom tutorial, 5 estrelas era existir em paralelo paar windows.
Tutorial muito bom mesmo, por acaso andava á procura de algo assim, o problema era encontrar algum bem explicado como este está. E sim, como o Marco Cleyder menciona, para Windows também dava jeito 😉
Cumprimentos
Só para dizer que existe uma “interface” web para gerir servidores que tem um módulo OpenVPN que funciona lindamente. Chama-se webmin e cria .confs e .ovpn (que também servem para ser usados em Linux além de em Windows).
Bom artigo, espero que continue. 🙂
Boas Pedro,
Bem lembrado. https://pplware.sapo.pt/linux/webmin-1-510-controle-o-seu-linux-via-browser/
De facto Webmin é uma ferramenta fabulosa!
E agora o pessoal a pedir-me para fazer para Windows… O que eu faço??? tenho de o fazer mesmo 🙂
Apesar de não ter as imgs todas do PPT, fica aqui uma explicação de como se fazer em Linux – Linux e Linux – Windows
http://www.slideshare.net/rafarsimoes/aula-src-openvpnconfigurao-com-chave-publica
Afinal o SlidShare cortou as animações 🙁
Faz!!! 🙂 Era muito fixe 😀
what the… O.o
Por que raio não fizeste a configuração nos routers de acesso à Internet?
Não me digas que estás a passar todo o tráfego para a máquina, ficando a ligação dos utilizadores mais lenta…
Os pacotes vão cifrados com que protocolo?
Pois é falta a parte da configuração das portas nos respectivos routers nos dois locais. A porta por defeito é a 1194 UDP. Sem isto, nada feito.
O openVPN vem por defeito com SSL/TLS. O openVPN utiliza a libraria openSSL e portanto dependente das suas capacidades criptograficas.
É bastante configuravél e dá para adicionar medidas extra de segurança.
Mas não só. Suporta tb IPSec por ex.
Mais info: https://wiki.archlinux.org/index.php/OpenVPN
http://openvpn.net/index.php/open-source/documentation/howto.html
Tenho varios cenarios com routers da draytek, funcionam 100%, sem falhas. Um dos cenarios é onde só na sede tenho ipfixo, nas filiais e dinamico com dyndns.
Configurei a vpn PPTP onde são as filiais que iniciem o tunel para a sede, se falhar cada 5 seg tenta voltar a ligar.
Depois existem varios parametros no tunel para que possa pingar ip de um local para outro. Ja a 3 anis e que funciona assim.
IG poderias disponibilizar uma imagem com essa configuração?
Tenho muito interesse em ver essa configuração.
Obrigado
Estás a falar da funcionalidade LAN-to-LAN dos Draytek, não é? Eu uso essa funcionalidade e não tenho problemas com nada. Funciona até com todos os routers num ambiente de IP dinâmico e com variadas encriptações.
Sempre que um cliente quer implementar uma VPN, é este o método que uso. É só ver os Thompson a sair de cena! 🙂
Otimo tutorial !
Deixo como dica, um outro tutorial usando o Windows Server.
Abraços
Muito bom tutorial, parabéns!
Boa tarde,
Deixo uma sugestão.
Também é possível fazer isto com a aplicação Untangle que permite ter um servidor e um cliente.
Uso o Untangle para ligar 6 filiais à sede e sem dúvida não quero outra coisa, e é OpenSource e muito fácil de instalar.
vc poderia me passar o seu email, preciso de ajuda no que diz respeito e até agora não consegui ninguém me ajude
Desculpe, a interligação das filiais aqui da empresa que por enquanto são apenas 5, mas esse numero vai subir para 18 até o final do ano que vem
Um tutorial windows é que era!
Ve o meu post mais em cima…
Em configurações Windows-Windows é possível recorrer às ferramentas VPN nativas para configurar túneis PPTP ou L2TP.
Agora resta saber se os leitores querem esta opção (útil quando se pretende uma configuração sem demoras) ou com openvpn 🙂
Olá, saudações lusitanas, sou português e moro no Brasil há 4 anos, gostei muito dessa matéria.. excelente Pedro Pinto, parabéns.. será que é possível uma matéria dessa em Windows Server 2008 ? grato 🙂
Muitos parabéns, gostei muito deste tópico e espero mais…
Há interesses em continuação, sim senhor 🙂
Muito bom artigo! Obrigado!
Boas
Para quem precisa deste tipo de ligações (VPN) o Hamachi do log me in funciona muito bem e é facil de configurar.
Pena é a versão gratuita só permitir ate 5 pc’s ligados na mesma VPN.
Excelente trabalho.
Boas férias a todos.
Mas antes das férias que tal o mesmo em Windows?
Um abraço
Pplware boa noite,
Gostaria de saber se há alguma previsão para postagem da da segunda parte desse tutorial que achei muito interessante fazer isso no Linux.
Fique Com Deus, Abraços!!!
Correndo o risco de fazer uma pergunta super estúpida mas há maneira através de VPN (ou algo similar) de ligar o PC do emprego ao router de casa (MEO Thomson 784n)?
A ligação aqui no emprego é através de rede (ip interno + porta 80) para fora e é super limitada. Se houvesse uma forma “fácil” para me pendurar no router de casa poderia usufruir um pouco mais de acesso.
Estou a pedir o impossível não estou?
Caso seja possível poderiam-me encaminhar alguma leitura nesse sentido caso não me queiram ensinar?
Desde já agradecendo…
Possivelmente a questão do limitado resolve-se com o uso de proxies….
Outro caso é o do teu patrão não vos deixar aceder a certos sites…nesse caso, a conversa já é outra…
referes-te ao facto de teres conteúdo bloqueado, ou ao facto da velocidade ser baixa?
Bem simples de configurar.
Olá Pedro,
Ao fazer o download do EPEL diz que o url não foi encontrado.
Podes dar uma ajuda.
Obrigado.
PS: Os tutotiriais e artigos são excelentes. Obrigado pelo excelente trabalho.