domingo, 12 de janeiro de 2014

VPN Dinâmica Multiponto (DMVPN) em Roteadores Cisco

Olá Pessoal.

Através das VPNs tradicionais acaba sendo inviável implementar uma topologia full-mesh para estabelecimento de todos os links possíveis entre as unidades remotas de uma empresa porque sua complexidade é de ordem exponencial, matematicamente expressada através da fórmula (n²-n)/2. Por exemplo, uma empresa que tenha 5 unidades teria que configurar 10 VPNs para conectar essas unidades através de todas as ligações possíveis: (5²-5)/2 = (25 - 5)/2 = 20/2 = 10.

Uma solução comum para contornar essa complexidade é a implementação de uma topologia hub-and-spoke, de forma que cada filial é conectada apenas com a matriz (ponto central concentrador), o que reduz a quantidade de ligações necessárias à quantidade de unidades remotas. A figura abaixo traz uma imagem comparando essas duas topologias.


Embora a topologia hub-and-spoke resolva o problema da complexidade, ela implica em pior desempenho caso duas filiais queiram se comunicar entre si, uma vez que será necessário trafegar os dados pelo ponto central. Do ponto de vista de desempenho seria mais interessante que as duas filiais tivessem uma VPN diretamente configurada entre elas. A tecnologia de DMVPN (Dynamic Multipoint VPNprovê uma solução escalável para configuração de túneis dinâmicos em ambientes que possuem diversos sites. A vantagem dessa solução é que ela é "simples" de configurar como a topologia hub-and-spoke, mas tem o desempenho otimizado da topologia full-mesh. 

Na configuração de DMVPN é necessário criar VPNs apenas entre as filiais e a matriz (unidade central), no entanto, quando há comunicação entre duas filiais, essa solução estabelece dinamicamente uma VPN temporária para que o tráfego entre as unidades não tenha que passar pelo ponto central. Por conta do overhead inerente a todo processo dinâmico, é recomendado que essa solução seja implementada tendo em mente a regra 80/20, onde 80% do tráfego ocorra entre filiais e matriz e os demais 20% ocorram entre as filiais.

O processo de configuração da DMVPN combina as seguintes tecnologias: Túneis GRE (Generic Routing Encapsulation), IPSec e Protocolo NHRP (Next Hop Resolution Protocol). Para exemplificar sua configuração estarei utilizando como base o cenário apresentado na figura abaixo, onde existem 3 unidades remotas conectadas na Internet. Observem no cenário que R1 representa o ponto central (hub), enquanto que R2 e R3 são spokes.


A principal diferença na configuração de uma DMVPN em relação a uma VPN tradicional é que o roteador no ponto central (hub) irá executar uma instância servidora do protocolo NHRP. As filiais executam uma instância cliente do NHRP, informando automaticamente seus endereços públicos para manter a tabela de pontos (spokes) do servidor sempre atualizada. Quando duas filiais (spokes) vão se comunicar o roteador da filial de origem do tráfego faz uma busca ao servidor NHRP (roteador da matriz) para saber o endereço público de destino da outra ponta. Depois disso já é possível iniciar o processo de estabelecimento de um túnel dinâmico temporário através de uma interface mGRE (multipoint GRE).

Então vamos à configuração de R1 (hub):

01. R1(config)# crypto isakmp policy 10
02. R1(config-isakmp)# hash md5
03. R1(config-isakmp)# authentication pre-share
04. R1(config-isakmp)# exit
05. R1(config)# crypto isakmp key SENHA address 0.0.0.0 0.0.0.0
06. R1(config)# crypto ipsec transform-set NOME esp-3des esp-md5-hmac 
07. R1(cfg-crypto-trans)# exit
08. R1(config)# crypto ipsec profile DMVPN
09. R1(ipsec-profile)# set security-association lifetime seconds 120
10. R1(ipsec-profile)# set transform-set NOME
11. R1(ipsec-profile)# exit
12. R1(config)# int tunnel 0
13. R1(config-if)# ip address 192.168.0.1 255.255.255.0
14. R1(config-if)# ip mtu 1440
15. R1(config-if)# ip nhrp authentication SENHA
16. R1(config-if)# ip nhrp map multicast dynamic
17. R1(config-if)# ip nhrp network-id 1
18. R1(config-if)# tunnel source f0/0
19. R1(config-if)# tunnel mode gre multipoint
20. R1(config-if)# tunnel key 0
21. R1(config-if)# tunnel protection ipsec profile DMVPN
22. R1(config-if)# exit
23. R1(config)# ip route 192.168.2.0 255.255.255.0 192.168.0.2
24. R1(config)# ip route 192.168.3.0 255.255.255.0 192.168.0.3

Em relação à configuração, reparem que o servidor NHRP foi ativado nas linhas 15, 16 e 17; e que o modo do túnel é "gre multipoint" (linha 19). Apenas para constar, as linhas 23 e 24 são rotas estáticas necessárias para direcionar o tráfego destinado às redes locais (LAN) através do endereço do respectivo roteador na VPN Multiponto.

Agora vamos à configuração de R2 e R3 (spokes):

01. R2(config)# crypto isakmp policy 10
02. R2(config-isakmp)# hash md5
03. R2(config-isakmp)# authentication pre-share
04. R2(config-isakmp)# exit
05. R2(config)# crypto isakmp key SENHA address 0.0.0.0 0.0.0.0
06. R2(config)# crypto ipsec transform-set NOME esp-3des esp-md5-hmac
07. R2(cfg-crypto-trans)# exit
08. R2(config)# crypto ipsec profile DMVPN
09. R2(ipsec-profile)# set security-association lifetime seconds 120
10. R2(ipsec-profile)# set transform-set NOME
11. R2(ipsec-profile)# int tunnel 0
12. R2(config-if)# ip address 192.168.0.2 255.255.255.0
13. R2(config-if)# ip mtu 1440
14. R2(config-if)# ip nhrp authentication SENHA
15. R2(config-if)# ip nhrp map multicast dynamic
16. R2(config-if)# ip nhrp map 192.168.0.1 203.0.113.2
17. R2(config-if)# ip nhrp map multicast 203.0.113.2    
18. R2(config-if)# ip nhrp network-id 1
19. R2(config-if)# ip nhrp nhs 192.168.0.1
20. R2(config-if)# tunnel source f0/0
21. R2(config-if)# tunnel mode gre multipoint
22. R2(config-if)# tunnel key 0
23. R2(config-if)# tunnel protection ipsec profile DMVPN
24. R2(config-if)# exit
25. R2(config)# ip route 192.168.1.0 255.255.255.0 192.168.0.1
26. R2(config)# ip route 192.168.3.0 255.255.255.0 192.168.0.3

***

R3(config)#
01. R3(config)# crypto isakmp policy 10
02. R3(config-isakmp)# hash md5
03. R3(config-isakmp)# authentication pre-share
04. R3(config-isakmp)# exit
05. R3(config)# crypto isakmp key SENHA address 0.0.0.0 0.0.0.0
06. R3(config)# crypto ipsec transform-set NOME esp-3des esp-md5-hmac
07. R3(cfg-crypto-trans)# exit
08. R3(config)# crypto ipsec profile DMVPN
09. R3(ipsec-profile)# set security-association lifetime seconds 120
10. R3(ipsec-profile)# set transform-set NOME
11. R3(ipsec-profile)# int tunnel 0
12. R3(config-if)# ip address 192.168.0.3 255.255.255.0
13. R3(config-if)# ip mtu 1440
14. R3(config-if)# ip nhrp authentication SENHA
15. R3(config-if)# ip nhrp map multicast dynamic
16. R3(config-if)# ip nhrp map 192.168.0.1 203.0.113.2
17. R3(config-if)# ip nhrp map multicast 203.0.113.2    
18. R3(config-if)# ip nhrp network-id 1
19. R3(config-if)# ip nhrp nhs 192.168.0.1
20. R3(config-if)# tunnel source f0/0
21. R3(config-if)# tunnel mode gre multipoint
22. R3(config-if)# tunnel key 0
23. R3(config-if)# tunnel protection ipsec profile DMVPN
24. R3(config-if)# exit
25. R3(config)# ip route 192.168.1.0 255.255.255.0 192.168.0.1
26. R3(config)# ip route 192.168.2.0 255.255.255.0 192.168.0.2

Em relação às configurações das filiais (spokes), vale observar que a configuração do NHRP mudou porque agora os roteadores são clientes, por isso a necessidade de fazer manualmente o mapeamento entre o IP da DMVPN com o endereço público de R1 (203.0.113.2). Alguns comandos interessantes para verificar se as configurações estão funcionando são:

Router# show crypto isakmp sa
Router# show crypto ipsec sa
Router# show ip nhrp

Nesse exemplo, sempre que R2 e R3 forem se comunicar, então antes será estabelecida uma VPN dinâmica entre eles, de forma que o tráfego entre R2 e R3 não tenha que ser intermediado por R1. Depois de um tempo sem tráfego entre R2 e R3 o túnel é desativado para economizar recursos dos roteadores, já que as associações criptográficas demandam bastante processamento. 

Abraço.

Samuel.

21 comentários:

  1. Samuel, Parabéns pelo blog e livros que são excelentes, uma pergunta seria possivel com esta tecnologia DMVPN interligar 8 sites com o Roteador Cisco 1900 até no Hub.

    Abraços.

    ResponderExcluir
    Respostas
    1. O link abaixo traz uma relação de equipamentos com suporte a DMVPN. Sugiro que leia o material e dê uma olhada na Tabela 2:

      http://goo.gl/0hYWcB

      Excluir
  2. Olá Samuel, Bom dia

    Excelente artigo.

    Tenho uma pendência com uma empresa que dou suporte que tem uma tologia Hub-and-Spoke com as filiais se conectando a Matriz e a Matriz passando para outras filiais.

    Só que na Matriz temos 3 Links dedicados (oi, gvt, embratel), 1 em cada Roteador Cisco 2800, quando cai a embratel, a VPN tem das filiais tem uma métrica para gvt, etc, como faço para isso ser automatizado nos Roteadores das filiais, por ex elas testarem o link, caso não funcione passar para o outro link, que vai para a mesma rede da Matriz, etc.

    Obrigado!

    ResponderExcluir
  3. Bom dia Samuel, muito boa a explicação, comecei a me interessei por DMVPN assim que li sua explicação, estou montando um Lab com uma rede DMVPN até com redundância.Você acha que futuramente a DMVPN possa substituir a VPN convencional em redes corporativas ?

    ResponderExcluir
    Respostas
    1. Olá Kevin,

      Não acho que a tecnologia DMVPN irá substituir as VPNs tradicionais do tipo site-to-site. A tecnologia tradicional está bastante disseminada e tem aplicações específicas na conexão de apenas 2 unidades (muitos casos) que dispensam VPNs multiponto. Além disso, tem a questão do suporte a essa tecnologia nas caixas de borda que se torna um empecilho frente à tecnologia tradicional amplamente suportada nas caixas convencionais.

      Abraço.

      Excluir
  4. Samuel, bom dia

    Estou com um problema de DMVPN onde o modem ADSL é de backup e não fica com o link Oi Velox up por mais de 10 minutos. E no show DMVPN está como IKE em vez de UP. Você saberia me dizer a causa de mudar para IKE e não se manter UP? E como configurar para que esse link não caia? Pois ele sempre fica up quando reiniciado ou se chutado as interfaces e depois "no shut". No aguardo, obrigado!

    ResponderExcluir
  5. Boa Noite Samuel,
    Estou fazendo um laboratório e estou utilizando este como exemplo, porém, travo no comando crypto ipsec profile DMVPN da como invalido, estou usando o packet tracer e o router 2811, sabe onde pode estar o problema?

    ResponderExcluir
    Respostas
    1. O Packet Tracer não tem suporte a DMVPN.

      Excluir
    2. Estou fazendo um trabalho escolar, qual a alternativa para o criar VPns dinamicas no packet. O escopo é uma matriz e 4 filiais conectadas via VPN e ligação de telefonia ip entre matriz e filiais. Se poder me dar um help.

      Excluir
    3. Velho esquece Packet pra qlq coisa mais avançada !

      Excluir
    4. Sugiro que use o GNS3 e acompanhe o Lab29 do livro Laboratórios de Tecnologias Cisco em Infraestrutura de Redes. Nesse laboratório você encontra um cenário de resolução de VPN Dinâmica Multiponto (DMVPN).

      Excluir
  6. Samuel,

    Eu posso dizer que a vpn entre os spokes com o hub é permanente, ao passo que a vpn entre os spokes é dinânimca?

    ResponderExcluir
  7. Samuel, só uma pergunta... Essa funcionalidade da DMVPN que utiliza o link de internet acaba sendo mais barato, mais em questão de segurança ? Tem como colocar um firewall nas filiais, já que estamos de cara pra internet ? E se eu quiser fazer um cenário desse com DMVPN somente pra acessar as redes internas da Matriz e caso alguma filial queira sair para internet posso utilizar um segundo link na matriz e todo trafico de internet sair por lá ?

    ResponderExcluir
    Respostas
    1. Sim, é possível inserir um firewall especializado na borda ou mesmo configurar ACLs nos roteadores convencionais para transformá-los em firewall.

      Excluir
  8. Estou trabalhando em um case da cisco no Brasil para o varejo IWan onde o DMVPN é um dos 5 pilares e entra com segurança, mto top

    ResponderExcluir
  9. Samuel bom dia !

    Ótimo artigo. Um duvida, quando utilizo DMVPN eu devo criar um QOS para priorizar trafego da VPN ? Estou fazendo uns testes onde já coloquei um QOS para VOIP, ROUTING e queria saber se o DMVPN também deveria ter um QOS para priorizar o trafego da VPN ou somente utilizando o "pre-classify" já resolveria essa questão ?

    Obrigado pela atenção

    ResponderExcluir
  10. Samuel, parabéns pelo LAB como foi explicado e configurado. Consegui montar no EVE-NG e funcionou perfeito. Apenas coloquei na parte de internet um roteador simulando o ISP e segui passo a passo as configurações de DMVPN e autenticação e foi só alegria...Valeu mesmo pelo aprendizado.

    Att,
    Paulo

    ResponderExcluir