VPN GRE [ Generic Routing Protocol]

Dans l’article VPN, nous avons vu sommairement pourquoi utiliser un VPN. Dans cette article, nous allons nous concentrer sur le VPN GRE

Le VPN GRE utilise le protocole GRE pour créer des tunnels. Ce protocole encapsule tout type de paquet IP. Ensuite, il fait passer ces paquets encapsulés à travers un tunnel sur le WAN.

Le principal inconvénient du VPN GRE est l’absence de chiffrement. Les données ne sont pas protégées lorsqu’elles traversent le tunnel. De plus, le protocole ne nécessite aucune authentification entre les deux extrémités. En conséquence, il est risqué d’y faire transiter des informations sensibles.

Regardons cela dans la pratique avec GNS3 ! Pour ceux qui ne l’aurait pas encore installé, vous pouvez vous rendre sur le site IT-Connect où vous trouverez des articles vous expliquant les étapes à suivre.

Configuration VPN GRE

Pour la mise en pratique, nous partirons de la topologie suivante :

Schema LAB

Configuration de base de notre LAB

Dans ce lab, nous utilisons le VLAN1 pour la configuration. Pour rappel, n’utilisez pas le VLAN1 en production. Pour plus de réalisme, nous configurerons le NAT. Cela permettra aux machines clientes d’accéder au WAN, représenté par les réseaux 192.0.0.0/30 et 192.0.0.4/30. Un routeur simulera le réseau internet. RT-ETS-1 sera le routeur de l’entreprise ETS1. RT-ETS-2 sera celui de l’entreprise ETS2.

Nous commencerons par configurer les interfaces des nos routeurs. Pour le routeur qui simulera Internet la configuration des interfaces sera la suivante :

Router#configure terminal
Router(config)#hostname INTERNET
INTERNET(config)#interface gig 0/0
INTERNET(config-if)#ip address 192.0.0.1 255.255.255.252
INTERNET(config-if)#no shutdown
INTERNET(config-if)#interface gig 0/1
INTERNET(config-if)#ip address 192.0.0.5 255.255.255.252
INTERNET(config-if)#no shutdown

Pour le routeur de ETS1, nous configurerons le routeur de la façon suivante :

Router#configure terminal
Router(config)#hostname RT-ETS-1
RT-ETS-1(config)#interface gig 0/0
RT-ETS-1(config-if)#ip address 192.0.0.2 255.255.255.252
RT-ETS-1(config-if)#no shutdown
RT-ETS-1(config-if)#interface gig 0/1
RT-ETS-1(config-if)#ip address 192.168.0.254 255.255.255.0
RT-ETS-1(config-if)#no shutdown

Et nous terminerons la configuration des interfaces sur le routeur de ETS2 en exécutant les commandes suivante :

Router#configure terminal
Router(config)#hostname RT-ETS-2
RT-ETS-2(config)#interface gig 0/0
RT-ETS-2(config-if)#ip address 192.0.0.6 255.255.255.252
RT-ETS-2(config-if)#no shutdown
RT-ETS-2(config-if)#interface gig 0/1
RT-ETS-2(config-if)#ip address 192.168.1.254 255.255.255.0
RT-ETS-2(config-if)#no shutdown

Ensuite, nous configurerons les routes par défaut sur RT-ETS-1 et sur RT-ETS-2

RT-ETS-1(config-if)#ip route 0.0.0.0 0.0.0.0 gig0/0
RT-ETS-2(config-if)#ip route 0.0.0.0 0.0.0.0 gig0/0

Vérifions que RT-ETS-1 peut communiquer avec RT-ETS-2 et que RT-ETS-2 peut communiquer avec RT-ETS-1 sur les interface connecter au routeur qui simule Internet.

Une fois que cette vérification a été faite, nous testerons que nos machines de nos LAN puissent communiquer avec leurs passerelles. Pour cela, nous attribuerons une adresse IP au client de notre LAN. Ensuite, nous enverrons une requêtes ICMP depuis le client vers l’interface du routeur côté LAN.

Ensuite nous configurerons le NAT sur RT-ETS-1

RT-ETS-1(config)#interface gig 0/0
RT-ETS-1(config-if)#ip nat outside
RT-ETS-1(config-if)#interface gig 0/1
RT-ETS-1(config-if)#ip nat inside
RT-ETS-1(config-if)#exit
RT-ETS-1(config)#access-list 1 permit 192.168.0.0 0.0.0.255
RT-ETS-1(config)#ip nat inside source list 1 interface gig 0/0 overload

