VPN Installation · 14 min read · Dec 21, 2025
Installer un VPN avec Tinc sur Ubuntu 16.04 LTS
Un Réseau Privé Virtuel (VPN) est un réseau privé sécurisé qui fonctionne sur un réseau public plus large tel qu’Internet. Les VPN sont devenus de plus en plus populaires ces dernières années, principalement parce qu’ils offrent une sécurité et une confidentialité accrues sans avoir besoin de mettre en place du matériel coûteux et complexe. Ils offrent également plusieurs autres avantages, notamment des coûts de réseau et de support réduits.
Les VPN fonctionnent en créant un tunnel crypté à travers un réseau public, et en utilisant cela pour envoyer des données de manière sécurisée entre des serveurs et des terminaux. Ces connexions peuvent être cryptées de différentes manières, et il existe de nombreux clients et démons VPN différents pour s’adapter à votre architecture, votre budget et votre niveau d’expérience.
Tinc est l’une de ces solutions (1). Un démon VPN open-source, il est maintenant disponible pour un large éventail de plateformes, et présente plusieurs avantages par rapport à des clients VPN similaires. Il offre un cryptage sécurisé et fiable, une compression optionnelle, et est facilement extensible à mesure que votre réseau se développe. Le routage en maillage complet automatique signifie que le trafic VPN est toujours (dans la mesure du possible) envoyé directement à la machine de destination, sans passer par des transferts intermédiaires, ce qui améliore considérablement la sécurité en limitant la possibilité de vol de données (3). De plus, comme le VPN Tinc apparaît au niveau du code réseau IP comme un périphérique réseau normal, après avoir configuré un VPN Tinc, il n’est pas nécessaire d’adapter les logiciels existants. Cela rend le VPN Tinc intrinsèquement évolutif.
Le seul petit problème avec Tinc est que certaines personnes ont trouvé qu’il était un peu délicat à configurer. Si cela vous ressemble, n’ayez crainte – aujourd’hui je vais vous guider à travers une méthode (plus ou moins) sans tracas pour faire fonctionner un VPN Tinc sur vos serveurs.
Prérequis
Pour suivre ce tutoriel complètement, vous aurez besoin d’au moins trois serveurs Ubuntu 16.04, et d’un accès root sur chaque machine. Si vous n’avez pas cela ou si vous n’êtes pas sûr de ce que cela signifie, ce tutoriel n’est pas pour vous – vous devriez d’abord consulter comment configurer un serveur utilisant Ubuntu (2).
Si vous construisez un système serveur à partir de zéro, vous devez d’abord réfléchir à la manière dont vos machines vont communiquer entre elles. Dans ce tutoriel, je vais utiliser les noms de variables que je pense que la plupart des gens choisiraient, mais sachez que vous pourriez avoir besoin d’adapter certains des noms de variables pour convenir à votre propre configuration.
Si vous souhaitez suivre ce tutoriel exactement, vous devrez d’abord configurer deux VPS dans le même datacenter, puis créer un troisième VPS dans un second datacenter. Mes datacenters s’appellent NYC2, qui a les deux VPS, et AMS2, qui a le troisième. Ces VPS sont appelés comme suit :
externalnyc – Tous nos nœuds VPN vont se connecter à ce serveur, ce qui signifie qu’il doit rester connecté et disponible pour garantir le bon fonctionnement du réseau. Si vous souhaitez éventuellement ajouter des serveurs supplémentaires à votre configuration, ils devront être configurés de la même manière qu’externalnyc.
internalnyc – Ce VPS se connecte au nœud VPN externalnyc en utilisant une interface réseau privée.
ams1 – C’est notre connexion VPN publique. Elle se connecte à externalnyc en utilisant Internet public.
Objectif
Ce que nous voulons réaliser est le suivant :

