Configuration d’un réseau privé virtuel (vpn) maillé avec Wireguard

Reading Time: 3 minutes

Je suis en train de travailler sur la création d’un cluster Proxmox où les machines seraient reliées les unes aux autres via internet. Afin de réduire le risque de sécurité, j’ai pris la décision de les faire communiquer les noeuds du cluster via un réseau virtuel privé, plus communément appelé VPN.

Malgré l’amélioration au niveau de la sécurité, cela pose une nouvelle problématique concernant la disponibilité. En effet, les réseaux VPNs fonctionnent généralement avec un serveur central auquel se connectent plusieurs clients. Dans cette configuration, cela aurait eu pour conséquence de transformer ce noeud en point de défaillance unique (SPOF). En effet, dans le cas où le noeud qui héberge le serveur vpn central tombe, chacun des noeuds du cluster se serait retrouvé dans l’incapacité de communiquer avec les autres noeuds même si ceux-ci étaient toujours fonctionnelles.

Afin d’éviter cela, il existe une topologie de réseau VPN, appelait Mesh Network ou réseau maillé en français qui permet à chacun des noeuds de communiquer directement avec tous les autres noeuds. Lorsque la communication se déroule sans intermédiaire, on appelle cette façon de communiquer en point à point. Cela a pour avantage en cas de défaillance d’un des noeuds, de permettre aux autres noeuds de continuer à communiquer entre eux.

Dans cet article, nous allons voir comment déployer un réseau virtuel maillé avec l’application VPN Wireguard.

Infrastructure

Configuration des machines :

Configuration des interfaces pour le VPN :

Installation de Wireguard

Un point important, une configuration en réseau maillé signifie que chacun des noeuds est à la fois client des autres noeuds et serveurs des autres noeuds. Cela implique d’installer Wireguard sur tous les noeuds du cluster.

Génération des fichiers de configurations de Wireguard

Nous allons utiliser l’application wg-meshconf afin de créer les configurations Wireguard de tous clients/serveurs.

Nous n’allons pas préciser le port, ce qui aura pour conséquence de laisser celui par défaut, à savoir, le 51820.

Génération des fichiers de configurations

Fichier de configuration de riri.mirabellette.eu

Fichier de configuration de fifi.mirabellette.eu

Fichier de configuration de loulou.mirabellette.eu

Il faut maintenant mettre chacun de ces fichiers de configuration dans le répertoire /etc/wireguard/ du noeud correspondant avec le nom wg0.conf (par convention).

Problématique avec Proxmox

Création de l’interface

Proxmox détecte les interfaces présentent dans le fichier /etc/network/interfaces. Or, Wireguard utilise le service systemd et les fichiers de configuration vus préalablement pour créer l’interface d’écoute du serveur VPN et les routes correspondantes. Se faisant, celles-ci ne sont pas détectées par Proxmox.

Afin de permettre qu’elle soit détectée par Proxmox, il ne faut pas utiliser le service Systemd wg-quick mais directement le service Systemd Networking.

Il faut donc créer une configuration dans le fichier /etc/networks/interfaces en spécifiant également les routes de tous les clients. Ce qui donne par exemple pour le client en .101, c’est-à-dire riri, la configuration suivante :

Attention : Dans les fichiers /etc/wireguard/wg0.conf présents chez les clients, il faut supprimer la ligne Adresse = 1.2.3.4 concernant l’interface sous peine de conflit.

Information complémentaire

La configuration en place autorise uniquement les connexions point à point entre les clients. Si vous souhaitez ajouter d’autres clients à un hôte et que celui se connecte aux autres, il faudra modifier la ligne allowed_ips sur les configurations Wireguard en élargissant le masque ou en étant spécifique sur l’adresse IP autorisée.

Conclusions

Vous savez désormais :

  • construire un réseau maillé avec Wireguard
  • l’intégrer dans le fichier /etc/network/interfaces afin qu’il soit lisible par Proxmox
  • le démarrer via le service systemd networking.

2 thoughts on “Configuration d’un réseau privé virtuel (vpn) maillé avec Wireguard”

  1. Hello

    Un type sans doute. La phrase n’est pas claire…
    1er paragraphe:
    vvvv
    Cela aurait impliqué qu’un des noeuds du cluster dû héberger le serveur VPN et aurait eu pour conséquence la création d’un point de
    défaillance unique (SPOF).

    Et sinon, excellent article ou je découvre le VPN Maillé.

    cmic

    Reply
    • Bonjour Jack,

      J’ai reformulé la phrase afin qu’elle soit plus claire. Arrives-tu à mieux comprendre ce que j’ai voulu dire ?

      Merci pour ton appréciation 🙂

      Mirabellette

      Reply

Leave a Comment