Connexion VPN site à site avec Wireguard sous pfSense
WireGuard est un outil VPN plus rapide, plus simple et plus léger qu’un outil comme OpenVPN. Alors qu’OpenVPN a l’avantage de la longévité.
Il est l’un des protocoles VPN des plus récent et des plus rapide que beaucoup souhaitent essayer.
Bien que nous abordions dans ce tutoriel la manière d’installer WireGuard sur pfSense, sachez qu’il s’agit d’un package assez récent et que pour cette raison vous pourriez rencontrer des problèmes. Le processus ci-dessous à très bien fonctionné pour moi avec des versions à jour. pfSense est actuellement en 2.7.2. et Wireguard en 0.2.0_2.
Comment configurer WireGuard sur pfSense
A. Installer WireGuard sur les routeurs pfSense
La première chose à faire est d’installer le package pour WireGuard sur les routeurs pfSense.
Suivez les instructions ci-dessous pour installer le package WireGuard :
1. Ouvrez le gestionnaire de paquets (Package Manager) depuis System et recherchez WireGuard,
2. Recherchez WireGuard puis installez la dernière version du paquet.
Le serveur WireGuard sera alors installé.
3. Une fois le package installé, sélectionnez VPN puis WireGuard.
B. Configurer WireGuard sur la partie serveur
B.1. Création du tunnel
1. Et sous la section Tunnels , sélectionnez « Add un Tunnel« .
2. Dans la configuration du tunnel, définissez la description sur le nom que vous souhaiter, le port d’écoute sur 51820, puis générez des clés privées et publiques.
Enregistrer le tunnel sans toucher aux autres options.
3. Allez dans le menu Settings, Cochez Enable WireGuard et faire Save.
4. Puis cliquez sur « Apply Changes«
B.2. Configuration de l’interface WireGuard du tunnel
1. Allez dans le Menu « Interfaces » > « Assignments«
2. Faire « +Add » et sélectionner « tun_wg0 » (le nom peut différer si vous avez plusieurs tunnels)
3. Cliquez sur « OPT1«
4. Configurer l’interface WireGuard
- Cochez « Enable Interface« ,
- En description, mettre « WG_VPN« ,
- Dans la configuration IPv4 mettre « Static IPv4« ,
- Sélectionnez None sur la case IPv6 si non utilisée
- Définissez l’adresse IP sur « 10.6.210.2″, masque « /24 » sous Static IPv4 Configuration
Si vous souhaitez utiliser une plage de sous-réseaux différente, vous pouvez remplacer par celle que vous souhaitez (à condition qu’elle ne soit pas actuellement utilisée). - Faire Save via le bouton tout en bas.
Note : nous indiquons ici une valeur de MSS spécifique. Après avoir établie la connexion VPN et que tout fonctionnait comme il faut, nous n’arrvions pas à accéder à chaque interface du Webconfigurator du pfSense distant (respectivement 192.168.12.1 à partir du réseau 192.168.13.0/24 et vice versa). Le souci est du à une taille de paquet ou de segment de données trop importante.
La valeur MSS à 1380 a permis de régler le souci. Nous avons aussi noter une nette augmentation des débits une fois la valeur MSS ajustée.
Cette donnée MSS, tout comme la valeur MTU, est à ajuster selon vos besoins.
5.Faire « Apply Changes«
B.3. Configuration des règles de pare-feu
Maintenant qu’un tunnel et une interface WireGuard ont été créés, nous devons créer des règles de pare-feu pour WireGuard sur pfSense. Une pour notre interface WG_VPN et une pour le WAN (pour autoriser le trafic sur le port 51820).
1. Règle Wireguard
Trafic Any/Any en IPv4, autoriser tout le traffic pour Wireguard
2. Règle WAN
Trafic 51820/udp@WAN address, ce qui permet aux clients de se connecter au serveur WireGuard
3. Règle LAN
Trafic Any/Any en IPv4, autoriser tout le traffic sur le LAN
4. Règle WG_VPN
Trafic Any/Any en IPv4, autoriser tout le trafic sur le WG_VPN
La partie de configuration du tunnel est presque terminée mais il reste à créer le « peer ». Cela sera traité après avoir créer le tunnel côté client.
C. Configurer WireGuard côté Client
C.1. Création du tunnel
Comme pour le serveur, nous allons créé le tunnel VPN du client
1. Sous la section Tunnels , sélectionnez Add Tunnel
2. Dans la configuration du tunnel, définissez la description sur le nom que vous souhaiter, le port d’écoute sur 51820, puis générez des clés privées et publiques.
Enregistrer le tunnel sans toucher aux autres options.
2. Allez dans le menu Settings, Cochez Enable WireGuard et faire Save.
3. Puis cliquez sur « Apply Changes«
C.2. Configuration de l’interface WireGuard du tunnel
1. Allez dans le Menu « Interfaces » et « Assignments«
2. Faire « +Add« . Comme pour la partie serveur sélectionner le tunnel pour qui vous souhaiter ajouter une interface.
3. Cliquez sur « OPT1«
4. Configurer l’interface WireGuard
- Cochez « Enable Interface« ,
- En description, mettre « WG_VPN » ,
- Dans la configuration IPv4 mettre « Static IPv4 » ,
- Sélectionnez None sur la case IPv6 si non utilisée
- Définissez l’adresse IP sur « 10.6.210.1″, masque « /24 » sous Static IPv4 Configuration
Si vous souhaitez utiliser une plage de sous-réseaux différente, vous pouvez remplacer par celle que vous souhaitez (à condition qu’elle ne soit pas actuellement utilisée). - Faire Save via le bouton tout en bas.
5.Faire « Apply Changes«
C.3. Configuration des règles de pare-feu
Maintenant qu’un tunnel et une interface WireGuard ont été créés, nous devons créer deux règles de pare-feu pour WireGuard sur pfSense. Une pour notre interface WG_VPN et une Wireguard
Notez que, contrairement à la configuration serveur, il n’y a pas besoin d’autoriser l’ouverture du port 51820 car c’est notre client qui vient se connecter au serveur et pas le contraire.
1. Règle Wireguard
Trafic Any/Any en IPv4, autoriser tout le traffic pour Wireguard
2. Règle WG_VPN
Trafic Any/Any en IPv4, autoriser tout le trafic sur le WG_VPN
D. Configuration des PEER sur les deux tunnels
D.1. Côté client
1. Aller dans VPN > WIREGUARD > PEERS puis cliquer sur « Add Peer«
Renseigner les éléments de la Peer Configuration :
- Dans le champ Public key, renseigner celle qui a été générée par le tunnel coter serveur
- Dans le champs EndPoint renseigner l’IP public du pfSense côté serveur
Rappelons que c’est notre « client » qui vient se connecter au « serveur ».
2. Dans la section Address Configuration, ajouter les réseaux accessibles (depuis le bouton « +Add Allowed IP« ) :
- 10.6.210.2 en /32 qui correspond à notre WG_VPN côté serveur
- 192.168.12.0 en /24 qui correspond à notre réseau côté serveur
- 192.168.13.0 en /24 qui correspond à notre réseau côté client
3. Sauvegarde avec Save Peer
D.2. Côté serveur
2. Aller dans VPN > WIREGUARD > PEERS puis cliquer sur « Add Peer«
Renseigner les éléments de la Peer Configuration :
- Dans le champ Public key, renseigner celle qui a été générée par le tunnel coter serveur
- A la place du champ EndPoint, vous devez cocher « Dynamic » car il n’y a pas à spécifier l’adresse IP du client : c’est notre client qui vient se connecter au serveur, pas le contraire.
2. Dans la section Address Configuration, ajouter les réseaux accessibles (depuis le bouton « +Add Allowed IP« ) :
- 10.6.210.1 en /32 qui correspond à notre WG_VPN côté client
- 192.168.13.0 en /24 qui correspond à notre réseau côté client
- 192.168.12.0 en /24 qui correspond à notre réseau côté serveur
3. Sauvegarde avec Save Peer
E. Création des Gateway
E.1. Gateway côté serveur
1. Faire Add et spécifier les paramètres suivants :
- Nom : « VPN_GW«
- Interface : « WG_VPN«
- IP : 10.6.210.2
Note : La Gateway côte client doit être l’IP de la pate WG_VPN côte serveur.
E.1. Gateway côté client
1. Faire Add et spécifier les paramètres suivants :
- Nom : « VPN_GW«
- Interface : « WG_VPN«
- IP : 10.6.210.1
Note : La Gateway côte serveur doit être l’IP de la patte WG_VPN côte client.
F. Création des routes
F.1. Côté Serveur
1. System > Routing > Static Routes puis +Add
Renseignez les information de la route :
- Network : réseau quel on veut accéder (ici 192.168.13.0/24, soit le réseau « client »)
- Gateway : Indiquer la passerelle du client (ici 10.6.210.1)
2. Sauvegarder avec Save
F.2. Côté Client
1. System > Routing > Static Routes puis +Add
Renseignez les information de la route :
- Network : réseau quel on veut accéder (ici 192.168.12.0/24, soit le réseau « serveur »)
- Gateway : Indiquer la passerelle du client (ici 10.6.210.2)
2. Sauvegarder avec Save
Vérifier le bon fonctionnement du VPN WireGuard
Aller dans Status > WireGuard
La connexion en vert indique que le VPN est actif et connecté.