Made4it

Túnel GRE + IPSec entre Cisco IOS e Huawei NE40

Neste post iremos discutir um cenário muito comum (e pouco documentado), que é utilizar um túnel GRE protegido com IPSec entre um roteador Cisco IOS ASR1002 e um Roteador Huawei NE40.

A topologia deste exemplo é descrita abaixo. Ela foi mantida simples para que possamos discutir os detalhes do GRE+IPSEC, sem entrar nos demais pontos da rede.

Nela temos o roteador Cisco com endereço IP público 198.51.100.2 e o roteador Huawei NE40 com o IP público 203.0.113.66. Ambos estão conectados à Internet, e com conectividade entre si. Precisamos estabelecer um túnel GRE entre os roteadores e protegê-lo através do IPSec no modo tunnel. O endereçamento do túnel é 172.31.31.0/30.

Nas próximas linhas abaixo iremos falar sobre o GRE e IPSec. O objetivo não é detalhar completamente estes protocolos, mas dar um overview e principalmente, uma base para o restante do artigo. Não seja apressado, há informações bem relevantes ali no meio.

GRE

O Generic Routing Encapsulation (GRE) é um protocolo de tunelamento que consegue encapsular uma variedade de protocolos de rede (ex: ATM, IPX, IPv6 e até mesmo IPv4) dentro de pacotes IPv4. Estes pacotes então podem ser transmitidos através das redes IPv4 comuns (ex Internet).

Alguns casos de uso do GRE:
interligar redes internas desconectadas entre si
interligar redes IPv6 isoladas por meio de redes IPv4
estabelecer comunicação Matriz x Filial pela Internet
links de mitigação
com VPNs quando necessários protocolos de roteamento


IPSEC

O IPSec é um framework de segurança desenvolvido pelo IETF que busca resolver problemas de segurança que o protocolo IPv4 não conseguiu tratar, como por exemplo encriptação, integridade de dados, validação de origem e anti-replay.
Na realidade o IPSec não é um único protocolo, e sim uma combinação de protocolos e algoritmos. Os principais são o IKEv1, IKEv2, ESP e o AH.

O IPSec é usado amplamente nas VPNs, sejam elas de remote-access e também nas site-to-site.

No ciclo de vida de um túnel, temos 5 etapas bem definidas:

  1. Definição do tráfego interessante
    O tráfego interessante é o gatilho que faz com que o túnel seja estabelecido. O roteador ou firewall, ao notar um tráfego interessante, inicia as próximas etapas da negociação do IPSec.
    O tráfego interessante geralmente é configurado na forma de ACLs, ou policies de tráfego.

  2. IKE fase 1
    Na fase 1 o protocolo estabelece um canal seguro de comunicação com o peer remoto. Uma vez estabelecido este canal seguro, as trocas de mensagens da fase 2 são permitidas.
    É na fase 1 que são protegidos os peers, autenticados, e as policies de ISAKMP são comparadas (e precisam casar). Existem dois modos, main e aggressive.

    Termos que você vai ver sobre a fase 1: ike, isakmp, DH group, pre-shared-key, integrity, isakmp policy

  3. IKE fase 2
    Nesta fase, já com o túnel seguro protegido estabelecido na fase 1, podemos negociar o que chamamos de IPSec SAs, que nada mais são os “contratos” do tipo de tráfego que serão protegidos pelo túnel IPSec, negociados dinamicamente. Um exemplo pode ser “vou proteger o tráfego da rede 192.168.1.0/24 quando o destino for 192.168.2.0/24 usando o algorítimo de encriptação X e de autenticação Y”, e o peer remoto faz a regra no sentido inverso.

    Outra função da fase 2 é manter os SAs, assim como expirar as chaves e as sessões caso algum parâmetro seja alcançado (ex: expire os SAs e negocie novos a cada x horas, ou a cada N kilobytes).

    Termos que vamos ver sobre a fase 2: ipsec, ipsec sa, crypto acl, transform set, mode tunnel, authentication, encryption, ipsec policy

  4. Transferência de dados
    Nesta fase é a transferência de dados em si. Assim que o tráfego interessante chega no roteador, e as fases 1 e 2 são completas, os pacotes são enviados de acordo com os contratos estabelecidos nos IPSec SA, sendo transmitidos até o peer remoto.

  5. Encerramento do túnel
    O encerramento do túnel acontece por processo manual, ou quando algum parâmetro do IPSec expira ou chega ao seu limite. Neste caso, todas as chaves são descartadas, os contratos desfeitos e se o tráfego precisar ser encaminhado, um novo túnel IPSec precisa ser estabelecido.

