23/11/2024

Administration RéseauLinuxServices

Mise en place de WireGuard VPN sur Debian 11

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer un VPN basé sur WireGuard, une solution VPN gratuite et open source qui permet d'augmenter les performances, sans pour autant négliger la sécurité.

WireGuard est une solution relativement récente puisqu'elle est disponible en version stable depuis mars 2020 et elle a l'honneur d'être intégrée directement au noyau Linux depuis la version 5.6. Cela ne l'empêche pas d'être accessible depuis d'anciennes distributions de Linux qui utilisent une autre version du noyau. En comparaison de solutions comme OpenVPN et IPSec, WireGuard se veut plus simple dans son fonctionnement et beaucoup plus rapide, comme nous le verrons en fin d'article.

Quelques points clés de WireGuard :

  • Simple, léger et ultra efficace !
  • Fonctionne uniquement en UDP (ce qui peut être un inconvénient pour traverser certains firewalls)
  • Fonctionne selon le modèle peer-to-peer et non "client-serveur"
  • Authentification par un échange de clé, sur le même principe que SSH avec les clés privées/publiques
  • Utilisation de plusieurs algorithmes : chiffrement symétrique avec ChaCha20, authentification des messages avec Poly1305, ainsi que d'autres comme Curve25519, BLAKE2 et SipHash24
  • Supporte aussi bien IPv4 que IPv6
  • Multiplateformes : Windows, Linux, BSD, macOS, Android, iOS, OpenWRT (et implémenté dans ProtonVPN)
  • Seulement 4 000 lignes de code, là où les autres solutions en comptent plusieurs centaines de milliers

Pour la partie cryptographique, les différents algorithmes utilisés sont triés sur le volet, audité de plusieurs façons, et examinés par des chercheurs en sécurité spécialisés dans le domaine.

Le site officiel du projet : wireguard.com

Alors convaincu par cette solution suite à la lecture de cette introduction ? Il ne reste plus qu'à poursuivre la lecture de cet article !

II. Schéma du lab WireGuard

Avant de vous présenter mon lab pour la mise en place de WireGuard, sachez que l'on peut imaginer mettre en place WireGuard pour interconnecter deux infrastructures distantes, mais aussi pour connecter un client distant à une infrastructure tel qu'un réseau d'entreprise ou le réseau de son domicile. Cela dans le même esprit qu'on le ferait avec OpenVPN, comme nous l'avons vu récemment dans le tutoriel "OpenVPN sur Synology".

Si WireGuard n'est pas mis en place directement sur le routeur ou le pare-feu, comme on peut imaginer le faire avec OpenWRT, il faudra mettre en place une redirection de port afin que le flux parvienne jusqu'au paire WireGuard.

tuto wireguard

Maintenant, je vais vous parler de mon lab et de ce que nous allons mettre en place aujourd'hui.

Je vais utiliser une machine Debian 11 comme serveur WireGuard et un poste client sous Windows en guise de client VPN WireGuard. Même si cela est un peu trompeur de parler d'une relation client-serveur, car WireGuard fonctionne selon le modèle "peer-to-peer". Un bel abus de langage lorsque l'on cherche à mettre en place une connexion "client-to-site". Disons plutôt que je vais avoir deux paires ou deux points de connexion WireGuard si vous préférez : l'un sous Debian 11 et l'autre sous Windows.

Ces deux paires peuvent communiquer ensemble dans les deux sens, cela signifie que depuis ma machine Windows je peux accéder au LAN distant de la machine Debian 11, et que l'inverse est possible aussi : tout dépend de la configuration du tunnel et du pare-feu du pair WireGuard.

Dans cet exemple, je vais me concentrer sur le cas suivant : depuis mon Peer 1 sous Windows connecté sur le réseau de mon domicile, je souhaite accéder à mon réseau d'entreprise afin d'accéder aux serveurs de l'entreprise via le tunnel VPN WireGuard. Ce qui donne ce schéma :

tuto wireguard debian 11

Au niveau des adresses IP, cela donne :

  • Réseau du domicile : 192.168.1.0/24
  • Réseau d'entreprise : 192.168.100.0/24
  • Réseau du tunnel WireGuard : 192.168.110.0/24
    • Adresse IP du Peer 1 (Windows) dans le tunnel : 192.168.110.2/24
    • Adresse IP du Peer 2 (Debian) dans le tunnel : 192.168.110.121/24

