Qu’est-ce que WireGuard ?
WireGuard est un protocole VPN (Virtual Private Network) moderne, simple et sécurisé. Il offre un chiffrement fort, une faible consommation de ressources et une configuration facile. WireGuard utilise un modèle de cryptographie de pointe pour établir des connexions sécurisées entre les appareils, offrant ainsi une confidentialité et une intégrité des données élevées. Sa conception minimaliste lui permet d'être rapide et efficace tout en étant facile à implémenter et à auditer. WireGuard est devenu populaire en raison de sa simplicité, de ses performances élevées et de sa sécurité solide, en offrant une alternative légère aux protocoles VPN traditionnels.
Installer et utiliser WireGuard
- Installez le package WireGuard approprié sur votre système d'exploitation.
- Générez une paire de clés publique/privée pour le serveur et chaque client.
- Configurez le fichier de configuration WireGuard avec les clés et les paramètres réseau.
- Démarrez le service WireGuard sur le serveur et chaque client.
- Ajoutez les règles de pare-feu nécessaires pour autoriser le trafic WireGuard.
- Partagez la clé publique du serveur avec les clients et vice versa.
- Établissez une connexion en démarrant WireGuard sur chaque client.
- Vérifiez la connectivité en effectuant des tests de ping ou en accédant aux ressources réseau.
- Pour ajouter de nouveaux clients, générez leurs clés et mettez à jour la configuration.
- Assurez-vous de configurer les règles de sécurité appropriées et de maintenir les mises à jour du logiciel WireGuard pour maintenir la sécurité du réseau VPN.
- Configuration du serveur Wireguard
- Installer les paquets wireguard :
apt-get install wireguard wireguard-tools net-tools linux-headers-`uname -r`
- Aller dans le fichier wireguard :
cd /etc/wireguard/
- Générer les clés publiques et privées du serveur :
umask 077; wg genkey | tee private.key | wg pubkey > public.key
- Afficher les clés : Commande cat
- Afficher l'ip : Commande ip a
- Créer le fichier de configuration du serveur :
nano /etc/wireguard/wg0.conf
Fichier configuration du côté serveur :
Explication du contenu du fichier configuration du serveur :
- Address : spécifiez l’adresse IP privée du serveur VPN.
- SaveConfig : la configuration doit être sauvegardée à l’arrêt en utilisant l’état actuel de l’interface.
- PrivateKey : la clé privée du serveur VPN, qui se trouve dans le fichier /etc/wireguard/private.key sur le serveur.
- ListenPort : le serveur VPN WireGuard écoutera sur le port UDP 51194. Sinon le port par défaut est 51820.
- PublicKey : la clé publique du client VPN, qui se trouve dans le fichier /etc/wireguard/public.key sur l’ordinateur client.
- AllowedIPs : adresses IP que le client VPN est autorisé à utiliser. Dans cet exemple, le client ne peut utiliser que l’adresse IP 10.10.10.2 à l’intérieur du tunnel VPN.
- PostUp et PostDown : permet de passer des commandes lors de la connexion et déconnexion d’un pair. Utile dans le cas d’un partage de connexion via le VPN.
- MTU (Unité de Transmission Maximale) : c’est une mesure représentant le plus gros paquet de données qu’un appareil connecté au réseau acceptera
(il faut trouver la valeur idéale pour optimiser Wireguard et obtenir les meilleurs débits entrants et sortants pour le VPN).
- Pour démarrer le serveur :
systemctl start wg-quick@wg0
(Si besoin de modifier le fichier configuration, stopper le serveur : “start” → “stop”)
(Si problème, afficher le status : “start” → “status”)
Affichage des informations du serveur : Commande wg
-
Configuration du client WireGuard
Configuration du client 1 (via l’ajout d’un plug-in GUI sur Ubuntu) :
- Installation des divers paquets :
sudo apt install wireguard git dh-autoreconf libglib2.0-dev intltool build-essential libgtk-3-dev libnma-dev libsecret-1-dev network-manager-dev resolvconf
- Récupération du dossier git qui va nous permettre d’avoir le GUI et installation :
git clone https://github.com/max-moser/network-manager-wireguard
cd network-manager-wireguard
./autogen.sh --without-libnm-glib
./configure --without-libnm-glib --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/NetworkManager --localstatedir=/var
make
sudo make install
Une fois cela effectué nous pouvons désormais aller dans les réglages réseau et pouvoir ajouter dans VPN notre fameux WireGuard.
Affichage des informations du client 1 :
Affichage ip du client 1 :
Configuration du client 2 (via l’appli WireGuard sur Windows) :
Affichage ip du client 2 :
Explication du contenu du fichier configuration du client :
- Address : spécifiez l’adresse IP privée du client VPN. Mettez bien le masque /32.
- DNS (optionnel) : spécifiez 192.168.10.1 (serveur VPN) comme serveur DNS.
- PrivateKey : clé privée du client, qui se trouve dans le fichier /etc/wireguard/privatekey sur l’ordinateur client.
- PublicKey : clé publique du serveur, qui se trouve dans le fichier /etc/wireguard/publickey sur le serveur.
- AllowedIPs : 0.0.0.0/0 représente l’ensemble de l’Internet, ce qui signifie que tout le trafic vers Internet doit être acheminé via le VPN. Sinon spécifier la classe d’IP du réseau VPN : ex 192.168.10.0/24.
- Endpoint (optionnel) : adresse IP publique et numéro de port du client.
- PersistentKeepalive : Envoyez un paquet vide authentifié au pair toutes les 25 secondes pour maintenir la connexion active. Si PersistentKeepalive n’est pas activé, le serveur VPN ne pourra peut-être pas envoyer une requête ping au client VPN.
En bonus les liens de 2 tuto et le lien de l’installation de WireGuard :
WireGuard : outils et fichiers de configuration - FLOZz' Blog