Comment configurer Wireguard VPN sur Linux

Une photographie d'un ordinateur portable avec un moniteur de bureau à côté.

Wireguard est un puissant démon de réseau privé virtuel (VPN) open source qui peut fonctionner à la fois sur des appareils de bureau et mobiles. Il fournit une alternative rapide et légère aux solutions VPN traditionnelles telles que IPsec et OpenVPN. Ici, nous vous montrons comment installer Wireguard et créer une configuration VPN simple en utilisant trois machines Linux.

Table des matières

  • Pourquoi utiliser Wireguard comme solution VPN ?
  • Obtention de Wireguard
  • Configuration du serveur Wireguard
  • Configuration et connexion du client Wireguard
  • Ajout d’un deuxième client au serveur
  • Test du réseau Wireguard

Pourquoi utiliser Wireguard comme solution VPN ?

L’un des principaux arguments de vente de Wireguard est qu’il s’agit d’un démon VPN rapide et léger. Contrairement aux solutions traditionnelles, Wireguard n’ajoute pas beaucoup de surcharge à votre réseau. Cela se traduit par une latence plus faible et un taux de débit global élevé à travers vos nœuds.

Un terminal affichant un test iperf3 entre deux nœuds Wireguard montrant un débit élevé.

Une autre caractéristique clé de Wireguard est qu’il s’agit d’un module à l’intérieur du noyau Linux. Cela lui permet de fonctionner sans utiliser de ressources système supplémentaires de votre ordinateur, ce qui en fait un choix idéal pour le déploiement sur des appareils bas de gamme et SOC.

Un terminal montrant Wireguard chargé sur le noyau Linux.

Enfin, Wireguard profite également des normes cryptographiques modernes et des pratiques de développement. Il a également subi plusieurs vérifications formelles, qui confirment la correction du code de Wireguard, les garanties de sécurité et sa capacité à résister aux attaques.

En passant : vous n’êtes toujours pas convaincu par Wireguard ? Découvrez comment Wireguard se compare à OpenVPN.

Obtention de Wireguard

La première étape pour configurer Wireguard sur Linux est de télécharger ses outils principaux depuis le dépôt de votre distribution. Cela vous permet de contrôler le module noyau Wireguard intégré à l’aide de commandes en espace utilisateur.

Pour installer les outils principaux sur Ubuntu et Debian, exécutez la commande suivante :

sudo apt install wireguard wireguard-tools

Sur Fedora, vous pouvez utiliser le gestionnaire de paquets dnf :

sudo dnf install wireguard-tools

Pour Arch Linux, vous pouvez exécuter pacman pour obtenir les outils principaux de Wireguard :

sudo pacman -S wireguard-tools

Confirmez que vous avez correctement installé les outils Wireguard en chargeant son écran d’aide :

wg -h

Un terminal montrant le menu d'aide pour l'outil Wireguard en espace utilisateur.

Configuration du serveur Wireguard

Hypothèse : Cet article suppose que vous installez le serveur Wireguard sur un système Linux avec une adresse IPv4 accessible publiquement. Les instructions fonctionneront toujours sur un serveur derrière un NAT, mais il ne trouvera pas de nœuds en dehors de son sous-réseau.

Avec l’ensemble d’outils principaux de Wireguard sur vos machines Linux, vous pouvez maintenant configurer le nœud serveur de votre VPN. Cela servira de passerelle Internet pour vos nœuds clients dans le réseau.

Commencez par naviguer vers votre répertoire de configuration Wireguard et définissez ses permissions par défaut sur “root uniquement :”

cd/etc/wireguard  
sudoumask 077

Remarque : certains systèmes peuvent vous empêcher d’entrer dans le dossier “/etc/wireguard” en tant qu’utilisateur ordinaire. Pour résoudre cela, passez à l’utilisateur root en utilisant sudo -s.

Générez la clé publique et privée pour votre serveur Wireguard :

sudosh-c'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'

Créez le fichier de configuration de votre serveur en utilisant votre éditeur de texte préféré :

sudonano/etc/wireguard/wg0.conf

Collez le bloc de code suivant dans votre fichier de configuration serveur :

[Interface]  
PrivateKey= COLLEZ-VOTRE-CLÉ-PRIVÉE-SERVEUR-Ici  
Address= 10.0.0.1/32  
ListenPort= 60101  
PostUp= iptables -t nat -I POSTROUTING -o INTERFACE-RÉSEAU-Ici -j MASQUERADE  
PostDown= iptables -t nat -D POSTROUTING -o INTERFACE-RÉSEAU-Ici -j MASQUERADE

Ouvrez une nouvelle session de terminal, puis imprimez la clé privée de votre serveur Wireguard :

sudocat/etc/wireguard/server-private-key

Copiez la clé privée de votre serveur dans votre presse-papiers.

