Configuration d’un Tunnel GRE

Tout d’abord, un tunnel GRE (Generic Routing Encapsulation) est un processus d’encapsulations permettant de véhiculer n’importe quel protocole de la couche Réseau dans des paquets eux-mêmes de la couche Réseau. On peut donc par exemple, encapsuler de l’IPv6 dans un paquet IPv4 afin de faire communiquer deux réseaux IPv6 distants.

Dans cet article, je vais présenter une configuration dans la quelle deux réseaux distants, sont reliés par un Tunnel GRE qui permet entre autre de faire passer EIGRP d’un côté à l’autre, comme si les deux sites étaient directement liés et ce même à travers du NAT…

La Toppologie

  • R1 et R2 simulent un réseau WAN auquel chacun des deux sites, représentés par R3 et R4, sont connectés.
  • OSPF est activé sur R1 et R2 pour leurs réseaux resectifs: 80.1.0.1/30, 80.2.0.1/30 et 10.0.0.0/30.
  • R3 et R4 sont configurer avec du NAT « overload » de sorte que leurs réseaux locaux puissent sortir vers le WAN.
  • EIGRP est activé pour l’AS 1 sur R3 et R4. Le but étant qu’ils s’échangent leurs routes au travers du tunnel à mettre en  place et qu’il soit au final possible que les LANs de R3 puissent communiquer avec les LANs de R4.

Principe de mise en place du Tunnel GRE

Tout d’abord, afin d’éviter un article trop long, je vais omettre la configuration de base des routeurs. Vous trouverez les configurations complètes dans cette archive: Configurations Lab tunnel GRE.

Une fois la configuration de base en place, on peut alors créer le tunnel:

  • Sur R3, on crée une interface Tunnel0, par défaut il fonctionnera en GRE.
    1. On lui attribue une adresse IP (192.168.0.1 / 24)
    2. On défini la source du tunnel, dans le cas présent c’est l’adresse IP de l’interface sérielle de R3.
    3. On défini la destination du tunnel, qui sera ici l’adresse IP de l’interface sérielle de R4.
  • Sur R4, on crée également l’interface Tunnel0
    1. On lui attribue une adresse IP dans le même subnet que du côté de R3 (192.168.0.2 / 24)
    2. On défini la source du tunnel, dans le cas présent c’est l’adresse IP de l’interface sérielle de R4.
    3. On défini la destination du tunnel, qui sera ici l’adresse IP de l’interface sérielle de R3.

Dès que c’est fait, l’interface Tunnel0 sur R3 comme sur R4 devrait passer UP/UP. Dès lors il ne reste plus qu’à ajouter le réseau de cette interface dans la configuration de EIGRP. Et si tout va bien une adjacence se forme entre les deux routeurs par l’intermédiaire du tunnel et le routage entre les LANs des deux côtés commence.

Configuration sur R3

interface Tunnel0
  ip address 192.168.0.1 255.255.255.0
  ip summary-address eigrp 1 172.16.0.0 255.255.252.0 5
  tunnel source 80.1.0.2
  tunnel destination 80.2.0.2
router eigrp 1 passive-interface default no passive-interface Tunnel0 network 172.16.0.0 0.0.3.255 network 192.168.0.0 no auto-summary

La commande « ip summary-address eigrp 1 172.16.0.0 255.255.252.0 5 » sert à créer un summary pour l’ensemble des LANs de R3 qui sera envoyé à R4. L’avantage est qu’une seule route sera propagée au lieu des 4 de bases.

Configuration sur R4

interface Tunnel0
  ip address 192.168.0.2 255.255.255.0
  ip summary-address eigrp 1 172.16.4.0 255.255.252.0 5
  tunnel source 80.2.0.2
  tunnel destination 80.1.0.2
router eigrp 1
  passive-interface default
  no passive-interface Tunnel0
  network 172.16.4.0 0.0.3.255
  network 192.168.0.0
  no auto-summary

Vérifications

La table de routage de R3 doit maintenant contenir la route (le summary) vers les LANs de R4.

