NOPE LinkedIn

Catégories:
wireguard
network
VPN

Comment configurer WireGuard sur Ubuntu 20.04

Important

Traduction d’un article du site Digital Ocean

Le contenu de cette page est la traduction Française de l’article How To Set Up WireGuard on Ubuntu 20.04 de Jamon Camisso.

Introduction

WireGuard est un réseau privé virtuel (VPN) léger qui prend en charge les connexions IPv4 et IPv6. Un VPN vous permet de traverser des réseaux non fiables comme si vous étiez sur un réseau privé. Il vous donne la liberté d’accéder à Internet en toute sécurité depuis votre smartphone ou votre ordinateur portable lorsqu’il est connecté à un réseau non fiable, comme le WiFi d’un hôtel ou d’un café.

Le chiffrement de WireGuard repose sur des clés publiques et privées permettant aux pairs d’établir un tunnel chiffré entre eux. Chaque version de WireGuard utilise une suite de chiffrement cryptographique spécifique pour garantir la simplicité, la sécurité et la compatibilité avec les pairs.

En comparaison, d’autres logiciels VPN tels que OpenVPN et IPSec utilisent Transport Layer Security (TLS) et des certificats pour authentifier et établir des tunnels cryptés entre les systèmes. Différentes versions de TLS incluent la prise en charge de centaines de suites et d’algorithmes cryptographiques différents, et bien que cela permette une grande flexibilité pour prendre en charge différents clients, cela rend également la configuration d’un VPN qui utilise TLS plus longue, complexe et sujette aux erreurs.

Dans ce didacticiel, vous allez configurer WireGuard sur un serveur Ubuntu 20.04, puis configurer une autre machine pour qu’elle s’y connecte en tant qu’homologue à l’aide de connexions IPv4 et IPv6 (communément appelées connexion à double pile). Vous apprendrez également à acheminer le trafic Internet du pair via le serveur WireGuard dans une configuration de passerelle, en plus d’utiliser le VPN pour un tunnel peer-to-peer chiffré.

Pour les besoins de ce didacticiel, nous allons configurer un autre système Ubuntu 20.04 en tant qu’homologue (également appelé client) du serveur WireGuard. Les didacticiels suivants de cette série expliqueront comment installer et exécuter WireGuard sur les systèmes et appareils Windows, macOS, Android et iOS.

Avertissement

Conditions préalables Pour suivre ce tutoriel, vous aurez besoin de :

  • Un serveur Ubuntu 20.04 avec un utilisateur sudo non root et un pare-feu activé. Pour le configurer, vous pouvez suivre notre tutoriel Configuration initiale du serveur avec Ubuntu 20.04. Nous l’appellerons le serveur WireGuard tout au long de ce guide.

  • Vous aurez besoin d’une machine cliente que vous utiliserez pour vous connecter à votre serveur WireGuard. Dans ce didacticiel, nous ferons référence à cette machine sous le nom de WireGuard Peer. Pour les besoins de ce didacticiel, il est recommandé d’utiliser votre ordinateur local en tant que WireGuard Peer, mais vous pouvez utiliser des serveurs distants ou des téléphones portables en tant que clients si vous préférez. Si vous utilisez un système distant, assurez-vous de suivre toutes les sections facultatives plus loin dans ce didacticiel ou vous risquez de vous verrouiller hors du système.

  • Pour utiliser WireGuard avec IPv6, vous devrez également vous assurer que votre serveur est configuré pour prendre en charge ce type de trafic. Vous pouvez ajouter la prise en charge d’IPv6 lors de la création d’un droplet ou ultérieurement en suivant les instructions de cette page.

Étape 1 - Installation de WireGuard et génération d’une paire de clés

La première étape de ce tutoriel consiste à installer WireGuard sur votre serveur. Pour commencer, mettez à jour l’index de package de votre serveur WireGuard et installez WireGuard à l’aide des commandes suivantes. Vous pouvez être invité à fournir le mot de passe de votre utilisateur sudo si c’est la première fois que vous utilisez sudo dans cette session :

sudo apt update
sudo apt install wireguard

Maintenant que WireGuard est installé, l’étape suivante consiste à générer une paire de clés privée et publique pour le serveur. Vous utiliserez les commandes intégrées wg genkey et wg pubkey pour créer les clés, puis ajouterez la clé privée au fichier de configuration de WireGuard.

Vous devrez également modifier les autorisations sur la clé que vous venez de créer à l’aide de la commande chmod, car par défaut, le fichier est lisible par n’importe quel utilisateur de votre serveur.

Créez la clé privée pour WireGuard et modifiez ses autorisations à l’aide des commandes suivantes :

wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key

La commande sudo chmod go=... supprime toutes les autorisations sur le fichier pour les utilisateurs et les groupes autres que l’utilisateur root afin de s’assurer que lui seul peut accéder à la clé privée.

Vous devriez recevoir une seule ligne de sortie encodée en base64, qui est la clé privée. Une copie de la sortie est également stockée dans le fichier /etc/wireguard/private.key pour référence future par la partie tee de la commande. Notez soigneusement la clé privée qui est sortie car vous devrez l’ajouter au fichier de configuration de WireGuard plus tard dans cette section.

L’étape suivante consiste à créer la clé publique correspondante, qui est dérivée de la clé privée. Utilisez la commande suivante pour créer le fichier de clé publique :

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.keyboard

