Comment créer un VPN maillé P2P léger avec Tinc

Un rendu graphique d'un cloud avec un cadenas en dessous.

Tinc est un adaptateur de Réseau Privé Virtuel (VPN) open-source qui offre un moyen simple de créer un réseau maillé privé pair-à-pair (P2P) sous Linux, Windows et macOS. Semblable à OpenVPN et Wireguard, il peut relier plusieurs ordinateurs à travers différentes topologies réseau en un seul LAN virtuel. Ici, nous vous montrons les avantages d’utiliser Tinc et comment installer et créer un réseau maillé simple basé sur Tinc.

Pourquoi utiliser Tinc plutôt que Wireguard et OpenVPN ?

Un point de vente unique de Tinc par rapport aux autres démons VPN est qu’il est conçu pour être un réseau maillé. Cela signifie que, contrairement à Wireguard, il peut facilement s’adapter aux changements de conditions réseau. Cela le rend plus résilient, notamment pour les ordinateurs avec une mauvaise connexion réseau.

Un terminal affichant la mesure de performance de Tinc sur Ubuntu.

En plus de cela, Tinc possède la plupart des fonctionnalités que l’on attend d’un VPN traditionnel tel qu’OpenVPN. Cela inclut la capacité à traverser des environnements NAT, à créer des tunnels cryptés et à relier des applications uniquement LAN.

Un terminal affichant la performance de ping de Tinc sur Debian.

Enfin, Tinc s’efforce également de rendre chaque connexion que vous établissez à l’intérieur du réseau P2P. Cela peut se faire soit par une découverte automatique des pairs, soit en coordonnant avec un serveur Tinc accessible publiquement. Par conséquent, les connexions à l’intérieur d’un VPN Tinc ne sont pas seulement résilientes mais aussi rapides et réactives.

Bon à savoir : encore indécis sur le VPN à choisir ? Consultez notre article où nous comparons Wireguard et OpenVPN.

Installation de Tinc sur Linux

La première étape pour installer Tinc est de s’assurer que votre système est à jour. Sous Ubuntu, exécutez la commande suivante :

sudo apt update && sudo apt upgrade -y

Téléchargez et installez Tinc directement depuis les dépôts de paquets d’Ubuntu :

sudo apt install tinc

Un terminal affichant le processus d'installation du paquet Tinc sur Ubuntu.

Pour installer Tinc sur d’autres distributions Linux, utilisez le gestionnaire de paquets approprié pour ce système. Par exemple, je dois exécuter sudo dnf install tinc pour récupérer le programme sur Fedora.

Un terminal affichant le processus d'installation sur Fedora Linux.

Confirmez que vous avez correctement installé Tinc en ouvrant une session terminal et en exécutant tincd --version.

Un terminal affichant la version actuelle de Tinc exécutée sur Ubuntu.

Création d’un réseau maillé de base avec Tinc

Avec Tinc sur votre machine, vous pouvez maintenant configurer votre premier réseau basé sur Tinc. Créez un nouveau dossier dans “/etc/tinc.” Cela contiendra tous les fichiers liés à votre nœud Tinc :

sudo mkdir -p /etc/tinc/mynetwork/hosts

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

sudo nano /etc/tinc/mynetwork/tinc.conf

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

Name = mynode  
Device = /dev/net/tun

Remarque : certaines distributions Linux peuvent changer l’emplacement de l’adaptateur tun dans “/dev.” Pour trouver son chemin exact pour votre système, exécutez :

find /dev -name '*tun*' -type c

Créez un fichier texte dans le dossier “hosts” avec le nom de votre nœud Tinc et collez ce qui suit :

Subnet = 192.168.11.1/32  
Address = VOTRE-ADRESSE-IP-DE-MACHINE-ICI  
Port = 655

Remplacez la valeur de la variable “Address” par l’adresse IP de votre machine. Vous pouvez trouver cela en exécutant ip addr.

Un terminal mettant en évidence l'adresse IP privée de la machine Ubuntu.

Remarque : vous devez fournir l’adresse IP publique de votre machine si vous souhaitez créer un VPN accessible publiquement.

Enregistrez le fichier des hôtes de votre machine, puis créez deux fichiers sous “/etc/tinc/mynetwork :”

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Ouvrez le fichier “tinc-up”, puis collez le code Bash suivant à l’intérieur. Cela crée l’interface réseau virtuelle pour Tinc et attribue l’adresse IP à cette interface :

#!/bin/sh  
  
ip link set $INTERFACE up  
ip addr add 192.168.11.1/32 dev $INTERFACE  
ip route add 192.168.11.0/24 dev $INTERFACE

Enregistrez le fichier, puis ouvrez le fichier “tinc-down” et collez également ce qui suit. Cela fait l’inverse de “tinc-up” : il désattribue l’adresse IP de votre interface Tinc et supprime cette interface de votre machine :

#!/bin/sh  
  
ip route del 192.168.11.0/24 dev $INTERFACE  
ip addr del 192.168.11.1/32 dev $INTERFACE  
ip link set $INTERFACE down

Un terminal affichant le contenu du script tinc-down sur Ubuntu.

Générez une clé pour votre nœud Tinc en exécutant tincd :

