
Paramétrage de la partie Roadwarrior (nomade)
Démarche
Les points de connexions en mode roadwarrior (nomade) seront traités comme des nouveaux "pair" (peer) déclaré sur le tunnel du pfsense100.
Doit-on créer un "pair" par utilisateur ? Considérant qu’un "pair" a une adresse IP fixe dans la plage du VPN, et non pas servie par un serveur DHCP, la réponse est oui. Si deux connexions de même configuration s’établissent simultanément, les paquets vont bien arriver jusqu’au pfsense100, par contre pour redescendre au client, il va y avoir de la perte puisque les deux connections auront la meme IP sur le reseau VPN et que le routage va se perdre.
En résumé, un client nomade a une seule IP possible, et un jeu de cle (public/private) spécifique.
Configuration côté serveur
Création d’un peer dynamic
Aller dans le menu VPN->Wireguard :
- ajouter un peer au tunnel "Region",
- cocher "enable peer",
- choisir le tunnel "Region" (tun_wg0),
- description : intitulé de cette connexion nomade pour la repérer,
- Dynamic Endpoint : à cocher absolument. En effet, le client a une adresse IP publique très variable en fonction d’où il va se connecter à internet,
- Public Key : notez ici une cle publique selon le procédé que nous allons indiquer ci-après (Gestion du jeu de cle public/privé),
- pre shared key : en générer une et la copier de côté pour plus tard,
- Allowed IPs : une seule IP à mettre, ce sera l’IP unique lié à cette connexion nomade, ici sur le réseau déclaré dans notre scénario, ce sera 10.1.0.100/32
Déclaration peer dynamicLudovic LestratSauvegardez la configuration et appliquez là.
Gestion du jeu de cle public/privé
Pour chaque connexion nomade que nous allons déclarer, nous allons associer un jeu de clé unique. Pour calculer ces valeurs, dans un terminal, placez vous dans un répertoire qui vous convient et tapez la commande suivante :
wg genkey | tee privatekey | wg pubkey > publickey
Le fichier publickey contient la clé publique que vous notez au niveau de la déclaration du peer, ci-avant.
Le fichier privatekey contient la clé privée qu’il faudra indiquez dans le fichier de configuration du client Wireguard. Donc conservez précieusement cette information pour le moment, en prenant soin de savoir que les deux vont ensemble.
Reproduisez la démarche pour chaque utilisateur nomade de votre réseau VPN. A la fin vous pouvez vous retrouver avec une longue liste de peers comme dans la capture ci-dessous
Rédaction du fichier de conf pour les clients
Quelque soit le système du client ou son logiciel, vous pouvez préparer un fichier de configuration texte (extension .conf) comme ceci :
[interface]
Privatekey = [priv genere]
Address = 10.1.0.XXX/32
ListenPort = 51820
DNS = 192.168.100.254[Peer]
PublicKey = [tunnel public key]
AllowedIPs =10.1.0.0/24, 192.168.18.0/24, 192.168.45.0/24, 192.168.100.0/24
Endpoint = 212.1.2.1:51820
PresharedKey = [preshare key du peer]
Dans le détail :
- privatekey : correspond à la clé privée associée à la clé publique que vous avez paramétré au niveau du peer. C’est pour cela qu’il était important de bien noter quelque part le couple des deux clés pour pouvoir la reporter ici,
- address : adresse IP unique sur le VPN du client, déclaré au niveau du peer,
- ListenPort : port de Wireguard paramétré sur le peer,
- DNS : il faut indiquer le DNS déclaré dans pfsense pour le LAN, le même qu’un niveau du serveur DHCP,
- PublicKey : attention, ici c’est la clé publique du tunnel "Region" qu’il faut indiquer, et non pas celle associée à la privatekey du peer,
- AllowedIPs : il faut indiquer ici les réseaux auxquels le client du VPN aura accès. Dans notre cas, nous avons indiqué tous les LAN derrière les pfsense. Intérêt ? Eviter que les flux vers le reste du web ne passe par le VPN pour ne pas pénaliser les temps d’accès. Si vous souhaitez faire passer tous les flux du client via le VPN, y compris le web, il faudra noter "0.0.0.0/24"
- Endpoint : l’adresse public de notre serveur pfsense100 et le port d’ecoute de Wireguard pour ce peer,
- Presharedkey : au niveau du paramétrage du peer, nous avions généré cette preshare key, reportez la ici.
Configuration du client
L’article suivant décrit la configuration des postes clients en se basant sur les fichiers de conf ainsi générés.
Vérification de bon fonctionnement
Au delà du statut de la connection côté client, côté serveur il est possible de voir les connexions établis par les postes nomades. Pour cela aller dans le menu "VPN->Wireguard" et onglet "status".
Selon le code couleur de la poignée de main (handshake) vous verrez les connexions en cours ou établies récemment, avec la date de la dernière "poignée de main", ainsi que les volumes de flux entrants et sortant depuis la creation de chaque peer.
Utilisation et limites
Comme les connexions site à site et nomade sont sur le même réseau, et que les règles adéquates de routage pour se déplacer d’un pfsense à l’autre sont en place, les clients nomades peuvent circuler partout sur ce réseau VPN.
La grosse contrainte de ce système étoilé est que tous les flux passent forcément par le pfsense100. Il faut donc que l’infra soit en capacité d’absorber cette excédent de flux.