GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer WireGuard VPN sur Linux

Si vous utilisez plusieurs ordinateurs au travail ou à la maison, vous souhaiterez probablement disposer d'un moyen d'accéder à votre réseau interne à partir de chacun d'eux. La bonne nouvelle est que WireGuard VPN résout ce problème.

Dans ce didacticiel, vous apprendrez à configurer WireGuard VPN pour exécuter un VPN complet pour connecter vos ordinateurs, vous donnant un accès sécurisé.

Prêt à vous salir les mains ? Il est temps de plonger !

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :

  • Un système Linux :ce didacticiel utilise Ubuntu 20.04 LTS, mais toutes les distributions Debian fonctionneront pour les démos.
  • Un ordinateur local - Cette démo utilise un client Windows 10 64 bits pour se connecter au serveur VPN WireGuard. 💡 Si vous utilisez un serveur distant, assurez-vous d'avoir l'autorisation de vous connecter à ce serveur depuis votre ordinateur local.
  • Un utilisateur non root avec [sudo]() privilèges.

Installer WireGuard

Par défaut, WireGuard n'est pas installé sur votre distribution Ubuntu Linux. Vous allez donc d'abord installer WireGuard avec le gestionnaire de packages APT.

Vous pouvez également télécharger et compiler WireGuard à partir de la source, mais une configuration minimale convient à cette démo.

Exécutez la commande suivante à update la base de données de packages du système.

sudo apt update -y

Maintenant, exécutez la commande suivante pour installer le wireguard forfait. Le wireguard fournit un module de noyau minimaliste pour prendre en charge les réseaux et protocoles privés sécurisés.

Le protocole WireGuard implique des clés publiques, distribuées dans un schéma d'authentification similaire à SSH, qui est combinée avec des clés de chiffrement symétriques pour établir des connexions privées point à point ou site à site.

sudo apt install wireguard -y

Après l'installation, WireGuard s'exécute en tant que module du noyau. WireGuard s'exécute dans l'espace du noyau car WireGuard a besoin d'un accès direct à vos interfaces réseau pour établir une connexion VPN.

Générer une paire de clés

Maintenant que WireGuard est installé, il est temps de générer une paire de clés (une clé publique et une clé privée) en exécutant le wg genkey commande. La clé publique est votre « identité » WireGuard. Chaque personne souhaitant se connecter à votre VPN devra avoir accès à cette clé publique. En revanche, la clé privée est ce que vous utilisez pour établir une connexion sécurisée.

Gardez la clé privée secrète. Toute personne ayant accès à votre clé privée peut l'utiliser pour se connecter à votre VPN.

1. Exécutez le umask commande ci-dessous pour rendre votre paire de clés lisible. Le umask La commande spécifie le masque de création du mode fichier et détermine les autorisations accordées aux fichiers nouvellement créés.

Vous utiliserez un umasks valeur de 077 afin que tous les fichiers nouvellement créés soient lisibles par tout le monde mais accessibles en écriture uniquement par leur propriétaire. Cette étape garantit que vos clés WireGuard ne sont pas modifiables dans le monde entier.

umask 077

2. Ensuite, exécutez la commande ci-dessous pour générer (wg genkey ) une paire de clés.

La commande écrit la clé privée dans le /etc/wireguard/privatekey fichier et la clé publique (wg pubkey | sudo tee ) au /etc/wireguard/publickey dossier.

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

Après avoir exécuté la commande, vous obtiendrez une valeur sur votre terminal, qui est votre clé publique, comme indiqué ci-dessous. La sortie ci-dessous confirme que vous avez généré votre clé publique avec succès.

Copiez et enregistrez cette clé publique ailleurs car vos pairs utiliseront cette clé de publication pour se connecter à votre VPN WireGuard. Votre VPN WireGuard est comme un tunnel entre pairs.

3. Enfin, exécutez le cat ci-dessous pour vérifier que vous avez bien généré votre clé privée.

cat /etc/wireguard/privatekey

Notez votre clé privée, comme dans la sortie ci-dessous, telle que vous la définirez dans la configuration de votre serveur VPN WireGuard.

Configuration du serveur VPN WireGuard

Maintenant que vous avez généré une paire de clés pour une connexion sécurisée au serveur, l'étape suivante consiste à configurer le serveur VPN WireGuard.