Cette commande se compose de trois commandes individuelles qui sont enchaînées à l’aide de la commande | (pipe)(combinaisons de touches alt-gr+6):

  • sudo cat /etc/wireguard/private.key : cette commande lit le fichier de clé privée et le sort dans le flux de sortie standard.
  • wg pubkey : la deuxième commande prend la sortie de la première commande comme entrée standard et la traite pour générer une clé publique.
  • sudo tee /etc/wireguard/public.key : la commande finale prend la sortie de la commande de génération de clé publique et la redirige vers le fichier nommé /etc/wireguard/public.key.

Lorsque vous exécutez la commande, vous recevrez à nouveau une seule ligne de sortie codée en base64, qui est la clé publique de votre serveur WireGuard. Copiez-le quelque part pour référence, car vous devrez distribuer la clé publique à tout pair qui se connecte au serveur.

Étape 2 - Choisir les adresses IPv4 et IPv6

Dans la section précédente, vous avez installé WireGuard et généré une paire de clés qui sera utilisée pour chiffrer le trafic vers et depuis le serveur. Dans cette section, vous allez créer un fichier de configuration pour le serveur et configurer WireGuard pour qu’il démarre automatiquement lorsque votre serveur redémarre. Vous définirez également des adresses IPv4 et IPv6 privées à utiliser avec votre serveur WireGuard et vos pairs.

Si vous prévoyez d’utiliser à la fois des adresses IPv4 et IPv6, suivez ces deux sections. Sinon, suivez les instructions de la section appropriée pour les besoins du réseau de votre VPN.

Étape 2(a) — Choisir une plage IPv4