Voilà, le décor est planté ! Passons à la configuration !

Note : par défaut, WireGuard fonctionne en UDP sur le port 51820.

III. Installation et configuration du serveur WireGuard

Je vais utiliser les termes "client" pour la machine Windows et "serveur" pour la machine Debian dans ce tutoriel, car même si c'est du peer-to-peer, cela me semble plus parlant.

A. Installer WireGuard sur Debian 11

Le paquet d'installation de WireGuard est disponible dans les dépôts officiels de Debian 11. Nous n'avons qu'à mettre à jour le cache des paquets et à l'installer :

sudo apt-get update
sudo apt-get install wireguard

Installer WireGuard Debian 11

La partie serveur de WireGuard sera installée, ainsi que différents outils donnant accès à des commandes utiles pour gérer la configuration.

B. Mettre en place une interface WireGuard

À l'aide de la commande "wg" nous devons générer une clé privée et une clé publique : indispensable pour l'authentification entre deux paires, c'est-à-dire le serveur et un client (qui devra aussi disposer d'un couple de clés).

Nous allons créer la clé privée "/etc/wireguard/wg-private.key" et la clé publique "/etc/wireguard/wg-public.key" grâce à cet enchaînement de commandes :

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

La valeur de la clé publique sera retournée dans la console. Au sein du fichier de configuration de WireGuard, nous devons ajouter la valeur de notre clé privée. Pour récupérer cette valeur, saisissez la commande ci-dessous et copiez la valeur :

sudo cat /etc/wireguard/wg-private.key

Il est temps de créer un fichier de configuration dans "/etc/wireguard/". Par exemple, nous pouvons nommer ce fichier "wg0.conf", si l'on estime que l'interface réseau associée à WireGuard sera "wg0", sur le même principe que l'on trouve "eth0", par exemple.

sudo nano /etc/wireguard/wg0.conf

Dans ce fichier, nous devons ajouter le contenu suivant dans un premier temps (nous reviendrons le compléter par la suite) :

[Interface]
Address = 192.168.110.121/24
SaveConfig = true
ListenPort = 51820
PrivateKey = <clé privée du serveur>

La section [Interface] sert à déclarer la partie serveur. Voici quelques informations :

  • Address : l'adresse IP de l'interface WireGuard au sein du tunnel VPN (sous-réseau différent du LAN distant)
  • SaveConfig : la configuration est mise en mémoire (et protégée) tout le temps que l'interface est active
  • ListenPort : le port d'écoute de WireGuard, ici c'est 51820 qui est le port par défaut, mais je vous invite à le personnaliser
  • PrivateKey : la valeur de la clé privée de notre serveur (wg-private.key)

Sauvegardez le fichier et fermez-le. Avec la commande "wg-quick", nous pouvons démarrer cette interface en précisant son nom (wg0, car le fichier se nomme wg0.conf) :

sudo wg-quick up wg0

Si vous listez les adresses IP de votre serveur Debian 11, vous allez voir une nouvelle interface nommée "wg0" avec l'adresse IP définie dans le fichier de config :

ip a

Interface réseau wg0 WireGuard

Dans le même esprit, nous pouvons afficher la configuration de l'interface "wg0" via la commande "wg show" :

sudo wg show wg0

Enfin, il reste à activer le démarrage automatique de notre interface wg0 WireGuard :

sudo systemctl enable wg-quick@wg0.service

Pour le moment, nous allons laisser de côté la configuration de la partie serveur de WireGuard.

C. Activer l'IP Forwarding

Pour que notre machine Debian 11 soit en mesure de router les paquets entre les différents réseaux (tel un routeur), c'est-à-dire entre le réseau du VPN et le réseau local, nous devons activer l'IP Forwarding. Par défaut, cette fonctionnalité est désactivée.

Modifiez ce fichier de configuration :

sudo nano /etc/sysctl.conf

Ajoutez la directive suivante à la fin du fichier et enregistrez :

net.ipv4.ip_forward = 1

Voilà, c'est tout.