Para mais detalhes do GRE e IPSEC, consulte as referências citadas no final do artigo.

 

As configurações de GRE e IPSEC acordadas entre as partes

O exemplo abaixo é de como as informações de VPN são acordadas. Geralmente são formulários que são preenchidos com as informações sobre o túnel.

VPN Device

Site A VPN Device

Site B VPN Device

 

VPN Peer IP Address *

198.51.100.2

203.0.113.66

 

Device *

Cisco ASR 1004

Huawei NE40-M2K

 

Version *

V3.0.6

<COLOCAR_VERSAO>

 
       
       

Tunnel Properties

Site A VPN Device

Site B VPN Device

Phase 1

Authentication Method

<Pre-Shared Key> 

UmaSenhaBemS3gur@

<Pre-Shared Key>

UmaSenhaBemS3gur@

IKE version

IKEv2

IKEv2

Diffie-Hellman Group

group 14

group 14

Encryption Algorithm *

AES 256 

AES 256 

Hashing Algorithm *

SHA-1

SHA-1

Main or Aggressive Mode *

Main mode

Main mode

SA Lifetime * (for renegotiation) with no kbytes rekeying

86400 seconds

86400 seconds

Phase 2

Encapsulation * (ESP or AH)

ESP

ESP

Encryption Algorithm *

AES 256 

AES 256 

Authentication Algorithm *

SHA-1

SHA-1

Perfect Forward Secrecy for rekeying *

Disabled

Disabled

Diffie-Hellman Group *

group 14

group 14

SA Lifetime * (for renegotiation) ) with no kbytes rekeying

3600 seconds

3600 seconds

GRE

Addressing

172.31.31.1/30

172.31.31.2/30

Keepalives

Disabled

Disabled

MTU

1400

1400

Adjust MSS

1360

1360

Informações importantes sobre licença/módulos

Veja com o fabricante dos seus equipamentos se não é necessário algum tipo de placa de serviços, ou licença.

No caso dos equipamentos deste laboratório, o roteador NE40-M2K não precisou de módulo físico adicional, apenas a licença de IPSec. No roteador Cisco também não foi necessário licença, pois o IOS dele já estava no ADVIPSERVICES-K9 (que contém toda a base para o Ipsec).

*informação útil*: se quiser rodar IKEv1, no roteador Huawei você precisa de um módulo de software para IKEv1 (que você consegue com o fornecedor Huawei).

Configurações do Cisco IOS XE

Vamos lá então configurar o roteador Cisco para estabelecer a VPN. Não vou entrar em detalhes das interfaces físicas, somente da VPN. No final do artigo tem um bloco com a conf pertinente delas.

Configurações de fase 1, de acordo com a tabela acima:

Tudo o que estiver acima é relativo à Fase 1. Então quando estiver diagnosticando problemas, e ele for desta fase, já sabe onde mudar 🙂.

Agora, configurando a fase 2:

Simples demais no Cisco! Vamos agora combinar as duas fases em um profile:

Criando o túnel GRE e adicionando a proteção IPSec:

Configurações do Huawei

Vamos lá então configurar o roteador Huawei para estabelecer a VPN. Assim como do Cisco, não vou entrar em detalhes das interfaces físicas, somente da VPN. No final do artigo tem um bloco com a conf pertinente delas.

A configuração no roteador Huawei é um pouco mais complexa, pois ele cria um túnel para o protocolo GRE, e um túnel para o IPSec. Além disso, queremos usar o mesmo IP para ambos os túneis, sendo necessária uma VRF. 😮

Criando o service instance para uso da VPN (aplicavel somente no NE40):

Subindo a nova VRF (vpn-instance):

Criando as duas interfaces Loopback com o mesmo IP (magias da VRF). A looback com o túnel IPSec ficará na tabela de roteamento pública, enquanto que a com o túnel GRE ficará na tabela VPNA.

Agora sim chegamos ao IPSec. 

A ACL de tráfego interessante define o tráfego que será protegido pelo IPSec. No caso então, teremos o tráfego GRE entre os IPs do site A e site B. Perceba que só faço a comunicação em um sentido – o sentido do roteador protegendo o tráfego dele). 

A ACL acima pode ser lida assim:

“Proteja os dados do protocolo GRE, vindo da VRF vpna entre a origem 203.0.113.66 e o destino 198.51.100.2”