Notre réseau privé est représenté par la ligne verte, et connecte les trois serveurs. L’orange est notre réseau privé, reliant les deux serveurs NYC2. Les trois serveurs peuvent se connecter via le VPN, bien que le réseau privé ne soit pas accessible à AMS1.
Pour ce faire, suivez ces étapes :
Installer Tinc
Tout d’abord, nous devons installer Tinc. Comme toujours, assurez-vous que tous vos dépôts apt sont à jour en exécutant :
sudo apt-get updateEnsuite, installez Tinc de la manière standard via apt :
sudo apt-get install tincEt c’est tout ! Votre machine va maintenant télécharger Tinc, ainsi que tous les prérequis dont vous avez besoin. Nous devons maintenant jeter un œil à la configuration.
Configuration
Configurer Tinc peut être un peu différent des autres VPN auxquels vous êtes habitué. Il utilise un “netname” pour distinguer un VPN d’un autre. Cela devient très utile lorsque vous avez plusieurs VPN fonctionnant à travers Tinc, mais c’est un peu contre-intuitif au début. Puisque c’est notre premier réseau Tinc, gardons cela simple et appelons notre VPN “netname”.
Maintenant pour chacun de nos serveurs. Chacun aura besoin de trois composants de configuration :
Les fichiers de configuration : tinc.conf, tinc-up, tinc-down, et un nombre optionnel d’autres fichiers.
Paires de clés publiques et privées : celles-ci sont pour le cryptage et l’authentification.
Fichiers de configuration des hôtes : Ceux-ci contiennent des clés publiques et d’autres éléments de configuration VPN.
Configurons maintenant chacun de nos serveurs à tour de rôle. D’abord, externalnyc.
Configurer externalnyc
D’accord, maintenant aux choses sérieuses. Sur externalnyc, commencez par créer la structure de répertoire de configuration pour le VPN netname. Exécutez :
sudo mkdir -p /etc/tinc/netname/hostsMaintenant, ouvrez tinc.conf dans votre éditeur de texte choisi :
sudo vi /etc/tinc/netname/tinc.confUne fois que vous avez le fichier devant vous, ajoutez ce qui suit en bas du fichier :
Name = externalnyc
AddressFamily = ipv4
Interface = tun0Tout ce que vous faites ici est de configurer un nœud appelé externalnyc, et de dire au serveur que son interface réseau utilisera ipv4 et sera appelée “tun0”. Enregistrez le fichier et fermez-le.
Ensuite, nous devons créer un fichier de configuration d’hôte pour externalnyc. Pour ce faire, ouvrez le fichier de configuration des hôtes dans un éditeur de texte :
sudo vi /etc/tinc/netname/hosts/externalnycEncore une fois, ajoutez quelques lignes en bas de ce fichier, en substituant l’adresse IP publique de votre VPS dans la première ligne :
Address = externalnyc_public_IP
Subnet = 10.0.0.1/32C’est le fichier que d’autres serveurs utiliseront pour se connecter à externalnyc. L’adresse indique aux autres nœuds comment et où se connecter à ce serveur, et l’adresse de sous-réseau est le sous-réseau sur lequel ce démon fonctionnera. Encore une fois, enregistrez vos modifications dans ce fichier et fermez-le.
Maintenant, nous devons générer la paire de clés publique / privée pour cet hôte. C’est assez simple, il suffit d’exécuter :
sudo tincd -n netname -K4096Cela crée une clé RSA privée et ajoute une paire de clés publiques à la fin du fichier de configuration que nous venons de créer. Vous pouvez l’ouvrir à nouveau pour voir que cela a été fait, si vous le souhaitez.
Maintenant, nous devons créer tinc-up, un petit script qui s’exécutera lorsque notre VPN sera démarré. Ouvrez le fichier suivant pour l’édition :
sudo vi /etc/tinc/netname/tinc-upEt ajoutez :
#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0Chaque fois que le VPN netname est démarré, ce script s’exécutera. Il créera une interface réseau à utiliser par notre VPN, et sur ce VPN, externalnyc aura une IP de 10.0.0.1.
Mais lorsque le VPN est arrêté, nous voulons que cette interface réseau disparaisse, donc nous avons besoin d’un autre script. Cela doit être ajouté à tinc-down. Ouvrez :
sudo vi /etc/tinc/netname/tinc-downEt ajoutez ensuite :
#!/bin/sh
ifconfig $INTERFACE downEt encore une fois, enregistrez et quittez. Nous avons maintenant nos scripts, mais pour qu’ils fonctionnent, ils doivent être marqués comme exécutables. C’est assez simple, en utilisant la ligne de commande :
sudo chmod 755 /etc/tinc/netname/tinc-*Enregistrez et quittez, et vous avez terminé de configurer ce serveur. Ensuite, internalnyc et ams1.
Configurer internalnyc et ams1
Pour configurer les deux serveurs restants, vous devez exécuter les mêmes commandes sur chaque machine. Il y a quelques variations mineures, que je vais signaler, mais le processus est essentiellement le même.
Comme nous l’avons fait avec externalnyc ci-dessus, nous devons d’abord créer la structure de répertoire pour nos fichiers de configuration. Sur chaque serveur, exécutez ce qui suit, puis ouvrez le fichier de configuration Tinc pour l’édition :
sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.confAjoutez ensuite quelques lignes en bas de ce fichier, en substituant “node_name” par le nom de chaque nœud :
Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnycVous pouvez voir que nos deux serveurs sont maintenant configurés pour tenter de se connecter à externalnyc. Enregistrez ce fichier et fermez-le.
Maintenant, nous devons créer le fichier de configuration des hôtes. Exécutez :
sudo vi /etc/tinc/netname/hosts/node_nameEnsuite, pour internalnyc, ajoutez cette ligne :
Subnet = 10.0.0.2/32Et pour ams1, ajoutez cette ligne :
Subnet = 10.0.0.3/32La seule différence ici est que les adresses diffèrent, afin que nous puissions distinguer nos serveurs. Enregistrez ce fichier et fermez-le.
Maintenant, tout comme auparavant, nous devons générer nos paires de clés publiques / privées, et créer le script de démarrage de l’interface réseau. Sur chaque serveur, exécutez :
sudo tincd -n netname -K4096Et ensuite :
sudo vi /etc/tinc/netname/tinc-upMaintenant. Pour chaque serveur, nous devons utiliser les adresses que nous avons spécifiées plus tôt. Si vous me suivez précisément, pour internalnyc, vous devez ajouter :
ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0Et pour ams1 :
ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0Mais, si vous avez spécifié des adresses différentes ci-dessus, changez-les ici aussi. Enregistrez ces fichiers et quittez. Nous y sommes presque.
Nous devons juste créer le script d’arrêt de l’interface réseau, tout comme auparavant :
sudo vi /etc/tinc/netname/tinc-downEt ensuite ajoutez cette ligne sur les deux serveurs :
ifconfig $INTERFACE downEt la toute dernière partie de la configuration est de rendre nos nouveaux scripts exécutables :
sudo chmod 755 /etc/tinc/netname/tinc-*Enregistrez et quittez. Ouf. Si tout s’est bien passé, les trois serveurs sont maintenant configurés. Maintenant pour mettre en œuvre la cryptographie.
Distribution des clés
Si vous utilisez déjà un système de gestion de configuration, vous avez de la chance. Dans un monde idéal, chaque nœud que nous avons maintenant créé doit pouvoir communiquer directement avec un autre nœud en utilisant une interface de clé publique / privée. Les clés, comme nous l’avons vu ci-dessus, sont maintenant dans les fichiers de configuration des hôtes pour chaque serveur. Dans le réseau simple que nous créons ici, en réalité, seul externalnyc a besoin d’échanger des clés avec les autres nœuds.
Et donc, le moyen le plus simple de le faire est simplement de copier chaque clé publique à tous les membres des différents nœuds. C’est en fait assez facile, il suffit de faire attention à changer la valeur “address” dans le fichier de configuration d’externalnyc à son propre adresse IP privée lorsque vous la copiez. De cette façon, la connexion sera établie via le réseau privé.
Si vous m’avez suivi et avez appelé votre VPN “netname”, les fichiers de configuration des hôtes sont ici : /etc/tinc/netname/hosts
Échanger des clés entre externalnyc et internalnyc
C’est simple. Sur internalnyc, trouvez le fichier de configuration des hôtes et copiez-le vers externalnyc :
scp /etc/tinc/netname/hosts/internalnyc user@externalnyc_private_IP:/tmpEnsuite, sur externalnyc, copiez le même fichier à l’emplacement approprié :
cd /etc/tinc/netname/hosts; sudo cp /tmp/internalnyc .Maintenant, nous faisons la procédure inverse. Sur externalnyc, copiez le fichier de configuration des hôtes vers internalnyc :
scp /etc/tinc/netname/hosts/externalnyc user@internalnyc_private_IP:/tmpEt ensuite sur internalnyc, copiez le fichier pour qu’il soit au bon endroit :
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Maintenant, nous devons éditer le fichier de configuration des hôtes d’externalnyc sur internalnyc afin que l’adresse soit correcte. C’est pour que les nœuds se connectent au VPN via le réseau privé. Donc, sur internalnyc, ouvrez le fichier de configuration des hôtes pour externalnyc :
sudo vi /etc/tinc/netname/hosts/externalnycEt changez la valeur de l’adresse à l’adresse IP privée d’externalnyc, comme ceci :
Address = externalnyc_private_IPEnregistrez le fichier et quittez. C’est ces deux clés faites. Maintenant, nous devons juste échanger les clés avec notre dernier nœud restant.
Échanger des clés entre externalnyc et ams1
Le processus ici est assez similaire. En utilisant ams1, copiez le fichier de configuration des hôtes vers externalnyc :
scp /etc/tinc/netname/hosts/ams1 user@externalnyc_public_IP:/tmpEt ensuite, copiez-le à nouveau au bon endroit, en utilisant externalnyc :
cd /etc/tinc/netname/hosts; sudo cp /tmp/ams1 .Restez sur externalnyc, copiez le fichier dans l’autre sens, vers ams1 :
scp /etc/tinc/netname/hosts/externalnyc user@ams1_public_IP:/tmpEt encore une fois, sur ams1, copiez ce fichier pour qu’il soit au bon endroit :
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Et vous avez terminé avec l’échange de clés. En théorie, vous avez maintenant un VPN fonctionnel et crypté via Tinc. Si vous avez suivi ce tutoriel à la lettre, vous pouvez passer aux tests de votre configuration. Si, cependant, vous avez également profité de l’occasion pour ajouter des nœuds supplémentaires, c’est un bon moment pour échanger toutes les clés dont vous aurez besoin.
N’oubliez pas que si vous utilisez un nœud central, comme je le fais ici, vous n’avez pas besoin de copier toutes les clés vers tous les serveurs. Cependant, si vous voulez que les nœuds puissent communiquer directement entre eux, ils devront échanger des clés. Le processus pour le faire est le même que celui que j’ai décrit ci-dessus – il suffit de faire autant d’itérations que nécessaire pour atteindre la connectivité souhaitée.
Test
Vous devriez maintenant être prêt à tester. Pour ce faire, il est bon de démarrer Tinc en mode débogage, afin que nous puissions attraper d’éventuelles erreurs et obtenir plus d’informations si quelque chose ne va pas. N’oubliez pas qu’un VPN mal configuré peut en réalité être un risque de sécurité, alors assurez-vous que tout fonctionne correctement avant de commencer à utiliser votre VPN pour quoi que ce soit d’important.
Pour démarrer Tinc en mode débogage, sur chaque nœud, en commençant par externalnyc, exécutez :
sudo tincd -n netname -D -d3Si vous avez appelé votre VPN quelque chose de différent, bien sûr, changez la variable “netname” par le nom approprié.
Après que le démon démarre sur chaque nœud, il devrait retourner une sortie vous donnant le nom de chaque nœud au fur et à mesure qu’ils se connectent. Si cela ne se produit pas, vous avez fait une erreur quelque part.
Maintenant, nous pouvons tester le VPN. Dans une nouvelle fenêtre sur ams1, ping internalnyc en utilisant son adresse IP. Nous avons attribué cela à 10.0.0.2 plus tôt, donc tapez :
ping 10.0.0.2Espérons que votre ping fonctionnera. Vous devriez également voir quelques sorties de débogage dans les autres fenêtres, décrivant les connexions que vous venez de faire. Ams1 est maintenant connecté, via votre nouveau VPN, à externalnyc, et peut se connecter à internalnyc à travers lui. Appuyez sur CTRL-C et le ping s’arrêtera.
Maintenant que vous avez une connexion VPN sécurisée, vous pouvez l’utiliser pour tout autre type de communication réseau – connexions d’application, transfert de fichiers, SSH, ou tout ce que vous aimez.
Si votre ping n’a pas fonctionné, mais que vous pensez avoir tout fait correctement, il se peut qu’un pare-feu ait gêné. Vérifiez vos paramètres de pare-feu et réessayez.
Tinc au démarrage
Juste une dernière chose. Si vous allez maintenant utiliser votre VPN Tinc pour tout votre réseau, vous voudrez peut-être le configurer pour qu’il démarre au démarrage. Vous devrez le faire sur chaque nœud, en modifiant le fichier de configuration nets.boot. Ouvrez le fichier en utilisant :
sudo vi /etc/tinc/nets.bootEt ajoutez ensuite le nom de votre nouveau VPN à ce fichier. Si vous avez choisi “netname” comme moi, cela ressemblera à ceci :
# Ce fichier contient tous les noms des réseaux à démarrer au démarrage du système.
netnameEnregistrez et quittez, et vous avez terminé. Tinc fonctionne maintenant et démarrera au démarrage. Bien joué.
Si vous avez besoin de contrôler Tinc, vous pouvez maintenant exécuter la commande “service” pour le faire. Sur chaque nœud, exécutez simplement :
sudo service tinc startEt amusez-vous un peu. La plupart des contrôles de base peuvent être effectués via cette commande.
Conclusion
Vous devriez maintenant avoir une connexion VPN sécurisée fonctionnant via Tinc sur toutes vos machines. Ce VPN peut être utilisé comme base pour développer d’autres fonctionnalités réseau.
Si vous souhaitez ajouter d’autres nœuds à l’avenir, ou combiner Tinc avec d’autres VPN, Tinc vous le permettra. Le processus pour chaque nœud supplémentaire est le même que celui que j’ai décrit ci-dessus, et vous devriez pouvoir voir facilement quelles variables et adresses doivent être modifiées. N’oubliez pas que si vous voulez que les nœuds puissent se connecter directement entre eux, vous devrez échanger des clés directement entre eux. De cette manière, Tinc fonctionne comme un VPN maillé, qui est un peu plus sécurisé que mon approche. Sinon, vous pouvez simplement configurer votre réseau comme je l’ai fait, et faire passer tout par un nœud central.
Quoi qu’il en soit, vous êtes maintenant libre d’expérimenter. Bonne chance !
Ressources
(2) https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.