D. Activer l'IP Masquerade

Pour que notre serveur puisse router correctement les paquets et que le LAN distant soit accessible à la machine Windows, il faut activer l'IP Masquerade sur notre serveur Debian. C'est en quelque sorte l'activation du NAT. Je vais effectuer cette configuration sur le pare-feu Linux au travers d'UFW que j'ai l'habitude d'utiliser (tutoriel ufw sur Debian).

Si vous n'avez pas encore UFW et que vous souhaitez le mettre en place (vous pouvez aussi passer par Nftables), commencer par l'installer :

sudo apt install ufw

Tout d'abord, il faut autoriser le SSH pour ne pas perdre la main sur le serveur distant (adaptez le numéro de port) :

sudo ufw allow 22/tcp

Le port 51820 en UDP doit aussi être autorisé, car nous l'utilisons pour WireGuard (là encore, adaptez le numéro de port) :

sudo ufw allow 51820/udp

Ensuite, on va poursuivre la configuration afin d'activer l'IP masquerade. Pour cela, il faut récupérer le nom de l'interface qui est connectée au réseau local. Si vous ne connaissez pas le nom, exécutez "ip a" afin de voir le nom de la carte. Dans mon cas, on peut voir que c'est la carte "ens192".

On va se servir de cette information. Éditez le fichier suivant :

sudo nano /etc/ufw/before.rules

Ajoutez ces lignes à la fin du fichier afin d'activer l'IP masquerade sur l'interface ens192 (adaptez le nom de l'interface) au sein de la chaîne POSTROUTING de la table NAT de notre pare-feu local :

# NAT - IP masquerade
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ens192 -j MASQUERADE

# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT

Ce qui donne, en image :

Gardez ce fichier de configuration ouvert et passez à l'étape suivante. 😉

E. Configuration du pare-feu Linux pour WireGuard

Toujours au sein du même fichier de configuration, on va déclarer le réseau d'entreprise "192.168.100.0/24" afin que l'on puisse le contacter. Voici les deux règles à ajouter (idéalement après la section "# ok icmp code for FORWARD" pour regrouper les règles) :

# autoriser le forwarding pour le réseau distant de confiance (+ le réseau du VPN)
-A ufw-before-forward -s 192.168.100.0/24 -j ACCEPT
-A ufw-before-forward -d 192.168.100.0/24 -j ACCEPT
-A ufw-before-forward -s 192.168.110.0/24 -j ACCEPT
-A ufw-before-forward -d 192.168.110.0/24 -j ACCEPT

Si l'on souhaite autoriser seulement un hôte, par exemple "192.168.100.11", c'est simple :

-A ufw-before-forward -s 192.168.100.11/32 -j ACCEPT
-A ufw-before-forward -d 192.168.100.11/32 -j ACCEPT

Désormais, vous pouvez sauvegarder le fichier puis le fermer. Il ne reste plus qu'à activer UFW et à redémarrer le service pour appliquer nos changements :

sudo ufw enable
sudo systemctl restart ufw

La première partie de la configuration du serveur Debian est terminée.

IV. Client WireGuard sous Windows

Le client WireGuard est disponible pour Windows, macOS, Android, etc... C'est une bonne nouvelle. Tous les téléchargements sont accessibles sur cette page : Client WireGuard. Dans cet exemple, je vais configurer le client sous Windows. Pour mettre en place le client WireGuard sous Linux, il faut reprendre le même principe que pour créer le fichier wg0.conf sur la machine Debian (sans toute la partie NAT, etc.).

A. Installer le client WireGuard Windows

Après avoir téléchargé l'exécutable ou le package MSI, l'installation est simple puisqu'il suffit de lancer l'installeur, et puis...voilà, c'est fait ! 🙂

B. Créer un profil WireGuard

Commencez par ouvrir le logiciel afin de créer un nouveau tunnel, pour cela cliquez sur la flèche à droite du bouton "Ajouter le tunnel" et cliquez sur le bouton "Ajouter un tunnel vide".

Une fenêtre de configuration va s'ouvrir. À chaque fois que l'on crée une nouvelle configuration de tunnel, WireGuard génère un couple de clés privé/public propre à cette configuration. Dans cette configuration, nous devons déclarer le "peer", c'est-à-dire le serveur distant. Pour le moment, nous avons seulement ceci :