R3#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 0.0.0.0 to network 0.0.0.0
      80.0.0.0/30 is subnetted, 1 subnets
C       80.1.0.0 is directly connected, Serial0/0
     172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
D       172.16.4.0/22 [90/297372416] via 192.168.0.2, 00:53:22, Tunnel0
C       172.16.0.0/24 is directly connected, Loopback0
D       172.16.0.0/22 is a summary, 00:52:49, Null0
C       172.16.1.0/24 is directly connected, Loopback1
C       172.16.2.0/24 is directly connected, Loopback2
C       172.16.3.0/24 is directly connected, Loopback3
C    192.168.0.0/24 is directly connected, Tunnel0
S*   0.0.0.0/0 is directly connected, Serial0/0
R3#

Il est intéressant de noter que la création du tunnel ajoute un réseau connecté au routeur qui correspond à l’adresse configurée.

Quelques remarques

  • Pour que le tunnel puisse être établi, il faut au préalable que R3 et R4 puissent communiquer. C’est la raison pour laquelle une route par défaut a été ajoutée sur chacun de ces deux routeurs.
  • Un tunnel GRE, bien que très pratique a l’inconvénient de ne pas être sécurisé. Les données qui y circulent ne sont pas cryptées et il n’y a pas d’authentification aux extrémités. On peut y remédier en faisant passer le tunnel GRE au travers d’un tunnel VPN.
  • La méthode présentée ici n’est pas l’unique façon de configurer un tunnel. Dans certains cas on peut utiliser des interfaces loopback pour créer les points d’accès au tunnel (source et destination).

8 Comments on “Configuration d’un Tunnel GRE

  1. Ca aurait été intéréssant que tu pousses un peu plus loin cette fiche en faisant un tunnel VPN IPsec over GRE. Comme tu as aussi fait une fiche VPN et un fiche sur GRE, les deux fusionnés auraient été un plus.

    • Dans les fait, seule l’ACL qui fait passerl trafic par IPsec et lesadresses des deux extrémités changent par rapport à la config du VPN déjà faite, on ne peut pas dire que ça changerait grand chose 😉

      • Certe les deux fiches séparés m’ont permis de monter le tunnel VPN sans difficulté. Est-ce qu’il y aura d’autre fiche a venir sur le thématique des VPN (MPLS VPN, DMVPN) par exemple ?

        • Ce n’est pas prévu pour le moment. Mais ce sont des sujets que j’apprécie tout particulièrement. Donc pourquoi pas, mais il me faudra du temps pour rédiger un article correct sur ce genre de sujet.

  2. Hello Steve,

    J’ai remarqué une petite erreur dans cette phrase ainsi qu’un oublie du P à resPectifs « OSPF est activé sur R1 et R2 pour leurs réseaux resectifs: 80.1.0.1/30, 80.2.0.1/30 et 10.0.0.0/30. »

    80.1.0.1/30 et 80.2.0.1/30 sont des adresses des interfaces de R1 et R3 tandis que 10.0.0.0/30 est une adresse réseau.

    Je présume que tu voulais dire ceci « OSPF est activé sur R1 et R2 pour leurs réseaux resPectifs: 80.1.0.0/30, 80.2.0.0/30 et 10.0.0.0/30. » qui correspondent aux adresses réseaux. True of False ?

  3. C’est exactement ça, le WAN simulé ici représente un vaste réseau au travers duquel sont interconnectés les deux sites … donc ça pourrait être Internet.

  4. Bonjour Steve,

    je me posais une question… Si l’on met des routes par défaut sur R3 et R4, a quoi sert-il de faire du NAT ? Car dans ta description tu dis que le NAT permet aux LANs de R3 et R4 d’accéder au WAN, or si l’on met une route par défaut et que le tunnel GRE se monte… Pas besoin de NAT pour communiquer avec l’autre Site.

    Sauf si enfaite tu penses au WAN comme une sortie Internet et dans ce cas, ils utilisent le NAT pour sortir sur l’Internet et le Tunnel uniquement pour aller à l’autre Site, ça doit être surement ça…