Un VPN Site-to-Site (ou inter site) est utilisé pour interconnecter
deux réseaux distants entre eux. Ces deux réseaux seront alors comme sur
un même réseau local.
Il permet aussi de chiffrer et donc de sécuriser les données qui
transitent entre les deux sites au travers d’internet.
Pour la mise en place de notre VPN Site-to-Site, nous utiliserons
deux routeurs Pfsense version 2.3.1 (mais ceci devrait rester valable pour
les autres versions) et les rôles client/serveur d’OpenVPN intégrés à
ceux-ci.
Je partirai d’une installation fraiche pour ce tutoriel.
Ci-dessous un schéma illustrant notre installation.
Nous avons donc un client sur chaque réseau, chacun d’eux est
connecté à son routeur/ firewall PfSense.
Ces deux routeurs vont être connectés entre eux via OpenVPN au
travers d’internet.
Cette infrastructure permettra donc l’échange de données d’un réseau
à l’autre comme si l’on était sur le même réseau local (LAN) et ceci grâce
à notre VPN.
Aucune configuration ne sera nécessaire sur les hôtes de chacun des
réseaux. L’utilisateur lambda n’aura aucune idée qu’un VPN est
utilisé.
Configuration de notre premier PfSense (partie serveur) :
1. Pour commencer, connectez-vous à l’interface web de votre premier
PfSense (serveur), 192.168.100.254 dans mon cas. (Par défaut login : admin
| password : pfsense)
2. Une fois sur l’interface d’administration, cliquez sur l’onglet
VPN de la barre de navigation puis OpenVPN.
Vous êtes maintenant sur la page d’administration consacrée à
OpenVPN.
Assurez-vous d’être bien sur l’onglet « Serveurs » puis cliquez sur
« add ».
3. Voilà l’interface de création de notre serveur OpenVPN.
Nous connecterons nos deux PfSense à l’aide d’une authentification
par clés partagées.
Il faut donc en premier lieu changer le « Server mode » pour «Peer
to Peer ( Shared Key ) ». (Flèche 1 sur l’illustration ci-dessous)
En second lieu, choisissez le port qui vous convient. J’ai
personnellement choisi de garder le port d’origine d’OpenVPN. (Flèche
2)
Dans cette partie Crypto. Settings choisissez les options
d’encryption qui vous conviennent. Cependant pour notre configuration
laissez la checkbox « Shared key : Automatically generate a shared key»
cochée.
Pour cette partie Tunnel Settings, nous avons besoin de renseigner
au minimum deux parties.
Premièrement « IPv4 Tunnel Network ». Vous devez choisir l’adresse
du réseau virtuel sur lequel vont transiter vos données (l’adresse du
tunnel VPN). Cette adresse doit être différente de celle utilisée par vos
réseaux locaux. Dans mon cas, j’ai choisi le réseau 192.168.50.0/24
Deuxièmement « IPv4 Remote network(s) ». Sur cette partie, vous
devez renseigner l’adresse du réseau LAN distant. (192.168.1.0/24 chez
moi)
Vous pouvez maintenant cliquer sur « Save » pour sauvegarder votre
configuration.
Voilà notre serveur VPN est maintenant configuré.
!!!!!!!!!!!!!!!!!!!! ATTENTION !!!!!!!!!!!!!!!!!!!!
4. Si vous travaillez avec deux serveurs (machines ou VMs) dont les
interfaces WAN utilisent un même réseau local vous aurez une rapide
configuration à faire au niveau de l’interface WAN du PfSense qui fait
office de serveur VPN.
Rendez-vous donc dans l’onglet « Interfaces » de barre de navigation
puis WAN.
Scrollez en-bas de la page puis décochez les deux checkbox de la
partie « Reserved Network ». Ceci va permettre de ne pas bloquer d’office
les paquets venant d’une adresse locale (notre futur client VPN dans notre
cas).
Vous pouvez maintenant sauvegarder cette configuration. Fin de la
parenthèse.
5. Nous devons maintenant configurer le firewall de notre PfSense
serveur pour permettre la connexion du client OpenVPN vers
celui-ci.
Pour cela allez sous l’onglet « Firewall » de la barre de navigation
puis cliquez sur « Rules ».
Une fois sur la page d’administration du firewall rendez-vous sur
l’onglet WAN. (Flèche 1 de l’illustration ci-dessous)
Puis cliquez sur « Add » pour ajouter une nouvelle règle. (Flèche
2)
Nous sommes maintenant sur la page dédiée à la création de règles
pour le firewall.
La configuration de cette règle dépendra beaucoup de la
configuration que vous avez faite pendant la partie sur la création du
serveur OpenVPN.
Dans mon cas, j’avais laissé mon serveur OpenVPN en UDP (le meilleur
protocole pour un VPN). Je dois donc laisser passer le protocole « UDP »
dans la règle de mon firewall (flèche de la figure suivante).
Dans la partie 1 figure suivante, vous pouvez mettre la source à
« any » pour accepter toutes les sources. Mais vous pouvez très bien
adapter cette option en fonction de votre configuration.
Pour la partie 2 comme le serveur VPN est installé sur notre
PfSense,« This firewall (self) » est l’option la plus adéquate. Pas besoin
de s’embêter.
Les parties 3 et 4 dépendront de la configuration de votre serveur
VPN. Dans mon cas, j’ai gardé le port d’origine (1194). Je dois donc
choisir l’option correspondant à mon port dans le menu déroulant « From »
et « To ».
Vous pouvez maintenant sauvegarder votre configuration à l’aide du
bouton « Save ».
La configuration de notre serveur VPN est maintenant
terminée.
Configuration de notre second PfSense (partie client) :
Passons maintenant à la configuration de notre second PfSense.
(Notre client)
1. Commencez par vous connecter à l’interface web de votre second
PfSense. 192.168.1.254 dans mon cas. (login : admin | password :
pfsense)
2. Rendez-vous sous l’onglet VPN puis OpenVPN.
Une fois sur la page d’administration consacrée à Open VPN vous
devez vous rendre sous l’onglet « Clients » de celle-ci (flèche 1
ci-dessous) puis cliquez sur « Add » (flèche 2).
3. Passons maintenant à la configuration du client OpenVPN. Dans un
premier temps, il faut impérativement changer le « Server mode » en « Peer
to Peer ( Shared Key ) » (Flèche 1).
Il faut ensuite renseigner le « Server host or address » avec
l’adresse de votre premier PfSense qui fait office de serveur OpenVPN
(flèche 2) puis, bien sûr le port utilisé par celui-ci (flèche 3).
Pour la partie Crypto. Settings de notre client vous devez utiliser
la même configuration que sur le serveur. Sinon cela ne fonctionnera
pas.
Nous passons maintenant à la partie « Tunnel Settings ».
En premier lieu, nous devons renseigner l’adresse du tunnel (IPv4
Tunnel Network). Mettez la même adresse que l’IPv4 Tunnel Network que vous
avez mise dans la configuration du serveur OpenVPN (flèche 1 de
l’illustration ci-dessous).
Pour la flèche 2, vous devez mettre l’adresse LAN du réseau distant.
(192.168.100.0/24 dans mon cas)
Nous pouvons maintenant sauvegarder la configuration de notre client
en cliquant sur « Save ».
4. La configuration de notre client OpenVPN est maintenant presque
terminée.
Il nous reste une dernière étape. En effet comme nous avons choisi
le mode d’authentification par clés partagées, nous devons copier la clé
générée par notre serveur OpenVPN puis la coller sur notre client.
!!!!!!!!!!!!!!!!!!!! ATTENTION !!!!!!!!!!!!!!!!!!!!
Sur votre PfSense faisant office de serveur OpenVPN :
Rendez-vous sur la page d’administration de notre serveur
OpenVPN.
Cliquez sur le « crayon » pour éditer la configuration du serveur
que nous avons créée au préalable.
Scrollez jusqu'à la partie Crypto. Settings.
Nous pouvons voir qu’une clé a été générée automatiquement par notre
serveur. Copiez- la puis quittez l’espace d’édition de notre serveur
VPN.
!!!!!!!!!!!!!!!!!!!! ATTENTION !!!!!!!!!!!!!!!!!!!!
5. Retour sur le PfSense faisant office de client OpenVPN :
Rendez-vous sur la page d’administration dédiée à notre client
OpenVPN.
Une fois sur cette page, éditez la configuration du client OpenVPN
en cliquant sur le « crayon » assigné à celle-ci (flèche 2
ci-dessous).
Scrollez jusqu'à la partie Crypto. Settings.
Il se peut qu’il y ait déjà une clé dans la partie consacrée à la
clé partagée (Shared key | flèche de l’image ci-dessous). Supprimez-la
puis collez y la clé générée par notre serveur OpenVPN (clé que nous
avions copiée précédemment).
Nous pouvons maintenant sauvegarder la configuration en cliquant sur
le bouton « Save » en bas de la page.
La configuration de notre client OpenVPN est maintenant
terminée.
6. Nous allons maintenant nous assurer que la liaison est bien
fonctionnelle. Pour cela rendez-vous sous l’onglet « Status » de la barre
de navigation puis cliquez sur « OpenVPN ».
Nous pouvons voir sur cette page que la liaison est bien
opérationnelle.
Notre VPN site-to-site est enfin fonctionnel.
Une dernière chose à faire :
Il nous reste quand même une dernière chose à faire.
En effet si vous essayez maintenant de communiquer avec une machine
du réseau LAN distant… Bah cela ne fonctionnera pas comme le prouve
l’image suivante...
Nous pouvons utiliser la commande « traceroute IpDeLaCible » pour
mieux comprendre (traceroute sous mac et linux | tracert sous
windows).
Et nous voyons bien que les paquets sont coincés au niveau de notre
Passerelle (gateway).
Pourquoi ? Tout simplement car il manque une règle sur les firewalls
de nos PfSense.
En effet l’interface réseau créé par OpenVPN n’a encore aucune
règle. Les paquets sont donc bloqués d’office par celui-ci.
Nous allons tout de suite régler ce problème.
1. Pour cela, il vous faut vous rendre sur l’interface web de l’un
de vos PfSense puis aller sous l’onglet « Firewall », cliquez sur
« Rules ».
2. Sur la page d’administration dédiée au firewall, cliquez sur
l’onglet « OpenVPN » (flèche 1) puis « Add » (flèche 2).
3. Vous voilà sur la page de création de règles pour le
firewall.
J’ai personnellement choisi de laisser tous les protocoles passés
pour mon exemple. J’ai donc mis l’option « Protocol » à « any » (flèche
suivante).
Cependant vous pouvez très bien adapter la règle en fonction de vos
besoins. Vous pouvez aussi créer le nombre de règles que vous voulez.
N’hésitez donc pas à adapter cet exemple.
J’ai aussi laissé la « Source » et « Destination » à « any ».
N’hésitez pas à adapter aussi cette partie à vos besoins.
Il y a donc aucun filtrage sur la configuration que je viens de
faire. Tous les protocoles, toutes les sources et toutes les destinations
seront autorisés.
Cliquez sur le bouton « Save » pour sauvegarder la
configuration.
Votre Règle est maintenant créée et opérationnelle comme vous le
montre l’image suivante.
4. Reproduisez les étapes précédentes (étapes 1 à 3) sur votre
deuxième PfSense. Je ne vais pas détailler cette partie car nous venons
juste de la faire.
Donc comme avant onglet « Firewall » puis « Rules ».
Onglet « OpenVPN » de la page « Firewall » puis cliquez sur
« Add ».
Créez votre règle puis cliquez sur « Save » pour sauvegarder.
Votre règle est maintenant créée.
5. Passons au test !
Pour ce test, j’ai choisi de pinger (requête ICMP pour les
rabat-joie) un hôte distant.
Comme vous pouvez le voir sur l’image suivante, l’hôte 192.168.1.1
arrive à pinger l’hôte 192.168.100.1 du réseau distant.
Magnifique n’est-ce pas ?
Un petit traceroute (tracert sous windows) pour mieux
comprendre.
Nous voyons que lorsque nous essayons de contacter un hôte sur le
réseau LAN distant :
- Les paquets sont dans un premier temps dirigés vers notre
passerelle (gateway).
- Puis ils transitent par notre tunnel VPN (192.168.50.1).
- Et ils arrivent enfin à notre hôte.
Un dernier test du second réseau vers le premier :
Ici aussi tout fonctionne normalement.
Vous pouvez voir les paquets transiter vers la gateway puis dans le
tunnel VPN (192.168.50.2) pour finir chez notre cible.
Maintenant votre installation est pleinement fonctionnelle !
En espérant que ce tutoriel vous aura été utile.