1. Créez un nouveau fichier nommé wg0.conf avec votre éditeur de texte préféré, et remplissez le wg0.conf fichier avec le contenu suivant. Assurez-vous de remplacer le eth0 après POSTROUTING -o avec votre interface réseau .

Vous décidez de nommer les fichiers de configuration, mais pour que les noms soient plus faciles à retenir, choisissez des noms tels que wg0, wg1 (wg signifie WireGuard), ou tun0, tun1 (tun signifie tunneling), etc.

2. Remplissez le wg0.conf fichier avec le contenu suivant. Assurez-vous de remplacer le eth0 après le POSROUTING -o avec votre interface réseau, enregistrez les modifications et quittez l'éditeur.

Le wg0.conf contient tous les paramètres réseau et de sécurité de votre interface WireGuard. Sans cela, votre interface WireGuard et vos pairs ne peuvent pas établir de connexion sécurisée.

# Defines your WireGuard interface name
[Interface]
# Sets the server's Public IP Address. This network is routed to your server's 
# eth0 interface. This is an IP range of private IPv4 that you will use 
# for your peers to connect to the broader internet using your VPN server. 
# Your peer can use any private IPs from 10.8.0.1 to 10.8.0.255.
Address = 10.0.0.1/24
# Set the value to "true" to save your server's config file automatically 
# after a connection is established or when you shut down your VPN server.
SaveConfig = true
# Sets the port that your VPN server listens on. This port should be open on your router
# so that your peers can access this port to connect to your VPN
ListenPort = 51820
# Replace  with your private key generated earlier.
PrivateKey = 
# Sets WireGuard to automatically accept new connections, which allows your peers 
# to access your server with their own public IP address. Your VPN server forwards 
# your peers’ connection through your private network to make it seem 
# like they are coming directly from the peers.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Reverses the PostUp values when there's a disconnection 
# to make the network settings return to original state
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

3. Exécutez la commande ci-dessous pour activer le wg0 interface.

sudo wg-quick up wg0 

4. Enfin, exécutez la commande ci-dessous pour vérifier votre wg0 état des interfaces.

sudo wg show wg0 

Vous pouvez voir le wg0 l'interface est en cours d'exécution et écoute les connexions sur le port 51820.

Configuration de la mise en réseau du serveur et du pare-feu

À partir de la configuration de votre serveur WireGuard, vous devez également configurer votre réseau local et votre pare-feu. Cela vous donne plus de contrôle sur qui peut se connecter à votre serveur.

Vous allez rediriger le port UDP 51820 afin que vos pairs puissent se connecter à votre serveur VPN, mais vous ne pouvez pas garder ce port ouvert en permanence. Vous configurerez donc la fonction NAT de votre routeur pour transférer le trafic sur le port 51820 via votre serveur VPN.

1. Ouvrez le fichier etc/sysctl.conf fichier à l'aide de votre éditeur préféré.

2. Recherchez et décommentez le #net.ipv4.ip_forward=1 ligne en supprimant le "# ” pour activer le transfert IP IPv4 et enregistrer les modifications.

3. Ensuite, exécutez le sysctl suivant commande pour appliquer et rendre les modifications permanentes (-p ).

sudo sysctl -p

Votre serveur WireGuard va maintenant transférer le trafic entrant des clients de vos pairs WireGuard vers l'Internet plus large. Une fois transférés, WireGuard retransmet ensuite les données aux pairs via l'interface Ethernet VPN eth0.

Cependant, tout trafic provenant d'Internet au sens large et destiné à votre serveur WireGuard local sera abandonné par le pare-feu réseau Linux par défaut. Si vous utilisez UFW comme pare-feu, vous devrez ajouter quelques règles supplémentaires.

4. Exécutez la commande ci-dessous pour autoriser udp connexions sur le port 51820 lui-même.

sudo ufw allow 51820/udp

5. Maintenant, exécutez la commande ci-dessous pour vérifier l'état de votre pare-feu. sudo ufw status command

sudo ufw status command

Votre pare-feu UFW devrait maintenant ressembler à celui ci-dessous :

Configuration d'un client WireGuard

Votre serveur VPN WireGuard fonctionne parfaitement, vous allez donc configurer ensuite un client pour tester la connexion avec votre serveur VPN WireGuard. Votre client peut être Windows, MAC OS, Linux ou BSD, mais cette démo utilise un client Windows 10 64 bits.

