VPN IPsec site-à-site entre Azure et PfSense

I. Présentation

Dans ce tutoriel, nous allons apprendre à monter tunnel VPN IPsec entre un pare-feu PfSense et Azure, le Cloud de Microsoft. Grâce à ce tunnel VPN, les machines situées derrière le pare-feu PfSense pourront communiquer avec les ressources Azure, notamment les machines virtuelles. Même s'il est possible de monter un véritable firewall dans Azure, ici l'objectif est de s'appuyer sur une gateway virtuelle proposée par Azure.

Récemment, j'ai mis en place ce tunnel VPN entre mon lab chez OVH sur lequel j'utilise un PfSense, et le Cloud Azure, sur lequel j'envisage de créer des serveurs virtuels supplémentaires. L'objectif étant de permettre aux serveurs de communiquer entre eux, malgré qu'ils soient sur deux Cloud différents.

Voici le schéma qui représente ce que l'on va faire :

Schéma VPN Azure PfSense

Je pars du principe que le pare-feu Pfsense est déjà en place. Côté Azure, je pars de zéro : aucune machine virtuelle au sein de la souscription que je vais utiliser. Cela est important dans le sens où le réseau virtuel créé dans le cadre de ce tutoriel sera utilisé par la suite pour connecter des VMs sur un sous-réseau dédié.

Si vous avez un environnement Azure existant avec un réseau virtuel, vous pouvez ajouter un sous-réseau supplémentaire et la passerelle de réseau virtuel sur ce même réseau.

II. Configurer un tunnel VPN dans Azure

Commençons par la préparation de l'environnement Azure, étape par étape.

A. Créer un réseau virtuel

À partir du portail Azure, recherchez "Réseaux virtuels" dans tous les services, comme ceci :

Cliquez sur le bouton "Créer", un assistant va démarrer... Il faudra tout d'abord choisir l'abonnement et le groupe de ressources, ce qui est classique. Ensuite, il faut nommer ce réseau virtuel ; pour ma part, je choisis "VNET-10.10.0.0-16", car je vais utiliser le réseau "10.10.0.0/16".

Dans l'onglet "Adresses IP", on détermine le réseau IP à utiliser, ici "10.10.0.0/16". Il faut ensuite "Ajouter un sous-réseau" : ce sera le sous-réseau pour connecter les VM, puisque le sous-réseau pour le VPN sera ajouté plus tard. Conformément à mon schéma, je définis le sous-réseau "10.10.100.0/24" et je le nomme "VM-10.10.100.0".

Il ne reste plus qu'à poursuivre jusqu'à la fin et créer le réseau virtuel.

Première étape validée.

B. Créer un sous-réseau de passerelle

Accédez au réseau virtuel qui vient d'être créé, puis sur la gauche cliquez sur "Sous-réseaux" et ensuite sur le bouton "Sous-réseau de passerelle".

Le nom est fixe, en l'occurrence "GatewaySubnet" et on va lui attribuer un sous-réseau IP, ici "10.10.110.0/24". Ce sous-réseau sera utilisé pour les communications dans le tunnel VPN en lui-même.

Validez la création, car il n'y a pas d'autres paramètres à définir.

Deuxième étape validée !

C. Création de la passerelle de réseau virtuel

Nous devons créer une passerelle de réseau virtuel. Pour cela, dans tous les services, recherchez "Passerelles de réseau virtuel", comme ceci :

Nommez cette passerelle, par exemple "VPN-Azure-Pfsense" et choisissez "VPN" comme "Type de passerelle", puis "Basé sur itinéraires" comme "Type de VPN".

Ensuite, il faut sélectionner un type de passerelle (option "Référence (SKU)"). Ce choix doit-être fait en fonction de vos besoins, notamment la bande passante, toute en sachant que c'est passerelle Azure a un coût. Afin de faire le bon choix, je vous recommande de consulter cette page : Tarification Passerelle VPN. Mais aussi celle-ci pour des infos plus techniques : Microsoft Docs.

Il restera à choisir le réseau virtuel "VNET-10.10.0.0-16" créé précédemment et qui contient le sous-réseau "GatewaySubnet". Ce dernier sera automatiquement sélectionné.

Pour l'adresse IP publique, je n'en ai pas, donc je choisis "Créer" et je la nomme "IP-VPN-Azure-Pfsense". Il n'y a pas d'autres options à configurer.

La passerelle VPN peut-être créée ! Cette opération est assez longue, je dirais environ 20 minutes : patientez pendant que le message "Le déploiement est en cours" s'affiche. Enfin, je veux dire, allez prendre un café ! 🙂