Si vous utilisez votre serveur WireGuard avec des pairs IPv4, le serveur a besoin d’une plage d’adresses IPv4 privées à utiliser pour les clients et pour son interface de tunnel. Vous pouvez choisir n’importe quelle plage d’adresses IP parmi les blocs d’adresses réservés suivants (si vous souhaitez en savoir plus sur la façon dont ces blocs sont alloués, consultez la spécification RFC 1918 :

  • 10.0.0.0 to 10.255.255.255 (10/8 prefix)
  • 172.16.0.0 to 172.31.255.255 (172.16/12 prefix)
  • 192.168.0.0 to 192.168.255.255 (192.168/16 prefix) Pour les besoins de ce didacticiel, nous utiliserons 10.8.0.0/24 comme bloc d’adresses IP de la première plage d’adresses IP réservées. Cette plage autorise jusqu’à 255 connexions homologues différentes et ne doit généralement pas avoir d’adresses qui se chevauchent ou sont en conflit avec d’autres plages d’adresses IP privées. N’hésitez pas à choisir une plage d’adresses qui fonctionne avec votre configuration réseau si cet exemple de plage n’est pas compatible avec vos réseaux.

Le serveur WireGuard utilisera une seule adresse IP de la plage pour son adresse IPv4 de tunnel privé. Nous utiliserons 10.8.0.1/24 ici, mais toute adresse comprise entre 10.8.0.1 et 10.8.0.255 peut être utilisée. Notez l’adresse IP que vous choisissez si vous utilisez quelque chose de différent de 10.8.0.1/24. Vous ajouterez cette adresse IPv4 au fichier de configuration que vous définissez à l’Étape 3 — Création d’une configuration de serveur WireGuard.

Étape 2(b) — Choisir une plage IPv6

Note

Si vous utilisez WireGuard avec IPv6, vous devrez générer un préfixe d’adresse unicast IPv6 local unique basé sur l’algorithme de RFC 4193. Les adresses que vous utilisez avec WireGuard seront associées à une interface de tunnel virtuel. Vous devrez effectuer quelques étapes pour générer un préfixe IPv6 aléatoire et unique dans le bloc réservé fd00::/8 d’adresses IPv6 privées.

Selon la RFC, la méthode recommandée pour obtenir un préfixe IPv6 unique consiste à combiner l’heure du jour avec une valeur d’identification unique provenant d’un système, comme un numéro de série ou un ID d’appareil. Ces valeurs sont ensuite hachées et tronquées, ce qui donne un ensemble de bits qui peut être utilisé comme adresse unique dans le bloc privé fd00 ::/8 d’adresses IP.

Pour commencer à générer une plage IPv6 pour votre serveur WireGuard, collectez un horodatage 64 bits à l’aide de l’utilitaire de date avec la commande suivante :

date +%s%N

Vous recevrez un nombre comme celui-ci, qui est le nombre de secondes (les %s dans la commande date) et de nanosecondes (les %N) depuis le 1970-01-01 00:00:00 UTC combinés :

Output
1628101352127592197

Enregistrez la valeur quelque part pour une utilisation ultérieure dans cette section. Ensuite, copiez la valeur machine-id de votre serveur à partir du fichier /var/lib/dbus/machine-id. Cet identifiant est unique à votre système et ne devrait pas changer tant que le serveur existe.

cat /var/lib/dbus/machine-id

Vous devriez obtenir un affichage comme celui-ci :

/var/lib/dbus/machine-id
20086c25853947c7aeee2ca1ea849d7d

Vous devez maintenant combiner l’horodatage avec l’ID de la machine et hacher la valeur résultante à l’aide de l’algorithme SHA-1. La commande utilisera le format suivant :

printf <timestamp><machine-id> | sha1sum

Exécutez la commande en remplaçant les valeurs d’horodatage et d’identité de la machine :

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

Vous recevrez une valeur de hachage comme celle-ci :

Output
4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

Tip
Notez que la sortie de la commande sha1sum est en hexadécimal, donc la sortie utilise deux caractères pour représenter un seul octet de données. Par exemple, 4f et 26 dans l’exemple de sortie sont les deux premiers octets des données hachées.
L’algorithme de la RFC ne nécessite que les 40 bits les moins significatifs (derniers), ou 5 octets, de la sortie hachée. Utilisez la commande cut pour imprimer les 5 derniers octets encodés en hexadécimal à partir du hachage :

printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

L’argument -c indique à la commande cut de sélectionner uniquement un jeu de caractères spécifié. L’argument 31- indique à cut d’imprimer tous les caractères de la position 31 à la fin de la ligne d’entrée.

Vous devriez recevoir une sortie comme celle-ci :

Output
0d86fac3bc

Dans cet exemple de sortie, l’ensemble d’octets est : 0d 86 fa c3 bc.

Vous pouvez maintenant construire votre préfixe réseau IPv6 unique en ajoutant les 5 octets que vous avez générés avec le préfixe fd, en séparant tous les 2 octets par un : deux-points pour plus de lisibilité. Étant donné que chaque sous-réseau de votre préfixe unique peut contenir un total de 18 446 744 073 709 551 616 adresses IPv6 possibles, vous pouvez limiter le sous-réseau à une taille standard de /64 pour plus de simplicité.

En utilisant les octets précédemment générés avec la taille de sous-réseau /64, le préfixe résultant sera le suivant :

Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64

Cette plage fd0d:86fa:c3bc::/64 est ce que vous utiliserez pour attribuer des adresses IP individuelles à vos interfaces de tunnel WireGuard sur le serveur et les pairs. Pour allouer une adresse IP au serveur, ajoutez un 1 après les derniers caractères ::. L’adresse résultante sera fd0d:86fa:c3bc::1/64. Les pairs peuvent utiliser n’importe quelle adresse IP de la plage, mais généralement, vous incrémentez la valeur d’un à chaque fois que vous ajoutez un pair, par ex. fd0d:86fa:c3bc::2/64. Notez l’adresse IP et procédez à la configuration du serveur WireGuard dans la section suivante de ce didacticiel.

Étape 3 — Création d’une configuration serveur WireGuard

Avant de créer la configuration de votre serveur WireGuard, vous aurez besoin des informations suivantes :

Une fois que vous avez la clé privée et l’adresse IP requises, créez un nouveau fichier de configuration à l’aide de nano ou de votre éditeur préféré en exécutant la commande suivante :

sudo nano /etc/wireguard/wg0.conf

Ajoutez les lignes suivantes au fichier, en remplaçant votre clé privée à la place de la valeur base64_encoded_private_key_goes_here en surbrillance, et la ou les adresses IP sur la ligne Address. Vous pouvez également modifier la ligne ListenPort si vous souhaitez que WireGuard soit disponible sur un autre port :

/etc/wireguard/wg0.conf
[Interface]
PrivateKey = base64_encoded_private_key_goes_here
Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64
ListenPort = 51820
SaveConfig = true

La ligne SaveConfig garantit que lorsqu’une interface WireGuard est arrêtée, toutes les modifications seront enregistrées dans le fichier de configuration.

Enregistrez et fermez le fichier /etc/wireguard/wg0.conf. Si vous utilisez nano, vous pouvez le faire avec CTRL+X, puis Y et ENTER pour confirmer. Vous disposez maintenant d’une configuration de serveur initiale sur laquelle vous pouvez vous appuyer en fonction de la manière dont vous envisagez d’utiliser votre serveur VPN WireGuard.

Étape 4 - Ajustement de la configuration réseau du serveur WireGuard

Si vous utilisez WireGuard pour connecter un peer au serveur WireGuard afin d’accéder aux services sur le serveur uniquement, vous n’avez pas besoin de remplir cette section. Si vous souhaitez acheminer le trafic Internet de votre WireGuard Peer via le serveur WireGuard, vous devrez configurer le transfert IP en suivant cette section du didacticiel.

Pour configurer le transfert, ouvrez le fichier /etc/sysctl.conf à l’aide de nano ou de votre éditeur préféré :

sudo nano /etc/sysctl.conf

Si vous utilisez IPv4 avec WireGuard, ajoutez la ligne suivante au bas du fichier :

net.ipv4.ip_forward=1

Si vous utilisez IPv6 avec WireGuard, ajoutez cette ligne en bas du fichier :

net.ipv6.conf.all.forwarding=1

Si vous utilisez à la fois IPv4 et IPv6, assurez-vous d’inclure les deux lignes. Enregistrez et fermez le fichier lorsque vous avez terminé. Pour lire le fichier et charger les nouvelles valeurs pour votre session de terminal actuelle, exécutez :

sudo sysctl -p
Output
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

Désormais, votre serveur WireGuard pourra transférer le trafic provenant du périphérique Ethernet VPN virtuel vers d’autres sur le serveur, et de là vers l’Internet public. L’utilisation de cette configuration vous permettra d’acheminer tout le trafic Web de votre Peer WireGuard Peer via l’adresse IP de votre serveur, et l’adresse IP publique de votre client sera effectivement masquée.

Cependant, avant que le trafic puisse être acheminé correctement via votre serveur, vous devrez configurer certaines règles de pare-feu. Ces règles garantiront que le trafic vers et depuis votre serveur et vos homologues WireGuard circule correctement.

Étape 5 - Configuration du pare-feu du serveur WireGuard

Dans cette section, vous modifierez la configuration du serveur WireGuard pour ajouter des règles de pare-feu qui garantiront que le trafic vers et depuis le serveur et les clients est correctement acheminé. Comme pour la section précédente, ignorez cette étape si vous utilisez uniquement votre VPN WireGuard pour une connexion de machine à machine pour accéder aux ressources qui sont limitées à votre VPN.

Pour autoriser le trafic VPN WireGuard à travers le pare-feu du serveur, vous devez activer le masquage, qui est un concept iptables qui fournit une traduction dynamique d’adresses réseau (NAT) à la volée pour acheminer correctement les connexions client.

Recherchez d’abord l’interface réseau publique de votre serveur WireGuard à l’aide de la sous-commande ip route :

ip route list default

L’interface publique est la chaîne de caractères trouvée dans la sortie de cette commande qui suit le mot “dev”. Par exemple, ce résultat montre l’interface nommée eth0, qui est mise en évidence ci-dessous :

Output
default via 203.0.113.1 dev eth0 proto static

Notez le nom de votre appareil puisque vous l’ajouterez aux règles iptables à l’étape suivante.

Pour ajouter des règles de pare-feu à votre serveur WireGuard, ouvrez à nouveau le fichier /etc/wireguard/wg0.conf avec nano ou votre éditeur préféré.

sudo nano /etc/wireguard/wg0.conf

Au bas du fichier après la ligne SaveConfig = true, collez les lignes suivantes :

/etc/wireguard/wg0.conf
. . .
PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Les lignes PostUp s’exécuteront lorsque le serveur WireGuard démarrera le tunnel VPN virtuel. Dans l’exemple ici, il ajoutera trois règles ufw et iptables :

  • ufw route allow in on wg0 out on eth0 - Cette règle permettra de transférer le trafic IPv4 et IPv6 entrant sur l’interface VPN wg0 vers l’interface réseau eth0 sur le serveur. Il fonctionne en conjonction avec les valeurs sysctl net.ipv4.ip_forward et net.ipv6.conf.all.forwarding que vous avez configurées dans la section précédente.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE - Cette règle configure le masquage et réécrit le trafic IPv4 qui arrive sur l’interface VPN wg0 pour le faire apparaître comme s’il provenait directement de l’adresse IPv4 publique du serveur WireGuard.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE - Cette règle configure le masquage et réécrit le trafic IPv6 qui arrive sur l’interface VPN wg0 pour le faire apparaître comme s’il provenait directement de l’adresse IPv6 publique du serveur WireGuard.

Les règles PreDown s’exécutent lorsque le serveur WireGuard arrête le tunnel VPN virtuel. Ces règles sont l’inverse des règles PostUp et fonctionnent pour annuler les règles de transfert et de masquage pour l’interface VPN lorsque le VPN est arrêté.

Dans les deux cas, modifiez la configuration pour inclure ou exclure les règles IPv4 et IPv6 appropriées pour votre VPN. Par exemple, si vous utilisez simplement IPv4, vous pouvez exclure les lignes avec les commandes ip6tables.

Inversement, si vous utilisez uniquement IPv6, modifiez la configuration pour n’inclure que les commandes ip6tables. Les lignes ufw doivent exister pour toute combinaison de réseaux IPv4 et IPv6. Enregistrez et fermez le fichier lorsque vous avez terminé.

La dernière partie de la configuration du pare-feu sur votre serveur WireGuard consiste à autoriser le trafic vers et depuis le port WireGuard UDP lui-même. Si vous n’avez pas modifié le port dans le fichier /etc/wireguard/wg0.conf du serveur, le port que vous ouvrirez est 51820. Si vous avez choisi un port différent lors de la modification de la configuration, assurez-vous de le remplacer dans la commande UFW suivante.

Si vous avez oublié d’ouvrir le port SSH en suivant le tutoriel prérequis, ajoutez-le ici également :

sudo ufw allow 51820/udp
sudo ufw allow OpenSSH

Note Si vous utilisez un pare-feu différent ou si vous avez personnalisé votre configuration UFW, vous devrez peut-être ajouter des règles de pare-feu supplémentaires. Par exemple, si vous décidez de tunneliser tout votre trafic réseau via la connexion VPN, vous devrez vous assurer que le trafic du port 53 est autorisé pour les requêtes DNS, et les ports comme 80 et 443 pour le trafic HTTP et HTTPS respectivement. S’il existe d’autres protocoles que vous utilisez sur le VPN, vous devrez également leur ajouter des règles. Après avoir ajouté ces règles, désactivez et réactivez UFW pour le redémarrer et charger les modifications de tous les fichiers que vous avez modifiés :

 sudo ufw disable
 sudo ufw enable

Vous pouvez confirmer que les règles sont en place en exécutant la commande ufw status. Exécutez-le et vous devriez recevoir une sortie comme celle-ci :

sudo ufw status
Output
Status: active

To                         Action      From
--                         ------      ----
51280/udp                  ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
51280/udp (v6)             ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)