Partimos agora para criar a fase 1 (lembra que no Cisco já até começa com ela, muito mais simples). No meio dela tem algumas configurações de binding de VPN-Instance, por conta da VRF criada.

Tudo o que estiver acima é relativo à Fase 1. Então quando estiver diagnosticando problemas, e ele for desta fase, já sabe onde mudar 🙂.

Seguimos para a fase 2:

Vamos agora combinar as duas fases em um profile:

Criando os túneis GRE e IPSEC. Vamos lá para não confundir:

Tunnel 900 – é um túnel GRE, operando por dentro da vpna.

Tunnel 10 – é um túnel IPSec, operando na tabela global

A ideia na Huawei é de que exista um túnel IPSec rodando por fora, e um segundo túnel GRE por dentro, um encapsulado no outro. Mas o engraçado é que o túnel GRE roda fora da VRF, e o ipsec dentro. Baguncinha, né?

Então o tunnel900 que é o GRE (e que recebe os IPs do /30) usa um destino que vai por dentro da VPNA. E dentro da VPNA o destino é alcançado pelo túnel IPSec. Também observe que a policy de IPsec foi associada ao tunnel 10, utilizando o profile que foi criado.

Por fim, e não menos importante, uma rota que tem uma certa complexidade em si mesma: dentro da instancia VPNA, eu digo que para chegar ao peer remoto, eu utilizo a interface de IPSec recém-criada, com o next-hop o próprio peer.

E assim configuramos o roteador Huawei. Vamos ver se subiu agora.

Validação do funcionamento

No processo de validação do túnel, devemos sempre lembrar que cada fase e etapa depende do estabelecimento completo da outra, logo, não adianta querer ter conectividade se a fase 1 ainda não estabeleceu a comunicação.

Em ambos os roteadores, vamos validar em sequência:

  • conectividade
  • fase1
  • fase2
  • conectividade GRE
  • status das interfaces

Vamos lá para os testes.

Checagem Cisco

Validando a conectividade via ICMP ping

Checando se o IKEv2 estabeleceu na Fase 1:

Quando não aparecer nada na saída, ou ele não estiver em ready, quer dizer que alguns dos parâmetros da Fase 1 não casaram. Confira em ambos os lados se eles estão de acordo.

Continuamos a validação na Fase 2:

Na saída acima, vemos que os roteadores trocaram o contrato de “tráfego interessante”. Cada lado se comprometeu a proteger um sentido da comunicação GRE.

Em sequência ainda na Fase 2, existem alguns contadores muito importantes que se referem a pacotes enviados/recebidos/encapsulados/encryptados/verificados. Ele fica na saída do comando “show crypto ipsec sa”.  Vamos ver eles.

Quando estes contadores não estão incrementando, ou ainda incrementando falhas, é porque alguma configuração da Fase 2 não está casando.  

Um bom exemplo seria somente o contador de encaps/encrypt ser incrementado, e enquanto o decaps/decrypt ficando zerado. Isto vai ser um problema da ACL de tráfego interessante que está divergindo em ambos os lados. Ou bloqueio da comunicação na rede de transporte ou ainda outros fatores que não vamos tratar aqui. Se precisar de ajuda, não deixe de nos contactar.

Por fim, vamos validar a conectividade em si! Mas agora por dentro do túnel já protegido!

E a interface túnel se apresenta up, e funcional:

Checagem Huawei

Para validar o funcionamento no roteador Huawei NE40, a abordagem é a mesma do Cisco. 

Validando a conectividade via ICMP ping (lembrar de usar a origem loopback)

Checando se o IKEv2 estabeleceu na Fase 1:

Quando não aparecer nada na saída, ou ele não estiver em ready (RD), quer dizer que alguns dos parâmetros da Fase 1 não casaram. Confira em ambos os lados se eles estão de acordo.

Continuamos a validação na Fase 2:

Por fim, vamos validar a conectividade em si, conferindo os contadores de tráfego! Mas agora por dentro do túnel já protegido!

E a interface túnel se apresenta up, e funcional:

Com isto chegamos ao túnel estabelecido e funcionando entre o roteador Cisco IOS XE e o Huawei NE40! 

Configuração completa do Cisco

Configuração completa do Huawei

Autores

Rafael Ganascim

Julian Eble

Referências

[1] Overview of GRE. NE40E-M2 Huawei.   https://support.huawei.com/hedex/hdx.do?docid=EDOC1100277532&id=EN-US_CONCEPT_0172355906&ui=1

A Made4it surge para suprir as necessidades do mercado, que vem exigindo cada vez mais soluções personalizadas.