Mise en place d'un tunnel WireGuard

Prérequis :
  • Accès au routeur du réseau local

  • Machine Debian 12

  • Machine Windows

Objectif :

  • Mettre en place un tunnel VPN entre une machine de mon réseau local et une machine distante

Date de réalisation :

  • Septembre 2024

Compétence concernées :

  • Répondre aux incidents et aux demandes d’assistance et d’évolution

  • Mettre à disposition des utilisateurs un service informatique

  • Organiser son développement professionnel

Mises à jours

Effectuer les mises à jours de la machine sous Debian 12 qui va accueillir WireGuard. Cette machine sera la machine "serveur".

Installation WireGuard

Installation de WireGuard sur le serveur depuis le dépot officiel Debian.

Changement de répertoire

Nous changeons de répertoire afin de faire une installation de WireGuard propre. Que celle-ci ne soit pas à la racine de notre serveur.

Création de la clé privé de WireGuard

Création de la clé privé WireGuard du serveur qui sera ensuite utilisée avec le client WireGuard.

Création de la clé public de WireGuard

Création de la clé publique WireGuard du serveur qui sera ensuite indiqué au client WireGuard.

Récupérer les clés

Les clés se trouvent dans des fichiers nommés "private.key" et "public.key". Nous pouvons les récupérer à l'aide des commandes suivantes.

Client WireGuard

Maintenant que nous avons les clés de notre serveur, nous pouvons ouvrir notre client WireGuard et créer un nouveau tunnel.

Configuration client

Nous allons configurer le client de la manière suivante :

[Interface]

PrivateKey = Laisse celle par défaut.

ListenPort : Le port par défaut de WireGuard est le 51820.

Address : Adresse IP que nous souhaitons occupé lors de notre connexion VPN

[Peer]

PublicKey = Clé publique du serveur WireGuard

AllowedsIPs = Plages IP aux quelles nous souhaitons accéder à distance.

Endpoint = IPV4 publique de notre FAI suivit du port de WireGuard.

Création du fichier de configuration serveur

Nous créons le fichier de configuration de l'interface réseau dédier à WireGuard sur le serveur Debian.

Configuration serveur

Nous allons configurer le serveur de la manière suivante :

[Interface]

Address = Celle que nous décidons de donner à notre interface.

ListenPort : Le port par défaut de WireGuard est le 51820.

Address : Clé privé de notre serveur.

[Peer]

PublicKey = Clé publique du client WireGuard

AllowedsIPs = Adresse IP que notre client va occuper.

Endpoint = IPV4 publique de notre FAI suivit du port de WireGuard.

Démarrage de l'interface

Démarrage de l'interface wg0 qui est lié à notre client WireGuard.

Modification du fichier /etc/sysctl.conf

Nous modifions le fichier /etc/sysctl.conf.

Modification du fichier /etc/sysctl.conf

Nous décommentons la ligne suivante afin d'activer le transfert de paquets IPv4 entre les interfaces réseau sur notre système Linux.

Installationde iptables

Installation de iptables sur le serveur depuis le dépot officiel Debian.

Installation netfilter-persistent

Installation de netfilter-persistent sur le serveur depuis le dépot officiel Debian.

Réglage du firewall

Cette commande autorise les connexions entrantes sur le port UDP 51820, utilisé par WireGuard, afin que le serveur puisse accepter les requêtes VPN provenant du client distant.

Réglage du firewall

Cette commande autorise les réponses aux connexions déjà établies ou associées, assurant ainsi le bon fonctionnement des échanges réseau initiés par le serveur.

Réglage du firewall

Cette commande permet de laisser passer le trafic de transit qui fait partie d’une connexion déjà établie, garantissant ainsi la continuité des échanges entre les machines du réseau local et celles du réseau distant via le tunnel VPN.

Réglage du firewall

Cette commande autorise le transfert des paquets provenant du tunnel WireGuard vers l’interface réseau du serveur, permettant ainsi aux clients VPN d’accéder aux ressources extérieures comme Internet.

Réglage du firewall

Not just pleasant on the outside, our Pleasantview Gem Inn properties are especially popular among families. With underground parking and floor-to-ceiling windows, there's no shortage of natural light or space.

Réglage du firewall

Cette commande autorise l’envoi de paquets UDP sortants via l’interface WireGuard, assurant l’émission correcte des données vers le client VPN.

Réglage du firewall

Cette commande active la traduction d’adresses (NAT) pour permettre aux clients VPN d’accéder à Internet en utilisant l’adresse IP du serveur comme source.

Sauvegarde du firewall

Cette commande enregistre toutes les règles du firewall afin qu’elles soient automatiquement démarrées au prochain redémarrage du serveur.

Application du firewall

Cette commande recharge les règles du firewall précédemment sauvegardées afin de les appliquer immédiatement sans redémarrage du système.

Création de répertoire

Création du répertoire /iptables dans le répertoire /etc.

Sauvegarde de la configuration

Cette commande enregistre manuellement les règles actuelles d’iptables dans un fichier de configuration. Cela pourra être utile pour les restaurer.

Réglage du NAT

Nous configurons ici le NAT au niveau de l’interface de notre box internet afin de rediriger le trafic entrant sur le port UDP 51820 vers notre serveur WireGuard local. Cette étape est essentielle pour permettre au client distant d’établir une connexion VPN vers notre réseau.

Réglage du firewall

Nous réglons ici le firewall de la box en mode faible afin de permettre les connexions entrantes sur le port 51820. Ce réglage est nécessaire pour que la règle précédemment établie soit appliquée.