Votre serveur WireGuard est maintenant configuré pour gérer correctement le trafic du VPN, y compris le transfert et le masquage pour les Peer. Avec les règles de pare-feu en place, vous pouvez démarrer le service WireGuard lui-même pour écouter les connexions de vos Peer.

Étape 6 - Démarrage du serveur WireGuard

WireGuard peut être configuré pour s’exécuter en tant que service systemd à l’aide de son script wg-quick intégré. Bien que vous puissiez utiliser manuellement la commande wg pour créer le tunnel chaque fois que vous souhaitez utiliser le VPN, il s’agit d’un processus manuel qui devient répétitif et sujet aux erreurs. Au lieu de cela, vous pouvez utiliser systemctl pour gérer le tunnel à l’aide du script wg-quick.

L’utilisation d’un service systemd signifie que vous pouvez configurer WireGuard pour qu’il démarre au démarrage afin de pouvoir vous connecter à votre VPN à tout moment tant que le serveur est en cours d’exécution. Pour cela, activez le service wg-quick pour le tunnel wg0 que vous avez défini en l’ajoutant à systemctl :

sudo systemctl enable wg-quick@wg0.service

Notez que la commande spécifie le nom du périphérique tunnel wg0 dans le cadre du nom du service. Ce nom correspond au fichier de configuration /etc/wireguard/wg0.conf. Cette approche de nommage signifie que vous pouvez créer autant de tunnels VPN distincts que vous le souhaitez en utilisant votre serveur.

