GRE significa Generic Routing Encapsulation. É um protocolo de tunelamento desenvolvido pela Cisco e definido na RFC 2784.
A função do GRE é encapsular pacotes de qualquer protocolo de camada 3 dentro de pacotes IP comuns. Com isso, você consegue transportar tráfego de redes privadas através de redes públicas, ou transportar IPv6 sobre uma rede que só tem IPv4.
Daí o GRE cria um link virtual ponto a ponto entre dois roteadores sobre qualquer rede IP.
Para que serve o GRE
Conectar redes privadas sobre a internet: uma filial com rede 192.168.10.0/24 precisa falar com a matriz com rede 192.168.20.0/24 através da internet. O GRE cria um túnel virtual entre os roteadores de borda.
Transportar IPv6 sobre IPv4: em redes que ainda não têm suporte nativo a IPv6, o GRE encapsula os pacotes IPv6 dentro de pacotes IPv4 para atravessar a rede.
Transportar protocolos de roteamento: OSPF e EIGRP só funcionam entre roteadores diretamente conectados. Com GRE, você pode rodar OSPF entre dois roteadores separados por uma rede de terceiros.
O que o GRE não faz
GRE não tem criptografia. Um túnel GRE puro é como um pipe de plástico transparente: o tráfego passa, mas qualquer um que capture os pacotes na rede pública consegue ler o conteúdo.
Fato é que o GRE é combinado com IPsec quando criptografia é necessária. GRE cuida do tunelamento, IPsec cuida da segurança. Essa combinação se chama GRE over IPsec.
Como o GRE funciona
O roteador de origem encapsula o pacote original (chamado passenger) dentro de um header GRE e depois dentro de um header IP com o endereço público do roteador de destino como destino.
[IP externo (público)] [Header GRE] [IP interno (privado)] [Dados]
O roteador de destino recebe o pacote, remove os headers externo e GRE, e entrega o pacote original para a rede de destino.
Configuração passo a passo
Cenário: R1 (IP público 203.0.113.1) quer se conectar com R2 (IP público 203.0.113.2) através de um túnel GRE. O túnel vai usar a subnet 10.0.0.0/30.
Em R1:
! Criar a interface de túnel
Router1(config)# interface Tunnel0
Router1(config-if)# ip address 10.0.0.1 255.255.255.252
Router1(config-if)# tunnel source GigabitEthernet0/0
Router1(config-if)# tunnel destination 203.0.113.2
Router1(config-if)# tunnel mode gre ip
Router1(config-if)# no shutdown
Em R2:
Router2(config)# interface Tunnel0
Router2(config-if)# ip address 10.0.0.2 255.255.255.252
Router2(config-if)# tunnel source GigabitEthernet0/0
Router2(config-if)# tunnel destination 203.0.113.1
Router2(config-if)# tunnel mode gre ip
Router2(config-if)# no shutdown
O tunnel source aponta para a interface física (ou o IP público). O tunnel destination é o IP público do outro lado. O tunnel mode gre ip é o padrão e pode ser omitido.
Roteamento pelo túnel
Com o túnel criado, os dois roteadores têm conectividade na subnet 10.0.0.0/30. Mas as redes privadas atrás de cada roteador ainda não se comunicam. Precisamos de roteamento pelo túnel.
Opção 1: rota estática
Router1(config)# ip route 192.168.20.0 255.255.255.0 10.0.0.2
Router2(config)# ip route 192.168.10.0 255.255.255.0 10.0.0.1
Opção 2: OSPF pelo túnel
Router1(config)# router ospf 1
Router1(config-router)# network 10.0.0.0 0.0.0.3 area 0
Router1(config-router)# network 192.168.10.0 0.0.0.255 area 0
O OSPF vai formar adjacência através do túnel como se fosse um link direto.
Verificação
Router1# show interface Tunnel0
Tunnel0 is up, line protocol is up
Hardware is Tunnel
Internet address is 10.0.0.1/30
MTU 17916 bytes, BW 100 Kbit/sec
Tunnel source 203.0.113.1 (GigabitEthernet0/0)
Tunnel destination 203.0.113.2
Tunnel protocol/transport GRE/IP
Router1# show ip route
...
C 10.0.0.0/30 is directly connected, Tunnel0
S 192.168.20.0/24 [1/0] via 10.0.0.2
O túnel sobe (line protocol is up) quando existe conectividade IP com o destino. Se o IP público do destino não está alcançável, o túnel fica down.
O que a prova CCNA cobra
GRE está no domínio IP Connectivity. Os pontos mais frequentes:
O que o GRE faz (encapsulamento de camada 3). O que o GRE não faz (sem criptografia). Os comandos: tunnel source, tunnel destination, tunnel mode gre ip. Por que o GRE é combinado com IPsec em produção. O estado do túnel: sobe quando há rota para o tunnel destination.
FAQ
O GRE aumenta o overhead do pacote? Sim. O header GRE adiciona 24 bytes e o header IP externo mais 20 bytes. Total de 44 bytes por pacote. Daí o MTU efetivo de um túnel GRE sobre uma rede com MTU de 1500 é de 1476 bytes para o passenger.
Posso ter múltiplos túneis GRE no mesmo roteador? Sim. Cada túnel é uma interface lógica separada: Tunnel0, Tunnel1, Tunnel2. Cada um com seu próprio par source/destination.
GRE funciona com IPv6?
Sim. tunnel mode gre ipv6 encapsula IPv6 dentro de IPv6. tunnel mode ipv6ip encapsula IPv6 dentro de IPv4 (6in4). A configuração varia conforme o modo.
▌ GRE e conectividade IP são temas de IP Connectivity do CCNA. O diagnóstico gratuito do PacketPass mostra onde estão suas lacunas. Resultado na hora, sem cadastro.
Informações baseadas no blueprint CCNA 200-301 atual, RFC 2784, Cisco Press e documentação oficial da Cisco sobre GRE.