Un terminal montrant le processus de copie de la clé privée du serveur sur Ubuntu.

Remplacez la valeur de la variable PrivateKey par la clé de votre presse-papiers.

Un terminal montrant la clé privée du serveur dans la configuration Wireguard du serveur.

Trouvez l’interface réseau qui a accès à Internet en utilisant la commande ip :

ip route get 8.8.8.8

Définissez la valeur du drapeau -o sur les variables PostUp et PostDown sur l’interface avec accès Internet, puis enregistrez votre fichier de configuration.

Un terminal montrant le nom de l'appareil approprié dans le fichier de configuration du serveur Wireguard.

Ouvrez le fichier “/etc/sysctl.conf” du serveur en utilisant votre éditeur de texte préféré :

sudonano/etc/sysctl.conf

Faites défiler jusqu’à la ligne contenant net.ipv4.ip_forward=1, puis retirez le signe dièse (#) devant.

Un terminal mettant en évidence l'emplacement de l'option de transfert IPv4 dans sysctl.conf.

Rechargez votre nouvelle configuration sysctl en exécutant : sudo sysctl -p.

FYI : Wireguard n’est pas la seule solution VPN que vous pouvez exécuter sur Linux. Découvrez comment créer votre propre VPN en utilisant OpenVPN.

Configuration et connexion du client Wireguard

À ce stade, vous avez maintenant un serveur Wireguard correctement configuré sans pairs. Pour l’utiliser, vous devez configurer et connecter votre premier client Wireguard.

Naviguez vers le répertoire de configuration Wireguard de votre système client et définissez ses permissions par défaut :

cd/etc/wireguard  
sudoumask 077

Générez la paire de clés Wireguard de votre client en utilisant la commande suivante :

sudosh-c'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'

Créez le fichier de configuration Wireguard du client en utilisant votre éditeur de texte préféré :

sudonano/etc/wireguard/wg0.conf

Collez le bloc de code suivant dans votre fichier de configuration client :

[Interface]  
PrivateKey= COLLEZ-VOTRE-CLÉ-PRIVÉE-CLIENT1-Ici  
Address= 10.0.0.2/32  
ListenPort= 60101  
  
[Peer]  
PublicKey= COLLEZ-VOTRE-CLÉ-PUBLIQUE-SERVEUR-Ici  
AllowedIPs= 0.0.0.0/0  
Endpoint= COLLEZ-VOTRE-ADRESSE-IP-SERVEUR-Ici:60101  
PersistentKeepalive= 25

Remplacez la variable PrivateKey par la clé privée de votre client.

Un terminal mettant en évidence la clé privée pour le premier client Wireguard.

Ouvrez la session de terminal de votre serveur Wireguard, puis imprimez sa clé publique :

sudocat/etc/wireguard/server-public-key

Définissez la valeur de la variable PublicKey sur la clé publique de votre serveur.

Un terminal mettant en évidence la clé publique du serveur dans le fichier de configuration du deuxième client.

Changez la variable Endpoint pour l’adresse IP de votre serveur Wireguard.

Un terminal mettant en évidence l'adresse IP pour le serveur Wireguard.

Enregistrez votre fichier de configuration, puis utilisez la commande wg-quick pour démarrer le client Wireguard :

sudo wg-quick up wg0

Un terminal montrant le processus de démarrage du démon client Wireguard.

Remarque : cette commande désactivera la connectivité réseau de votre client jusqu’à ce que vous démarriez votre serveur Wireguard. Pour revenir à votre réseau d’origine, exécutez sudo wg-quick down wg0.

Lien entre le serveur Wireguard et le client

Allez à la session de terminal de votre serveur Wireguard, puis ouvrez son fichier de configuration :

sudonano/etc/wireguard/wg0.conf

Collez le bloc de code suivant après la section [Interface] :

[Peer]  
PublicKey= COLLEZ-VOTRE-CLÉ-PUBLIQUE-CLIENT1-Ici  
AllowedIPs= 10.0.0.2/32  
PersistentKeepalive= 25

Définissez la variable PublicKey sur la clé publique de votre client Wireguard.

Un terminal montrant l'emplacement du bloc [Peer] et mettant en évidence la clé publique du client.

Remarque : vous pouvez obtenir la clé publique en exécutant sudo cat /etc/wireguard/client1-public-key sur votre machine cliente.

Enregistrez le fichier de configuration, puis exécutez la commande suivante pour démarrer le service Wireguard sur votre serveur :

sudo wg-quick up wg0

Ajout d’un deuxième client au serveur

Une caractéristique clé de chaque service VPN est qu’il peut relier plusieurs machines de différents réseaux. Cela est utile si vous avez des ordinateurs à différents emplacements ou si vous souhaitez héberger un serveur de jeu privé pour vos amis.

Pour ce faire dans Wireguard, vous devez créer un fichier de configuration pour une nouvelle interface VPN sur votre serveur. Le moyen le plus simple de le faire est de copier votre configuration de serveur actuelle et de donner à la copie un nouveau nom :

sudocp/etc/wireguard/wg0.conf /etc/wireguard/wg1.conf

Ouvrez votre nouveau fichier de configuration en utilisant votre éditeur de texte préféré :

sudonano/etc/wireguard/wg1.conf

Définissez la variable ListenPort sur 60102. Cela empêchera toute collision de ports entre les interfaces VPN wg0 et wg1.

Un terminal mettant en évidence la variable ListenPort modifiée pour la deuxième interface Wireguard.

Allez à la section [Peer] et changez la variable AllowedIPs de “10.0.0.2/32” à “10.0.0.3/32,” puis enregistrez votre fichier de configuration.

Un terminal mettant en évidence la variable AllowedIPs modifiée pour le deuxième client Wireguard.

Configuration du deuxième client Wireguard

Connectez-vous à votre deuxième machine, puis préparez votre répertoire de configuration Wireguard :

cd/etc/wireguard  
sudoumask 077

Générez une nouvelle paire de clés Wireguard en utilisant la commande suivante :

sudosh-c'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'

Créez un nouveau fichier de configuration en utilisant votre éditeur de texte préféré :

sudonano/etc/wireguard/wg0.conf

Collez le bloc de code suivant dans votre nouveau fichier de configuration :

[Interface]  
PrivateKey= COLLEZ-VOTRE-CLÉ-PRIVÉE-CLIENT2-Ici  
Address= 10.0.0.3/32  
ListenPort= 60102  
  
[Peer]  
PublicKey= COLLEZ-VOTRE-CLÉ-PUBLIQUE-SERVEUR-Ici  
AllowedIPs= 0.0.0.0/0  
Endpoint= COLLEZ-VOTRE-ADRESSE-IP-SERVEUR-Ici:60102  
PersistentKeepalive= 25

Définissez la variable PrivateKey sur la clé privée de votre deuxième machine, puis changez la variable PublicKey sur la clé publique de votre serveur.

Remplacez la variable Endpoint par l’adresse IP de votre serveur, suivie de “:60102.”

Enregistrez votre fichier de configuration, puis démarrez le client Wireguard de la deuxième machine :

sudo wg-quick up wg0

Lien entre le deuxième client et le serveur Wireguard

Reconnectez-vous à votre serveur Wireguard, puis ouvrez la configuration de l’interface VPN pour votre deuxième client :

sudonano/etc/wireguard/wg1.conf

Faites défiler jusqu’à la section [Peer], puis remplacez la variable PublicKey par la clé publique de votre deuxième client.

Un terminal mettant en évidence la clé publique du deuxième client à l'intérieur du fichier de configuration wg1 du serveur.

Enregistrez votre fichier de configuration, puis démarrez la deuxième interface VPN en utilisant la commande wg-quick :

sudo wg-quick up wg1

Confirmez que vos premier et deuxième clients Wireguard apparaissent correctement sur votre serveur en exécutant wg.

Un terminal montrant les deux nœuds clients communiquant avec le serveur Wireguard.

Test du réseau Wireguard

Avec votre serveur et vos clients sur le réseau Wireguard, vous pouvez maintenant tester la connectivité et la latence entre vos nœuds. Pour ce faire, assurez-vous d’avoir des outils de diagnostic réseau installés sur votre système :

sudo apt install net-tools curl

Sur Fedora, vous n’avez besoin d’installer que curl car il est déjà livré avec des outils de mise en réseau dès le départ :

sudo dnf install curl

Pour Arch Linux, vous pouvez utiliser pacman pour installer les outils réseau et curl :

sudo pacman -S traceroute curl

Commencez par suivre la route d’un paquet entre deux clients. Ce qui suit montrera comment un paquet IP va de “10.0.0.2” à “10.0.0.3 :”

traceroute 10.0.0.3

Vérifiez si l’un de vos nœuds peut accéder à Internet en pingant une adresse IP commune :

ping-c5 8.8.8.8

Un terminal montrant la latence du réseau Wireguard vers un site externe.

Enfin, confirmez que vos nœuds partagent la même adresse IP publique que votre serveur Wireguard :

curl ipinfo.io/ip

Un terminal mettant en évidence l'adresse IP externe similaire à travers trois nœuds Wireguard.

Apprendre à configurer un réseau Wireguard sur Linux est la première étape pour explorer le monde fascinant des VPN. Plongez profondément et consultez nos choix pour les meilleurs fournisseurs de VPN axés sur la sécurité que vous pouvez obtenir aujourd’hui.

Crédit image : Kari Shea via Unsplash et Wikimedia Commons. Toutes les modifications et captures d’écran par Ramces Red.