Par exemple, vous pourriez avoir un périphérique de tunnel et le nom de prod et son fichier de configuration serait /etc/wireguard/prod.conf. Chaque configuration de tunnel peut contenir différents paramètres IPv4, IPv6 et de pare-feu client. De cette façon, vous pouvez prendre en charge plusieurs connexions Peer différentes, chacune avec ses propres adresses IP et règles de routage uniques.

Démarrez maintenant le service :

sudo systemctl start wg-quick@wg0.service

Vérifiez que le service WireGuard est actif avec la commande suivante. Vous devriez voir actif (en cours d’exécution) dans la sortie :

sudo systemctl status wg-quick@wg0.service
Output
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 3245 (code=exited, status=0/SUCCESS)

Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

La sortie affiche les commandes ip utilisées pour créer le périphérique wg0 virtuel et lui attribuer les adresses IPv4 et IPv6 que vous avez ajoutées au fichier de configuration. Vous pouvez utiliser ces règles pour dépanner le tunnel, ou avec la commande wg elle-même si vous souhaitez essayer de configurer manuellement l’interface VPN.

Avec le serveur configuré et en cours d’exécution, l’étape suivante consiste à configurer votre ordinateur client en tant qu’homologue WireGuard et à vous connecter au serveur WireGuard.

Étape 7 - Configuration d’un peer WireGuard

La configuration d’un peer WireGuard est similaire à la configuration du serveur WireGuard. Une fois le logiciel client installé, vous allez générer une paire de clés publique et privée, décider d’une ou plusieurs adresses IP pour le pair, définir un fichier de configuration pour le pair, puis démarrer le tunnel à l’aide du script wg-quick.

Vous pouvez ajouter autant de pairs que vous le souhaitez à votre VPN en générant une paire de clés et une configuration en suivant les étapes suivantes. Si vous ajoutez plusieurs pairs au VPN, assurez-vous de garder une trace de leurs adresses IP privées pour éviter les collisions.

Pour configurer le WireGuard Peer, assurez-vous que le package WireGuard est installé à l’aide des commandes apt suivantes. Sur le peer WireGuard lancer les commandes suivantes:

sudo apt update
sudo apt install wireguard

Création de la paire de clés WireGuard sur le Peer

Ensuite, vous devrez générer la paire de clés sur le pair en suivant les mêmes étapes que celles que vous avez utilisées sur le serveur. Depuis votre machine locale ou votre serveur distant qui servira de pair, continuez et créez la clé privée pour le pair à l’aide des commandes suivantes :

wg genkey | sudo tee /etc/wireguard/private.key
sudo chmod go= /etc/wireguard/private.key

Encore une fois, vous recevrez une seule ligne de sortie encodée en base64, qui est la clé privée. Une copie de la sortie est également stockée dans /etc/wireguard/private.key. Notez soigneusement la clé privée qui est sortie car vous devrez l’ajouter au fichier de configuration de WireGuard plus tard dans cette section.

Utilisez ensuite la commande suivante pour créer le fichier de clé publique :

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Vous recevrez à nouveau une seule ligne de sortie codée en base64, qui est la clé publique de votre WireGuard Peer. Copiez-le quelque part pour référence, car vous devrez distribuer la clé publique au serveur WireGuard afin d’établir une connexion cryptée.

Création du fichier de configuration de WireGuard Peer

Maintenant que vous avez une paire de clés, vous pouvez créer un fichier de configuration pour le pair qui contient toutes les informations dont il a besoin pour établir une connexion au serveur WireGuard.

Vous aurez besoin de quelques informations pour le fichier de configuration :

  • La clé privée encodée en base64 que vous avez générée sur le pair.
  • Les plages d’adresses IPv4 et IPv6 que vous avez définies sur le serveur WireGuard.
  • La clé publique encodée en base64 du serveur WireGuard.
  • L’adresse IP publique et le numéro de port du serveur WireGuard. Il s’agira généralement de l’adresse IPv4, mais si votre serveur possède une adresse IPv6 et que votre ordinateur client dispose d’une connexion IPv6 à Internet, vous pouvez l’utiliser à la place d’IPv4.

Avec toutes ces informations à portée de main, ouvrez un nouveau fichier /etc/wireguard/wg0.conf sur la machine WireGuard Peer à l’aide de nano ou de votre éditeur préféré :

sudo nano /etc/wireguard/wg0.conf