Un client WireGuard est un appareil qui se connecte au serveur VPN avec sa propre clé publique (ID) unique. Le serveur WireGuard authentifie le client et chiffre tout le trafic entre lui et le client.

Notez que les étapes suivantes doivent être effectuées sur tous les appareils clients WireGuard.

1. Accédez à la page de téléchargement officielle de WireGuard pour télécharger le programme d'installation du client WireGuard pour votre système d'exploitation et exécutez-le. Cette démo utilise le client pour Windows.

2. Ouvrez l'application client WireGuard, cliquez sur Ajouter un tunnel (en bas à gauche) —> Ajouter un tunnel vide pour créer un tunnel vide. Vous obtiendrez une fenêtre contextuelle pour configurer la connexion réseau VPN (étape trois).

Configurez la connexion réseau VPN avec ce qui suit :

  • Entrez le nom de votre connexion réseau VPN, comme indiqué ci-dessous. Mais pour cette démo, le nom est défini sur ubuntu .
  • Laissez la PrivateKey générée par défaut , ajoutez une nouvelle ligne ci-dessous et saisissez Adresse =. Remplacez par l'adresse IP statique de votre client WireGuard.
  • Ajouter un nouveau [Peer] bloc, et en dessous, ajoutez une nouvelle PublicKey = ligne. Remplacez avec la clé publique de votre serveur VPN que vous avez enregistrée dans la section "Génération d'une paire de clés" (deuxième étape).
  • Ajouter un nouveau Endpoint =:51820 , où 51820 est le port sur lequel votre serveur WireGuard écoute. Remplacez avec l'IP publique de votre serveur VPN.
  • Ajouter une nouvelle IP autorisée – 0.0.0.0/0 ligne. Cette ligne permet au client WireGuard d'accéder à toutes les adresses IPv4 et IPv6 du réseau.
  • Cliquez sur Enregistrer pour enregistrer la configuration de la connexion au réseau VPN.

4. Enfin, revenez à votre terminal de serveur VPN et exécutez la commande ci-dessous pour ajouter la clé publique et l'adresse IP du client au serveur VPN.

Assurez-vous de remplacer les éléments suivants :

  • – avec votre clé publique client.
  • 10.0.0.2 – avec l'adresse IP de votre appareil client afin que votre serveur VPN puisse communiquer avec votre appareil client.sudo wg set wg0 peer allowed-ips 10.0.0.2

Tester si le tunnel VPN fonctionne

À présent, vous disposez déjà d'un serveur et d'un client WireGuard fonctionnels. Il est maintenant temps de tester la connexion entre eux et de voir si le tunnel VPN fonctionne.

1. Ouvrez votre application client WireGuard et cliquez sur ubuntu connexion (tunnel VPN) que vous avez créée.

2. Cliquez sur Activer bouton pour activer le tunnel VPN.

3. Après avoir activé le tunnel VPN, vous verrez le Statut passer à Actif , comme indiqué ci-dessous. C'est ça! Vous avez maintenant une connexion réussie à votre serveur VPN.

Conclusion

Tout au long de ce didacticiel, vous avez appris à configurer un serveur VPN WireGuard. Vous avez également configuré un client pour tester si la connexion entre le serveur VPN WireGuard et le client fonctionne en créant un tunnel VPN.

À ce stade, vous pouvez désormais configurer plusieurs serveurs et clients WireGuard pour un réseau privé chiffré sans contrôle d'autorité centralisé.

Comment comptez-vous tirer parti de ces nouvelles connaissances ? Essayez peut-être d'explorer Ansible via la configuration d'un VPN WireGuard ?


Linux
  1. Comment configurer Wireguard VPN sur CentOS 8

  2. Comment configurer WireGuard VPN sur Ubuntu 20.04

  3. Comment configurer WireGuard VPN sur Ubuntu (un guide étape par étape)

  4. Comment configurer WireGuard VPN sur CentOS 8

  5. Comment définir la variable $Path sous Linux

Comment configurer WireGuard VPN sur Debian 10

Comment configurer le serveur VPN Pritunl sur Rocky Linux 8

Comment définir ou modifier le nom d'hôte sous Linux

Comment configurer la clé publique et privée SSH sous Linux

Comment configurer des clés SSH sur Debian 11 Linux

Comment configurer WireGuard VPN sur Debian 11