[Interface]
PrivateKey = <la clé privée du PC>

Nous devons compléter cette configuration, notamment pour déclarer l'adresse IP sur cette interface (Address), mais aussi pour déclarer le serveur WireGuard distant via un bloc [Peer]. L'image ci-dessous doit vous rappeler le fichier de configuration que l'on a créé du côté du serveur Linux.

Commençons par le bloc [Interface] en ajoutant l'adresse IP "192.168.110.2" ; je vous rappelle que le serveur dispose de l'adresse IP "192.168.110.121" sur ce segment réseau. Ce qui donne :

[Interface]
PrivateKey = <la clé privée du PC>
Address = 192.168.110.2/24

Ensuite, nous devons déclarer le bloc "Peer" avec trois propriétés, ce qui donne cette configuration :

[Peer]
PublicKey = 1D/Gf5yd3hUDoFyYQ3P1zayBHUJhJZq+k6Sv03HnJCQ=
AllowedIPs = 192.168.110.0/24, 192.168.100.0/24
Endpoint = <ip-serveur-debian>:51820

En image :

Configurer WireGuard sous Windows

Quelques explications au sujet du bloc [Peer] :

  • PublicKey : il s'agit de la clé publique du serveur WireGuard Debian 11 (vous pouvez obtenir sa valeur via la commande "sudo wg")
  • AllowedIPs : il s'agit des adresses IP / des sous-réseaux accessibles via ce réseau VPN WireGuard, ici il s'agit du sous-réseau propre à mon VPN WireGuard (192.168.110.0/24) et de mon LAN distant (192.168.100.0/24)
  • Endpoint : il s'agit de l'adresse IP de l'hôte Debian 11 puisque c'est notre point de liaison WireGuard (il faudra préciser l'adresse IP publique)

Pour finir, donnez un nom en renseignant le champ "Nom" (sans espaces) et copiez-collez la clé publique du client, car nous allons devoir la déclarer sur le serveur. Cliquez sur "Enregistrer".

C. Déclarer le client sur le serveur WireGuard

Il est temps de retourner sur le serveur Debian dans le but de déclarer le "Peer" c'est-à-dire notre PC Windows dans la configuration de WireGuard. Tout d'abord, il faut stopper l'interface "wg0" afin de pouvoir modifier sa configuration :

sudo wg-quick down wg0
# ou
sudo wg-quick down /etc/wireguard/wg0.conf

Ensuite, modifiez le fichier de configuration précédemment créé :

sudo nano /etc/wireguard/wg0.conf

Dans ce fichier, à la suite du bloc [Interface], il faut que l'on déclare un bloc [Peer] :

[Peer]
PublicKey = 0i2Pg8nwDW2j7yOG09ZXht18o8l8Erb9Y5F4xyAyQV8=
AllowedIPs = 192.168.110.2/32

Ce bloc [Peer] contient la clé publique du PC Windows 10 (PublicKey) ainsi que l'adresse IP de l'interface de ce PC (AllowedIPs) : le serveur communiquera dans ce tunnel WireGuard uniquement pour contacter le client Windows, d'où la valeur "192.168.110.2/32".

Il ne reste plus qu'à sauvegarder le fichier (CTRL+O puis Entrée puis CTRL+X via Nano). Relancez l'interface "wg0" :

sudo wg-quick up wg0
# ou
sudo wg-quick up /etc/wireguard/wg0.conf

Pour vérifier que la déclaration du "peer" fonctionne, vous pouvez utiliser cette commande :

sudo wg show

À partir du moment où l'hôte distant aura monté sa connexion WireGuard, son adresse IP va remonter au sein de la valeur "endpoint".

Pour finir, on va sécuriser les fichiers de configuration pour limiter l'accès à "root" :

sudo chmod 600 /etc/wireguard/ -R

D. Première connexion avec WireGuard

La configuration est prête, nous pouvons l'initier depuis le PC Windows. Pour cela, au sein du client "WireGuard", cliquez sur le bouton "Activer" : la connexion va passer de "Eteinte" à "Activée", mais cela ne veut pas dire que ça fonctionnera. Tout dépend si toute votre configuration est correcte ou non. Lorsque la connexion est établie, nos deux machines communiquent via l'interface WireGuard configurée de chaque côté !

Connexion WireGuard depuis Windows

En cas de problème, ce sera visible au sein de l'onglet "Journal". Les deux hôtes vont s'échanger des paquets régulièrement pour vérifier l'état de la connexion, d'où les messages "Receiving keepalive packet from peer 1".

Si l'onglet "Journal" de WireGuard affiche un message tel que celui ci-dessous, vous devez vérifier que les clés publiques déclarées des deux côtés sont correctes.

Handshake for peer 1 (<ip>:51820) did not complete after 5 seconds, retrying (try 2)

À partir de mon PC distant, je peux pinguer l'adresse IP de mon interface WireGuard côté serveur, ainsi qu'un hôte de mon LAN distant.

E. Performances : OpenVPN vs WireGuard

À partir de mon PC distant connecté à mon VPN WireGuard, j'ai pu accéder à un serveur de fichiers et transférer un fichier par SMB, pour voir le taux de transfert. Avec WireGuard, je plafonne à 45 Mo/s environ, ce qui est top, car je suis en WiFi.

Dans les mêmes conditions, mais via une connexion OpenVPN (en UDP) cette fois-ci, avec la même opération, le débit est totalement différent : 3 Mo/s environ. La différence est flagrante !

Au-delà de sa vitesse accrue dans les transferts, c'est également la connexion qui est beaucoup plus rapide ! Cela est intéressant, car par exemple si l'on bascule d'une connexion WiFi à une connexion 4G/5G, la reconnexion sera tellement rapide que l'interruption ne sera pas visible.

F. Bonus : full tunnel WireGuard

Avec la configuration actuelle, une partie des flux passent par le VPN, et le reste passe par la connexion Internet du client, et c'est notamment le cas de la navigation Internet. Si l'on veut passer en mode "full tunnel" WireGuard pour que tout passe par le tunnel VPN, il y a quelques modifications à apporter à notre configuration....

Tout d'abord, il faut installer le paquet "resolvconf" sur le serveur :

sudo apt-get update
sudo apt-get install resolvconf

Une fois que c'est fait, il faut modifier le profil "wg0.conf" sur la machine Debian : on stoppe l'interface, on modifie, et on relance.

sudo wg-quick down /etc/wireguard/wg0.conf

Ensuite, dans le bloc [Interface], on ajoute le serveur DNS à utiliser. Dans mon cas, c'est le contrôleur de domaine de mon lab, mais on pourrait aussi installer Bind9 sur la machine Debian pour avoir un résolveur local.

DNS = 192.168.100.11

On sauvegarde le fichier, puis on relance l'interface :

sudo wg-quick up /etc/wireguard/wg0.conf

Enfin, au niveau de la configuration du tunnel sur le poste Windows 10, il faut modifier la section "AllowedIPs" pour indiquer que tout doit passer dans le tunnel. Remplacez :

AllowedIPs = 192.168.110.0/24, 192.168.100.0/24

Par :

AllowedIPs = 0.0.0.0/0

On peut voir que cela active aussi l'option "Bloquer tous les trafic hors tunnel (interrupteur)" (kill switch).

Full tunnel WireGuard

Pour finir, je profite de ce full tunnel pour réaliser un petit test de débit dont voici les résultats :

La configuration de WireGuard est assez simple et facile à comprendre, et surtout à maintenir. WireGuard est considéré comme l'avenir des VPN, alors nous avons tout intérêt à le suivre de près ! Nous pouvons voir également que le bénéfice est important au niveau des performances, ce qui est un énorme avantage pour WireGuard en comparaison d'OpenVPN.

Documentations supplémentaires :

Voilà, votre VPN WireGuard est en place et il est opérationnel ! Félicitations !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

31 commentaires sur “Mise en place de WireGuard VPN sur Debian 11

  • Bonjour,

    Merci pour ce super article.
    Malheureusement, je me retrouve à avoir un petit souci avec les box SFR.

    En effet, je souhaite faire du full tunnel. Sur mon serveur VPN derrière un routeur orange je n’ai aucun problème. En revanche, sur un serveur derrière une box SFR la connexion ne se fait que si je rajoute 192.168.1.0/24 sur allowed IP QUAND je suis en wifi, en 4g aucun problème …

    Également, comment vérifier que l’on est bien en full tunnelling et donc que le tout le traffic passe bien par le VPN ?

    Merci d’avance.

    Guillaume

    Répondre
    • Hello Guillaume,

      Peut-être un conflit au niveau des sous-réseaux ? Le même sous-réseau de chaque côté du tunnel, non ?

      Pour voir si tu es en full tunnel, le test basique, c’est d’aller sur Internet sur un site comme « mon-ip.com » pour voir l’adresse IP publique : si c’est la même que celle du « serveur » WireGuard, c’est tout bon ! 🙂

      Bon week-end
      Florian

      Répondre
  • Bonjour,

    J’ai suivi le protocole donné pour l’interface sous debian, mais la commande « sudo wg show wg0 », donne en réponse : « Unable to access interface: No such device »

    Comment puis-je régler ce problème ?

    Merci d’avance.

    Répondre
  • Bonjour Floriant et merci pour ce tuto.
    Je parviens à faire fonctionner le tunnel, mais j’arrive pas à pinguer le lan coté serveur. Je précise que mon environnement se trouve sur un proxmox et derrière un firewall pfsense.

    Répondre
    • Bonjour,
      Tu devrais regarder du côté du pare-feu local et du forwarding car c’est probablement ici que ça bloque.

      Répondre
  •  »
    PublicKey : il s’agit de la clé privée du serveur WireGuard Debian 11 (vous pouvez obtenir sa valeur via la commande « sudo wg »)
     »

    Une clé privée dans PublicKey?

    Répondre
    • Erreur de saisie, car bien sûr la clé privée reste confidentielle et ne quitte pas son hôte. Donc, oui PublicKey = valeur de la clé publique. Merci d’avoir relevé la coquille!

      Répondre
  • bonjour,
    peut-on créer plusieurs vpn wireguard différents sur le même serveur. pour créer part exemple un vpn pour les amis et un autre pour le boulot pour ne pas tout partager.

    Répondre
  • Slt, merci pour le tuto. En install et configuration pour le moment…
    Petite info importante:
    Si vous ne l’avez pas déjà d’ installer, je pense, qu’il faut installer ufw en début de tuto. Car j’ai pas pu en suivant le tuto a la lettre. Je n’avais plus accès a internet avec Debian. Je ne sais pas si j’ai fais une bourde en cours mais ….
    Sinon, pour les novices comme moi, préférez le tuto vidéo qui est plus explicite.
    Cordialement stéphane

    Répondre
  • Bonjour, merci beaucoup pour ce tutoriel !
    Seulement, je bloque sur une partie qui est peut-être assez simple à comprendre mais pas assez explicite.
    Je ne comprends pas d’où sortent les IP provenant du « tunnel » : [« Address : l’adresse IP de l’interface WireGuard au sein du tunnel VPN (sous-réseau différent du LAN distant) »].

    Je ne sais pas où la cherche, ou si je dois la définir moi même ?

    Cordialement
    Etienne.

    Répondre
  • Bonjour, merci pour ce magnifique tuto 🙂

    Petit point à modifier je pense, pour la partie DNS il serait bien de préciser qu’il faut l’ajouter dans la conf du client et non dans la conf du serveur.

    Cordialement,
    Kélian

    Répondre
  • Bonjour et merci pour ce tuto, j’ai pu sécuriser les échanges avec mon serveur Squid 🙂

    Répondre
  • J’ai suivi l’intégralité de ce tuto mais malheureusement pour moi le tunneling en IPV4 refuse de fonctionner…

    Une idée de quoi faire ?

    Merci

    Répondre
  • Bjr Flo,
    Super merci.
    Mais je bloque 🤣
    Suis novice.
    Même si je capte mieux certaines choses grâce à ton tuto, je pense que je galère niveau des adresses ip à référencer.
    J’ai un serveur vps chez ionos sous Ubuntu. Et j’avais suivi un autre tuto pour que ce vps soit redirigé sur un domaine…puis instal de Wg via Pivpn mais j’ai abandonné ce type d’install mais voudrais garder l’utilisation du domaine.
    Et je me mélange dans la config du forward et des AllowedIPs.
    Peux t on s’écrire par mail stp ?
    Sinon tant pis et encore merci pour le taf 😉

    Répondre
  • Je voulais vous remercier pour vos excellent tuto. Je suis un débutant sur Linux (j’ai 60 ans). Ayant connu MS-DOS je ne suis pas trop perdu et je retrouve le plaisir de la simplicité de la ligne de commande.

    J’ai eu des difficultés pour mettre en place la config (sur un VPS hébergé chez OVH). Mais juste assez pour m’obliger à chercher les infos, me creuser la cervelle et finalement réussir à installer Wireguard seul dans un premier temps, puis compléter avec Firezone pour l’administrer plus facilement et ajouter des utilisateurs rapidement.

    Merci beaucoup.

    Répondre
  • Salut, Merci pour ce tuto que j’ai suivi scrupuleusement.
    la fin est moins explicite et manque d’info pour valider le full tunnel…

    ici :
    Ensuite, dans le bloc [Interface], on ajoute le serveur DNS à utiliser. Dans mon cas, c’est le contrôleur de domaine de mon lab, mais on pourrait aussi installer Bind9 sur la machine Debian pour avoir un résolveur local.
    DNS = 192.168.100.11
    On sauvegarde le fichier, puis on relance l’interface :

    quel fichier doit être ouvert pour changer le DNS… là tu me perds…

    merci pour ton retour !
    Cdlt
    DG

    Répondre
    • Pour entrer dans le fichier DNS , il faut faire nano /etc/resolv.conf

      Répondre
  • Bonjour,

    J’ai repris tout le tuto, avec l’IP du serveur wg en 192.168.110.12 et ajouté mon réseau en 192.168.0.0/24 dans le before.rules.

    # autoriser le forwarding pour le réseau distant de confiance (+ le réseau du VPN)
    -A ufw-before-forward -s 192.168.0.0/24 -j ACCEPT
    -A ufw-before-forward -d 192.168.10.0/24 -j ACCEPT
    -A ufw-before-forward -d 192.168.100.0/24 -j ACCEPT
    -A ufw-before-forward -d 192.168.110.0/24 -j ACCEPT

    La connexion entre mon poste et le serveur est immédiate (c’en est d’ailleurs impressionnant), mais je vois pas du tout le réseau en 192.168.0.0/24 derrière le serveur que ce soit en icmp ou en ssh sur un de mes serveurs.

    Coté serveur
    [Interface]
    Address = 192.168.110.121/24
    SaveConfig = true
    ListenPort = 51820
    PrivateKey = private_server_key

    [Peer]
    PublicKey = peer_key
    AllowedIPs = 192.168.110.2/32 => j’ai essayé de mettre 192.168.0.0/24 mais il se remet tel quel à chaque fois
    Endpoint = xxx.XXX.XXX.XXX:55744

    Côté poste, les ips que je souhaite joindre sont bien stipulées (en l’occurrence 192.168.0.0/24)

    Je ne vois pas ou est le souci . Aurais tu éventuellement une idée ?

    Répondre
  • bonjour ,
    j’ai essayé de suivre le tuto mais j’ai plusieurs problemes à présent
    rien ne semble fonctionner en réalité pourtant tout à l’air configuré et je n’ai pas d’erreur signalée à aucun moment, mais il y a pas mal de points de configurations à la périphéries qui me sont un peu flous , je suis un peu perdu

    le fait que le reseau distant ait le même schema d’ip que le reseau local
    (192.168.1.x) faut il absolument configurer un des 2 reseau avec un autre sous reseau ou si l’ip n’existe pas sur le reseau local ca peut fonctionne quand même ?

    sur ma box j’ai transféré tous les ports qui pourraient être concernés a priori (un peu au hasard , peut etre que je confond la méthode openvpn et la méthode wireguard en transferant https et ssh, ..443,22,51820) je suis un peu perdu

    et pour faire le test j’utilise mon téléphone en 4g et l’application wireguard, quand j’essaie de me connecter à l’ip locale du serveur, je vois que l’appli essaie bien de transmettre des données mais rien de plus ne se passe

    le plus problématique : mes partages samba ne sont plus accessible en local sur un l’ordinateur sur le reseau local

    je sais pas si je peux être aidé sur tout ca , a la rigueur s’il existe un forum sur le sujet je serais intéressé
    merci

    Répondre
  • Bonjour,

    Merci pour votre tuto qui fonctionne parfaitement pour des machine qui ce trouve a l’extérieur de de l’entreprise

    mais j’ai des client qui sont en journée au bureau et en soirée chez eu et la j’ai un problème

    quand le client est au bureau blocage complet du réseaux je doit désactive le wireguard

    je pense qu’il faut utiliser les commandes

    PostUp = ufw route allow in on wg0 out on ens192
    PostUp = iptables -t nat -I POSTROUTING -o ens192 -j MASQUERADE

    PreDown = ufw route delete allow in on wg0 out on ens192
    PreDown = iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE

    mais cela ne fonctionne pas

    avez-vous une solution

    Répondre
  • Bonjour
    j’apprends tout seul je galaire
    j’ai Debian 12
    j’ai juste un pc HP pro 6000 (moyenne tour )
    avec une adresse en0sxx
    Impossible d’installer WireGuard
    une adresse pour bien installer wireGuard
    merci
    chris
    j’oublie, j’avais ProtonVPN installé, après une réinstallation de Debian, je n’arrive plus à l’installer aussi.

    Répondre
  • Bonsoir.
    Merci beaucoup pour ton explication.
    J’ai relié 2 sites avec Wireguard installé sur 2 Pcs avec Windows 10.
    J’accède dans les deux sens aux répertoires partagés.
    Mais dans un autre PC du même site, je peux aussi me connecter à condition que le premier PC soit éteint.
    En fait le premier qui démarre, accède à l’autre site, le suivant, non.
    A partir d’un troisième site je peux accéder aux deux premiers sites sans problême.
    Une idée pour pouvoir ajouter plusieurs PCs et que tous puissent accéder à l’autre site ?
    Merci d’avance.

    Répondre
  • merci pour l’article ! super pratique.
    ça fonctionne comme une lettre à la poste 🙂

    Répondre
  • Bonjour, et merci pour ce tuto !
    J’avoue pas mal galérer bien que l’article soit une perle en explications.

    Si quelqu’un passe par là ?

    J’ai wireguard configuré sur un routeur Mikrotik distant que j’appelle Maison A.
    Je peux y accéder à partir d’une machine windows avec le client Wireguard.
    Je peux également joindre Maison A et Maison B à l’aide du client sur Android.

    J’ai voulu louer un vps chez Ionos, de manière à installer Docker, Nginx Proxy Manager et quelques services.
    NPM doit être dans le tunnel distant, de façon à pouvoir interroger les IP Locales Distantes ou certaines machines doivent être joignables. Je comprends la notion de sous domaine etc.. car jusqu’à présent j’avais 2 serveurs Dell PowerEdge en local mais ils sont en pannes. C’est pour cette raison que je me tourne vers un VPS tout du moins pour des configuration Nginx et Docker.

    Du coup je suis tombé sur votre article.
    Mon utilisation, comme Wireguard est en place et fonctionnel dans la Maison A et joignable à partir de la Maison B, j’essaye de mettre en place votre tutoriel.

    Pour commencer j’ai suivi scrupuleusement votre exemple, en installant Wireguard sur le VPS et en essayant de passer par le tunnel pour voir si tout était fonctionnel. Sauf que, cela ne fonctionne pas.

    Je suis bloqué au niveau de l’échange des clés comme dans votre citation :
    « En cas de problème, ce sera visible au sein de l’onglet « Journal ». Les deux hôtes vont s’échanger des paquets régulièrement pour vérifier l’état de la connexion, d’où les messages « Receiving keepalive packet from peer 1″. »

    Et pourtant les clés public sont identiques de part et d’autres.

    J’avoue que le VPS n’a pas d’adresse ip local visible avec ip a
    Je ne vois que mon ip public, et c’est tout mélangé dans ma tête lol.

    Si quelqu’un peut m’aider. Merci d’avance.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.