Ajoutez les lignes suivantes au fichier, en remplaçant les différentes données dans les sections selon les besoins :

/etc/wireguard/wg0.conf
[Interface]
PrivateKey = base64_encoded_peer_private_key_goes_here     # <-- A AJUSTER
Address = 10.8.0.2/24                                      # <-- A AJUSTER
Address = fd0d:86fa:c3bc::2/64                             # <-- A AJUSTER

[Peer]
PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=   # <-- A AJUSTER
AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64              # <-- A AJUSTER
Endpoint = 203.0.113.1:51820                               # <-- A AJUSTER

Remarquez comment la première ligne d’adresse utilise une adresse IPv4 du sous-réseau 10.8.0.0/24 que vous avez choisi précédemment. Cette adresse IP peut être n’importe quoi dans le sous-réseau tant qu’elle est différente de l’adresse IP du serveur. Incrémenter les adresses de 1 chaque fois que vous ajoutez un pair est généralement le moyen le plus simple d’allouer des adresses IP.

De même, notez comment la deuxième ligne d’adresse utilise une adresse IPv6 du sous-réseau que vous avez généré précédemment et incrémente l’adresse du serveur de un. Encore une fois, toute adresse IP de la plage est valide si vous décidez d’utiliser une adresse différente.

L’autre partie notable du fichier est la dernière ligne AllowedIPs. Ces deux plages IPv4 et IPv6 indiquent au pair de n’envoyer du trafic sur le VPN que si le système de destination a une adresse IP dans l’une ou l’autre plage. À l’aide de la directive AllowedIPs, vous pouvez restreindre le VPN sur le pair pour qu’il se connecte uniquement à d’autres pairs et services sur le VPN, ou vous pouvez configurer le paramètre pour tunneliser tout le trafic sur le VPN et utiliser le serveur WireGuard comme passerelle.

Si vous utilisez uniquement IPv4, omettez la plage finale fd0d:86fa:c3bc::/64 (y compris la virgule ,). Inversement, si vous utilisez uniquement IPv6, n’incluez que le préfixe fd0d:86fa:c3bc::/64 et omettez la plage IPv4 10.8.0.0/24.

Dans les deux cas, si vous souhaitez envoyer tout le trafic de votre pair via le VPN et utiliser le serveur WireGuard comme passerelle pour tout le trafic, vous pouvez utiliser 0.0.0.0/0, qui représente l’intégralité de l’espace d’adressage IPv4, et :: /0 pour tout l’espace d’adressage IPv6.

(Facultatif) Configuration d’un peer pour acheminer tout le trafic dans le tunnel

Si vous avez choisi d’acheminer tout le trafic du peer sur le tunnel à l’aide des routes 0.0.0.0/0 ou ::/0 et que le pair est un système distant, vous devrez suivre les étapes de cette section. Si votre peer est un système local, il est préférable d’ignorer cette section.

Pour les peer distants auxquels vous accédez via SSH ou un autre protocole utilisant une adresse IP publique, vous devrez ajouter des règles supplémentaires au fichier wg0.conf du peer. Ces règles garantissent que vous pouvez toujours vous connecter au système depuis l’extérieur du tunnel lorsqu’il est connecté. Sinon, lorsque le tunnel est établi, tout le trafic qui serait normalement géré sur l’interface du réseau public ne sera pas acheminé correctement pour contourner l’interface du tunnel wg0, conduisant à un système distant inaccessible.

Tout d’abord, vous devrez déterminer l’adresse IP que le système utilise comme passerelle par défaut. Exécutez la commande ip route suivante :

ip route list table main default

Vous devriez obtenir un affichage comme celui-ci :

Output
default via 203.0.113.1 dev eth0 proto static

Notez l’adresse IP en surbrillance de la passerelle 203.0.113.1 pour une utilisation ultérieure, et le périphérique eth0. Le nom de votre appareil peut être différent. Si tel est le cas, remplacez-le par eth0 dans les commandes suivantes.

Trouvez ensuite l’adresse IP publique du système en examinant le périphérique avec la commande ip address show :

ip -brief address show eth0

Vous devriez obtenir un affichage comme celui-ci :

Output
eth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

Dans cet exemple de sortie, l’IP 203.0.113.5 (sans le /20 final) est l’adresse publique attribuée au périphérique eth0 que vous devrez ajouter à la configuration WireGuard.

Ouvrez maintenant le fichier /etc/wireguard/wg0.conf de votre peer WireGuard avec nano ou votre éditeur préféré.

sudo nano /etc/wireguard/wg0.conf

Avant la ligne [Peer], ajoutez les 4 lignes suivantes :

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

Ces lignes créeront une règle de routage personnalisée et ajouteront une route personnalisée pour garantir que le trafic public vers le système utilise la passerelle par défaut.

  • PostUp = ip rule add table 200 from 203.0.113.5 - Cette commande crée une règle qui vérifie toutes les entrées de routage dans la table numérotée 200 lorsque l’adresse IP correspond à l’adresse publique 203.0.113.5 du système.
  • PostUp = ip route add table 200 default via 203.0.113.1 - Cette commande garantit que tout trafic traité par la table 200 utilisera la passerelle 203.0.113.1 pour le routage, au lieu de l’interface WireGuard. Les lignes PreDown suppriment la règle et l’itinéraire personnalisés lorsque le tunnel est arrêté.