Quand ce sera fait, direction l'étape suivante !

D. Ajouter une connexion site-à-site

La passerelle VPN nous donne accès à son adresse IP publique, dans la section "Vue d'ensemble". Une valeur à garder de côté pour la suite des événements.

Sur la gauche, cliquez sur "Connexions" puis "Ajouter".

L'ajout de la connexion va permettre de déclarer notre pare-feu Pfsense puisqu'il représente l'autre extrémité du tunnel VPN. Cette connexion sera nommée "Peer_Pfsense" de mon côté. Il faut choisir "Site à site (IPsec)" comme "Type de connexion", puis cliquez sur "Choisir une passerelle de réseau local".

Cela va permettre de déclarer le PfSense, avec son adresse IP ou son nom DNS (FQDN), comme ceci :

Validez afin de revenir sur la création de la connexion. Cette fois-ci, la passerelle "Peer_Pfsense_Net" apparait bien. Il ne reste plus qu'à définir une clé partagée complexe et qui sert de secret pour l'authentification dans le tunnel VPN. Choisissez "IKEv2", car plus sécurisé et le tour est joué !

Validez ! La partie Azure est terminée ! Passons à la configuration de Pfsense.

III. Créer le tunnel IPSec sur PfSense

A. IPSec Phase 1

IPsec est pris en charge nativement par Pfsense donc il n'est pas nécessaire d'installer un paquet additionnel. Sous le menu "VPN", cliquez sur "IPsec".

Dans l'onglet "Tunnels", cliquez sur le bouton "Add P1" pour configurer la phase 1 de notre tunnel. Choisissez "IKEv2" au sein de "Key Exchange Version", car nous allons configurer la phase 2 dans un second temps, et c'est cette version que nous avons choisie sur Azure. Ce tunnel est en IPv4 et nous allons utiliser l'interface WAN du Pfsense. Concernant le champ "Remote Gateway", indiquez l'adresse IP publique de la passerelle VPN Azure (valeur obtenue précédemment).

Pour l'authentification, choisissez "Mutual PSK" afin de définir la même clé partagée que sur l'interface Azure au niveau du champ "Pre-Shared Key". Les deux passerelles VPN doivent utiliser le même secret partagé. Pour les algorithmes de chiffrement, vous pouvez utiliser la même configuration que dans cet exemple.

Pas de modification à effectuer pour le reste des options. Cliquez sur "Save".

B. IPSec Phase 2

Au sein de l'onglet "Tunnels", créez la phase 2 associée à la phase 1 que l'on vient de créer. Là encore, il faut renseigner plusieurs options :

  • Local network : le réseau local qui peut accéder au réseau distant, ici c'est mon "LAN subnet" de mon Pfsense, c'est-à-dire le sous-réseau derrière la carte LAN.
  • Remote network : le réseau distant, à l'autre extrémité du tunnel VPN auquel on souhaite accéder, ici c'est "10.10.100.0/24" puisque c'est mon sous-réseau Azure où mes VMs sont connectées

Il faut également configurer les algorithmes pour l'échange de clés. Voici ma configuration :

Ainsi que les algorithmes de hachage. Une fois que c'est fait, cliquez sur "Save".

C. Etat du tunnel IPsec

La configuration est terminée, l'état du tunnel IPsec est visible dans "Status > IPsec". Il y a notamment un bouton pour lancer la connexion. Dans le même temps, je vous invite à tenter de vous connecter sur une ressource distante, située sur le Cloud Azure, par exemple une VM. Ensuite, le tunnel va passer sur l'état "ESTABLISHED", comme ceci :

Tunnel ipsec azure pfsense

Si ce n'est pas le cas et que le tunnel ne veut pas se connecter, vous pouvez cliquer sur le bouton rouge dans PfSense, à gauche du point d'interrogation, pour voir les logs IPsec. Depuis mon LAN Pfsense, je parviens à me connecter à un serveur du réseau "10.10.100.0/24" hébergé sur Azure.

VPN Azure Pfsense

Voilà, le tunnel VPN IPsec est monté : il n'y a plus qu'à en profiter !

Sachez que les règles de firewall du LAN Pfsense vers Azure doivent être gérées dans l'onglet "LAN" du pare-feu (Firewall > Rules > LAN). Pour les règles d'Azure vers le LAN Pfsense, c'est dans l'onglet "IPsec" du pare-feu (Firewall > Rules > IPsec).

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 4087 posts and counting.See all posts by florian

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.