Puis sur RT-ETS-2

RT-ETS-2(config)#interface gig 0/0
RT-ETS-2(config-if)#ip nat outside
RT-ETS-2(config-if)#interface gig 0/1
RT-ETS-2(config-if)#ip nat inside
RT-ETS-2(config-if)#exit
RT-ETS-2(config)#access-list 1 permit 192.168.1.0 0.0.0.255
RT-ETS-2(config)#ip nat inside source list 1 interface gig 0/0 overload

Avant d’aller plus loin, testons la configuration de la translation d’adresse.

Notre infrastructure pour nos LAB est maintenant terminé ! Dans le chapitre suivant, nous passerons à la configuration de notre VPN GRE.

Configuration du GRE

Avant de passer à la configuration, il est crucial de bien comprendre le concept de tunnel. Nous allons prendre un instant pour expliquer certaines choses. Un tunnel possède deux extrémités, qui sont des interfaces, plus spécifiquement des interfaces connecté à Internet. C’est par ce tunnel que font passer les flux. Ses flux transiterons dans un réseau dédié à cela. Reprenons la partie Internet de notre LAB.

VPN-GRE-partie-Internet

Pour que le paquet IP puisse arrivée à destination, le paquet sera encapsulé dans un paquet GRE.

Encapsulation-IP-vers-GRE

A gauche de ma flèche, nous sommes sur l’interface connecté à Internet de RT-ETS-1 et à droite de la flèche, nous somme sur l’interface RT-ETS-2 de RT-ETS-2 par exemple.

Une fois le paquet IP encapsulé, il pourra passer dans le tunnel GRE. Une fois que le paquet GRE sort du tunnel, il est dans le LAN « partenaire » et le paquet pourra être désencapsuler. Le paquet pourra être traiter.

Tunnel-GRE

Comme nous avons vu les choses de façon théorique, maintenant passons à la pratique, c’est à dire à la configuration.

Configuration du tunnel GRE côté ETS-1

Tout d’abord, concentrons-nous sur le routeur RT-ETS-1, qui est une extrémité du tunnel. Par conséquent, nous créerons une interface “tunnel”.

RT-ETS-1(config)#interface tunnel1

Comme une interface tunnel est finalement une interface logique, nous devons l’associer à une interface physique pour assurer le transit des paquets à travers le réseau.

RT-ETS-1(config-if)#tunnel source gig 0/0

Ensuite, Nous allons attribuer une adresse IP à l’interface tunnel1. Par conséquent, cette adresse IP sera l’entrée du tunnel de l’entreprise ETS1.

RT-ETS-1(config-if)#ip address 10.0.0.1 255.255.255.252

Aussi, nous indiquerons la destination, c’est-à-dire l’autre extrémité du tunnel, définie par l’adresse WAN du ‘partenaire’, donc l’adresse IP publique de RT-ETS-2.

RT-ETS-1(config-if)#tunnel destination 192.0.0.6

Pour finir, nous allons créer une route indiquant au routeur que, pour atteindre le réseau 192.168.1.0, qui est le LAN de l’entreprise ETS2, il doit passer par l’interface tunnel1.

RT-ETS-1(config)#ip route 192.168.1.0 255.255.255.0 tunnel1

L’extrémité RT-ETS-1 est maintenant terminé.

Configuration du tunnel GRE côté ETS-2

Pour terminer la création de notre tunnel, nous allons faire une configuration miroir de RT-ETS-1 sur RT-ETS-2.

RT-ETS-2(config)#interface tunnel1
RT-ETS-2(config-if)#tunnel source gig 0/0
RT-ETS-2(config-if)#ip address 10.0.0.2 255.255.255.252
RT-ETS-2(config-if)#tunnel destination 192.0.0.2
RT-ETS-2(config-if)#ip route 192.168.0.0 255.255.255.0 tunnel1

Test du tunnel VPN GRE

Testons maintenant notre configuration en utilisant la commande “PING” depuis les machines du LAN. le LAN de ETS-1 doit pouvoir communiquer avec ETS-2 et l’inverse doit être également possible.

En sniffant le réseau en utilisant Wireshark à la sortie de RT-ETS-1, nous voyons qu’une couche GRE a été ajouter.

Capture-paquet-VPN-GRE

Nous pouvons notamment voir que le message ICMP est en clair. Pour chiffre la communication, il nous faudra passer par le framework IPSEC. En effet, nous regarderons cela dans un prochaine article qui traitera du VPN IPSEC.