Remarque : Le numéro de table 200 est arbitraire lors de la construction de ces règles. Vous pouvez utiliser une valeur comprise entre 2 et 252, ou vous pouvez utiliser un nom personnalisé en ajoutant une étiquette au fichier /etc/iproute2/rt_tables, puis en vous référant au nom au lieu de la valeur numérique.

Pour plus d’informations sur le fonctionnement des tables de routage sous Linux, consultez la section Tables de routage du Guide d’administration du réseau de couche IP avec Linux.

Si vous acheminez tout le trafic de l’homologue via le VPN, assurez-vous d’avoir configuré les règles sysctl et iptables correctes sur le serveur WireGuard à l’Étape 4 — Réglage de la configuration réseau du serveur WireGuard et à l’Étape 5 — Configuration du pare-feu du serveur WireGuard.

(Facultatif) Configuration des résolveurs DNS du WireGuard Peer

Si vous utilisez le serveur WireGuard comme passerelle VPN pour tout le trafic de vos pairs, vous devrez ajouter une ligne à la section [Interface] qui spécifie les résolveurs DNS. Si vous n’ajoutez pas ce paramètre, vos requêtes DNS peuvent ne pas être sécurisées par le VPN, ou elles peuvent être révélées à votre fournisseur de services Internet ou à d’autres tiers.

Si vous utilisez uniquement WireGuard pour accéder aux ressources sur le réseau VPN ou dans une configuration peer-to-peer, vous pouvez ignorer cette section.

Pour ajouter des résolveurs DNS à la configuration de votre homologue, déterminez d’abord quels serveurs DNS votre serveur WireGuard utilise. Exécutez la commande suivante sur le serveur WireGuard, en remplaçant le nom de votre périphérique Ethernet à la place de eth0 s’il est différent de cet exemple :

resolvectl dns eth0

Vous devriez obtenir un affichage comme celui-ci :

Output
Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

Les adresses IP qui sont sorties sont les résolveurs DNS que le serveur utilise. Vous pouvez choisir d’utiliser tout ou partie d’entre eux, ou seulement IPv4 ou IPv6 selon vos besoins. Notez les résolveurs que vous utiliserez.

Ensuite, vous devrez ajouter vos résolveurs choisis au fichier de configuration de votre peer WireGuard. De retour sur le Peer WireGuard, ouvrez le fichier /etc/wireguard/wg0.conf en utilisant nano ou votre éditeur préféré :

sudo nano /etc/wireguard/wg0.conf

Avant la ligne [Peer], ajoutez ce qui suit :

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

Encore une fois, selon vos préférences ou vos exigences pour IPv4 et IPv6, vous pouvez modifier la liste en fonction de vos besoins.

Une fois que vous êtes connecté au VPN à l’étape suivante, vous pouvez vérifier que vous envoyez des requêtes DNS via le VPN en utilisant un site comme DNS leak test.com.

Vous pouvez également vérifier que votre pair utilise les résolveurs configurés avec la commande resolvectl dns comme vous l’avez exécuté sur le serveur. Vous devriez recevoir une sortie comme celle-ci, montrant les résolveurs DNS que vous avez configurés pour le tunnel VPN :

output
Global : 67.207.67.2 67.207.67.3
. . .

Avec tous ces paramètres de résolution DNS en place, vous êtes maintenant prêt à ajouter la clé publique du peer au serveur, puis à démarrer le tunnel WireGuard sur le pair.

Étape 8 - Ajout de la clé publique du pair au serveur WireGuard

Avant de connecter le peer au serveur, il est important d’ajouter la clé publique du peer au serveur WireGuard. Cette étape garantit que vous pourrez vous connecter et acheminer le trafic via le VPN. Sans terminer cette étape, le serveur WireGuard ne permettra pas au pair d’envoyer ou de recevoir du trafic sur le tunnel.

Assurez-vous que vous disposez d’une copie de la clé publique encodée en base64 pour le Peer WireGuard en exécutant :

sudo cat /etc/wireguard/public.key
Output
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Connectez-vous maintenant au serveur WireGuard et exécutez la commande suivante :

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

Notez que la partie allow-ips de la commande prend une liste d’adresses IPv4 et IPv6 séparées par des virgules. Vous pouvez spécifier des adresses IP individuelles si vous souhaitez restreindre l’adresse IP qu’un peer peut s’attribuer, ou une plage comme dans l’exemple si vos peer peuvent utiliser n’importe quelle adresse IP dans la plage VPN. Notez également que deux peers ne peuvent pas avoir le même paramètre allow-ips .

Si vous souhaitez mettre à jour les adresses IP autorisées pour un peer existant, vous pouvez réexécuter la même commande, mais modifier les adresses IP. Plusieurs adresses IP sont prises en charge. Par exemple, pour modifier le Peer WireGuard que vous venez d’ajouter pour ajouter une IP comme 10.8.0.100 aux IP existantes 10.8.0.2 et fd0d:86fa:c3bc::2, vous exécuteriez ce qui suit :

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

Une fois que vous avez exécuté la commande pour ajouter le peer, vérifiez l’état du tunnel sur le serveur à l’aide de la commande wg :

sudo wg
Output
interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

Remarquez comment la ligne du Peer affiche la clé publique du Peer WireGuard, ainsi que les adresses IP ou les plages d’adresses qu’il est autorisé à utiliser pour s’attribuer une adresse IP.

Maintenant que vous avez défini les paramètres de connexion du pair sur le serveur, l’étape suivante consiste à démarrer le tunnel sur le Peer.

Étape 9 - Connexion du WireGuard Peer au tunnel