sudo tincd -n mynetwork --generate-keys=4096

Appuyez sur Entrée deux fois pour accepter l’emplacement de sauvegarde par défaut pour les clés privée et publique de votre nœud Tinc.

Un terminal affichant le processus de génération de clé pour Tinc sur Ubuntu.

Ajout du premier client Tinc

Pour ajouter un nouveau client Tinc, commencez par vous assurer que vous avez correctement installé Tinc sur votre deuxième machine.

Un terminal affichant la version de Tinc sur Debian.

Créez la structure de répertoire pour votre configuration Tinc en utilisant mkdir -p.

Utilisez votre éditeur de texte préféré pour créer le fichier de configuration pour votre client Tinc :

sudo nano /etc/tinc/mynetwork/tinc.conf

Collez les lignes de code suivantes dans le fichier de configuration de votre deuxième machine :

Name = myclient  
Device = /dev/net/tun  
ConnectTo = mynode

Créez un fichier avec le nom de votre machine Tinc sous “/etc/tinc/mynetwork/hosts.” Dans ce cas, j’ai nommé ma deuxième machine “myclient”, donc je vais créer un fichier avec le nom “myclient” :

sudo nano /etc/tinc/mynetwork/hosts/myclient

Collez le bloc de code suivant dans votre nouveau fichier des hôtes. Semblable à votre premier nœud, cela dicte la configuration réseau de votre démon Tinc :

Subnet = 192.168.11.2/32  
Port = 655

Enregistrez votre nouveau fichier des hôtes, puis créez un script “tinc-up” et “tinc-down” sur votre deuxième machine :

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Ouvrez le fichier tinc-up avec votre éditeur de texte préféré, puis collez le bloc de code suivant à l’intérieur :

#!/bin/sh  
ip link set $INTERFACE up  
ip addr add 192.168.11.2/32 dev $INTERFACE  
ip route add 192.168.11.0/24 dev $INTERFACE

Enregistrez votre fichier tinc-up, puis ouvrez tinc-down et collez également les lignes de code suivantes à l’intérieur :

#!/bin/sh  
  
ip route del 192.168.11.0/24 dev $INTERFACE  
ip addr del 192.168.11.2/32 dev $INTERFACE  
ip link set $INTERFACE down

Finalisez la configuration de votre client Tinc en générant sa clé :

sudo tincd -n mynetwork --generate-keys=4096

Un terminal affichant le processus de génération de clés sur la deuxième machine Tinc.

Exécution du réseau maillé Tinc

À ce stade, vous avez maintenant deux démons Tinc correctement configurés. Cependant, vous devez toujours lier ces deux démons Tinc pour créer votre VPN P2P sous Linux. Pour cela, vous devez copier le fichier de configuration des hôtes de votre nœud Tinc à votre client et vice versa.

Commencez par ouvrir la session terminal de votre nœud et naviguez vers son répertoire “/etc/tinc/mynetwork/hosts” :

cd /etc/tinc/mynetwork/hosts

Copiez le fichier de configuration dans ce répertoire et transférez-le à votre client. Dans mon cas, je vais utiliser scp pour envoyer ce fichier via ssh :

scp ./mynode VOTRE-ADRESSE-IP-CLIENT:~

Un terminal affichant le processus de transfert du fichier de configuration du client Tinc d'un système à un autre.

Remarque : Bien que j’aie utilisé scp dans cet exemple, vous pouvez également les transférer manuellement à l’aide de clés USB.

Allez sur votre machine cliente et copiez le fichier des hôtes que vous venez de transférer dans le dossier “/etc/tinc/mynetwork/hosts” du client :

sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/

Après cela, exécutez scp sur le côté de la machine cliente pour transférer son fichier des hôtes de retour à votre nœud :

scp /etc/tinc/mynetwork/hosts/myclient VOTRE-ADRESSE-IP-NŒUD:~

Copiez le fichier des hôtes de votre client dans le répertoire des hôtes de votre nœud :

sudo cp ~/myclient /etc/tinc/mynetwork/hosts/

En passant : inquiet pour votre vie privée sur Internet ? Découvrez comment vous pouvez améliorer la confidentialité et la sécurité de votre PC Linux.

Démarrer le réseau maillé Tinc

Démarrez votre réseau Tinc entièrement configuré en exécutant la commande suivante sur chacun de vos hôtes :

sudo tincd -n mynetwork

Confirmez que vous pouvez communiquer avec vos nœuds via l’interface Tinc en effectuant un simple ping :

ping -c 5 192.168.11.2

Un terminal affichant la latence du VPN Tinc ainsi que l'appareil réseau exécuté sur Ubuntu.

Enfin, activez le service Tinc pour vous assurer que votre VPN fonctionnera au démarrage du système :

sudo systemctl enable --now [email protected]

Apprendre à créer votre propre VPN maillé P2P sous Linux avec Tinc n’est que la première étape pour explorer ce merveilleux monde du réseau informatique. Plongez profondément dans les complexités de cette technologie en consultant notre aperçu complet sur les VPN.

Crédit d’image : Growtika via Unsplash. Toutes modifications et captures d’écran par Ramces Red.