Maintenant que votre serveur et votre homologue sont tous deux configurés pour prendre en charge votre choix d’IPv4, d’IPv6, de transfert de paquets et de résolution DNS, il est temps de connecter le Peer au tunnel VPN.

Étant donné que vous ne souhaitez peut-être que le VPN soit activé pour certains cas d’utilisation, nous utiliserons la commande wg-quick pour établir la connexion manuellement. Si vous souhaitez automatiser le démarrage du tunnel comme vous l’avez fait sur le serveur, suivez ces étapes dans la section Étape 6 - Démarrage du serveur WireGuard au lieu d’utiliser la commande wq-quick.

Si vous acheminez tout le trafic via le VPN et que vous avez configuré le transfert DNS, vous devrez installer l’utilitaire resolvconf sur le Peer WireGuard avant de démarrer le tunnel. Exécutez la commande suivante pour configurer ceci :

sudo apt install resolvconf

Pour démarrer le tunnel, lancer la commande suivante sur le Peer Wireguard:

sudo wg-quick ip wg0

Vous devriez obtenir un affichage comme celui-ci :

Output
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Notez les adresses IPv4 et IPv6 que vous avez attribuées au pair.

Si vous définissez AllowedIPs sur le pair sur .0.0.0/0 et ::/0 (ou pour utiliser des plages autres que celles que vous avez choisies pour le VPN), votre sortie ressemblera à ceci :

Output
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Dans cet exemple, notez les routes en surbrillance ajoutées par la commande, qui correspondent aux adresses IP autorisées dans la configuration du Peer.

Vous pouvez vérifier l’état du tunnel sur le Peer à l’aide de la commande wg :

sudo wg
Output
interface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

Vous pouvez également vérifier à nouveau l’état sur le serveur et vous recevrez une sortie similaire.

Vérifiez que votre Peer utilise le VPN à l’aide des commandes ip route et ip -6 route. Si vous utilisez le VPN comme passerelle pour tout votre trafic Internet, vérifiez quelle interface sera utilisée pour le trafic destiné aux résolveurs DNS 1.1.1.1 et 2606:4700:4700::1111 de CloudFlare.

Si vous utilisez uniquement WireGuard pour accéder aux ressources sur le VPN, remplacez une adresse IPv4 ou IPv6 valide comme la passerelle elle-même dans ces commandes. Par exemple 10.8.0.1 ou fd0d:86fa:c3bc::1.

ip route get 1.1.1.1
Output
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

Notez que le périphérique wg0 est utilisé et l’adresse IPv4 10.8.0.2 que vous avez attribuée au pair. De même, si vous utilisez IPv6, exécutez ce qui suit :

ip -6 route get 2606:4700:4700::1111
Output
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

Notez à nouveau l’interface wg0 et l’adresse IPv6 fd0d:86fa:c3bc::2 que vous avez attribuée au peer.

Si votre pair a un navigateur installé, vous pouvez également visiter ipleak.net et ipv6-test.com pour confirmer que votre pair achemine son trafic via le VPN.

Une fois que vous êtes prêt à vous déconnecter du VPN sur le peer, utilisez la commande wg-quick :

sudo wg-quick down wg0

Vous recevrez une sortie comme celle-ci indiquant que le tunnel VPN est arrêté :

Output
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f

Si vous définissez AllowedIPs sur le pair sur 0.0.0.0/0 et ::/0 (ou pour utiliser des plages autres que celles que vous avez choisies pour le VPN), votre sortie ressemblera à ceci :

Output
[#] ip rule delete table 200 from 203.0.113.5
[#] ip route delete table 200 default via 203.0.113.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -n
[#] ip6tables-restore -n

Pour vous reconnecter au VPN, exécutez à nouveau la commande wg-quick up wg0 sur le Peer. Si vous souhaitez supprimer complètement la configuration d’un Peer du serveur WireGuard, vous pouvez exécuter la commande suivante, en vous assurant de remplacer la clé publique correcte par le Peer que vous souhaitez supprimer :

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

En règle générale, vous n’aurez besoin de supprimer une configuration d’homologue que si l’homologue n’existe plus ou si ses clés de chiffrement sont compromises ou modifiées. Sinon, il est préférable de laisser la configuration en place afin que le pair puisse se reconnecter au VPN sans avoir à ajouter sa clé et ses ips autorisées à chaque fois.

Conclusion

Dans ce didacticiel, vous avez installé le package et les outils WireGuard sur les systèmes serveur et client Ubuntu 20.04. Vous avez configuré des règles de pare-feu pour WireGuard et configuré les paramètres du noyau pour autoriser le transfert de paquets à l’aide de la commande sysctl sur le serveur. Vous avez appris à générer des clés de chiffrement WireGuard privées et publiques et à configurer le serveur et le Peer (ou les Peers) pour qu’ils se connectent les uns aux autres.

Si votre réseau utilise IPv6, vous avez également appris à générer une plage d’adresses locales unique à utiliser avec les connexions homologues. Enfin, vous avez appris à limiter le trafic qui doit passer par le VPN en restreignant les préfixes réseau que le pair peut utiliser, ainsi qu’à utiliser le serveur WireGuard comme passerelle VPN pour gérer tout le trafic Internet pour les Peers.

Si vous souhaitez en savoir plus sur WireGuard, notamment sur la configuration de tunnels plus avancés ou sur l’utilisation de WireGuard avec des conteneurs, consultez la documentation officielle de WireGuard.