Installation d’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 tel qu’internet. Réseaux privés virtuels sont devenus de plus en plus populaires ces dernières années, en grande partie parce qu’ils offrent une sécurité accrue et l’intimité sans la nécessité de la mise en place de nouveau matériel coûteux et complex. Ils offrent également plusieurs autres avantages, y compris la réduction des coûts de mise en réseau et de soutien.

Les VPN fonctionnent en créant un tunnel crypté grâce à un réseau public, et l’utilisation de ce bien envoyer des données entre serveurs et terminaux. Ces connexions peuvent être chiffrées par une multitude de moyens, et il y a beaucoup de différents clients VPN et de démons en fonction de votre architecture, budget, et niveau d’expérience.

Tinc est une telle solution (1,2). Un démon VPN open source, Il est maintenant disponible pour un large éventail de plates-formes, et présente plusieurs avantages sur les clients VPN similaires. Il offre un cryptage sécurisé et fiable, compression optionnelle, et est facilement extensible que votre réseau grandit. Les moyens de routage automatique de maille pleine tougours le trafic VPN (si possible) envoyé directement à la machine de destination, sans subir les transferts intermédiaires, et cela améliore grandement la sécurité en limitant la possibilité de vol de données (3). De plus,, parce que le VPN Tinc semble le code de niveau de réseau IP comme un périphérique réseau normal, Après avoir configuré un VPN Tinc, il n’y a aucune nécessité d’adapter les logiciels existants. Cela rend le VPN Tinc intrinsèquement évolutives.

La question que de légères avec Tinc est que certaines personnes ont trouvé un peu difficile à mettre en place. Si qui vous ressemble, n’ayez crainte, aujourd'hui je vais vous prendre par le biais de façon (plus ou moins) tracas de lever un VPN Tinc et sur vos serveurs.

Conditions préalables

De suivre ce tutoriel entièrement, vous allez avoir besoin d’au moins trois Ubuntu 16.04 serveurs, et un accès root sur chaque machine. Si vous n’avez pas cela ou n’êtes pas sûr ce que cela signifie, ce tutoriel n’est pas pour vous-vous devriez d’abord vérifier comment configurer un serveur à l’aide d’Ubuntu (4).

Si vous créez un système de serveur à partir de zéro, vous devez tout d’abord penser à comment vos machines vont communiquer entre eux. Dans ce tutoriel, Je vais utiliser les noms de variables que je pense que la plupart des gens choisiraient, mais sachez que vous devrez peut-être adapter certains des noms de variables en fonction de votre propre configuration.

Si vous voulez suivre ce tutoriel exactement, vous allez première nécessité de mettre en place deux VPS dans le même centre de données, puis faire un troisième VPS dans un deuxième centre de données. Mes centres de données sont appelés NYC2, qui a les deux VPS, et AMS2, qui a le tiers. Ces VPS sont appelés ce qui suit :

externalnyc – tous nos nœuds VPN vont se connecter à ce serveur, ce qui signifie qu’il doit rester connecté et disponible pour que le réseau fonctionne correctement. Si vous souhaitez éventuellement ajouter des serveurs supplémentaires à votre ensemble vers le haut, ils devront être mis en place à l’instar de l’externalnyc.

internalnyc – ce VPS se connecte au nœud externalnyc VPN à l’aide d’une interface de réseau privé.

ams1 – il s’agit de notre connexion VPN publique. Il se connecte à externalnyc à l’aide de l’internet public.

Objectif

Ce que nous voulons atteindre est le suivant :

Notre réseau privé est représenté par la ligne verte, et relie les trois serveurs. L’orange est notre réseau privé, relier entre eux les deux serveurs NYC2. Les trois serveurs peuvent se connecter via le VPN, Bien que le réseau privé n’est pas accessible à AMS1.

Pour ce faire, procédez comme suit :

Installer Tinc

Premier à avoir, Nous devons installer Tinc. Comme toujours, Assurez-vous que tous vos dépôts apt sont à jour en exécutant :

sudo apt-get update

Ensuite, installez Tinc selon la méthode standard via apt :

sudo apt-get install tinc

Et c’est tout ! Votre machine va maintenant télécharger Tinc, de plus les conditions requises, vous avez besoin. Il faut maintenant jeter un oeil à la configuration.

Configuration

Configuration de Tinc peut être un peu différent des autres VPN vous êtes habitué à. Il utilise un nom de « réseau » pour distinguer un VPN d’un autre, Cela devient très utile quand vous avez plusieurs VPN traversant Tinc, mais est un peu paradoxal dans un premier temps. Puisqu’il s’agit de notre premier réseau Tinc, Nous allons garder les choses simples et appelez notre VPN « netname ».

Maintenant, pour chacun de nos serveurs. Chacun devra trois composants de configuration :

Les fichiers de configuration : tinc.conf, tinc-up, tinc-vers le bas, et un nombre facultatif d’autres fichiers.

Des paires de clés publiques et privées : ce sont pour le chiffrement et d’authentification.

Fichiers de configuration de l’hôte : ces documents contiennent des clés publiques, et d’autres éléments de configuration VPN.

Nous allons maintenant configurer chacun de nos serveurs à son tour. Premier à avoir, externalnyc.

Configurer externalnyc

Bien, maintenant pour les écrous et boulons. Sur externalnyc, Commencez par créer la structure de répertoires de configuration pour le nom de réseau VPN. Run :

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

Maintenant, ouvrez tinc.conf dans votre éditeur de texte choisie :

sudo vi /etc/tinc/netname/tinc.conf

Une fois que vous avez le fichier en face de vous, Ajouter ce qui suit à la fin du fichier :

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

Tout ce que vous faites ici est de configurer un nœud appelé externalnyc, et en disant le serveur qu’il est interface réseau utilisera ipv4 et être appelé « tun0 ». Enregistrez le fichier, et fermez-le.

Ensuite, Nous devons créer un fichier de configuration d’hôte d’externalnyc. Pour ce faire, Ouvrez le fichier de configuration des hôtes dans un éditeur de texte :

sudo vi /etc/tinc/netname/hosts/externalnyc

Encore une fois, Ajoutez quelques lignes vers le bas de ce fichier, son remplacement par l’adresse IP publique de votre VPS à la première ligne :

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

C’est le fichier que les autres serveurs utiliseront pour se connecter à externalnyc. L’adresse indique les 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 sera exploité à la. Encore une fois, Enregistrez vos modifications dans ce fichier et fermez-le.

Il faut maintenant générer le public / paire de clés privée pour cet hôte. C’est assez facile, Il suffit d’exécuter :

sudo tincd netname - n-K4096

Ce qui rend une clé RSA privée, et ajoute une paire de clés publique à 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 faire tinc-up, un petit script qui s’exécute au démarrage de nos VPN. Ouvrez le fichier suivant pour l’édition :

sudo vi /etc/tinc/netname/tinc-up

Et d’ajouter :

#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0

Chaque fois que le nom de réseau VPN est démarré, Ce script sera exécuté. Il fera une interface réseau à utiliser par nos VPN, et sur ce VPN externalnyc aura une adresse IP de 10.0.0.1.

Mais quand le VPN est arrêté, Nous voulons que cette interface de réseau à disparaître, Il faut donc un script plus. Ceci doit être ajoutée au tinc-vers le bas. Ouvert :

sudo vi /etc/tinc/netname/tinc-down

Et ajoutez :

#!/bin/sh
ifconfig $INTERFACE down

Et encore une fois sauvegarder et quitter. Nous avons maintenant nos scripts, mais dans l’ordre pour les faire fonctionner dont ils ont besoin d’être marquée comme exécutable. C’est assez facile, à l’aide de la ligne de commande :

sudo chmod 755 /etc/tinc/netname/tinc-*

Sauvegarder et quitter, et vous avez terminé la configuration de ce serveur. Ensuite, internalnyc et ams1.

Configurer internalnyc et ams1

Pour configurer les serveurs restants deux, vous devez exécuter les mêmes commandes sur chaque machine. Il y a quelques variations mineures, qui je vais souligner, mais le processus est essentiellement le même.

Comme nous l’avons fait avec externalnyc ci-dessus, Nous devons commencer par rendre la structure de répertoire pour nos fichiers de configuration. Sur chaque serveur, exécutez ce qui suit, et puis ouvrez le fichier de configuration de Tinc pour l’édition :

sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.conf

Puis ajouter quelques lignes vers le bas de ce fichier, son remplacement par « node_name » avec le nom de chaque nœud :

Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnyc

Vous pouvez voir que nos serveurs sont maintenant configurés pour tentez de vous connecter à externalnyc. Enregistrez ce fichier, et fermez-le.

Maintenant, nous devons faire les hôtes fichier de configuration. Run :

sudo vi /etc/tinc/netname/hosts/node_name

Puis pour internalnyc, Ajoutez cette ligne :

Sous-réseau = 10.0.0.2/32

Et pour ams1, Ajoutez cette ligne :

Sous-réseau = 10.0.0.3/32

La seule différence ici est que les adresses diffèrent, donc nous pouvons dire à nos serveurs apart. Enregistrez ce fichier, et fermez-le.

Maintenant, tout comme avant, Nous avons besoin générer notre public / paires de clés privées, et créer l’interface de réseau démarrage script. Sur chaque serveur, exécuter :

sudo tincd netname - n-K4096

Et puis :

sudo vi /etc/tinc/netname/tinc-up

Maintenant. Pour chaque serveur, Nous devons utiliser les adresses que nous avons spécifié plus haut. Si vous me suivez précisément, pour internalnyc, vous devrez ajouter :

ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0

Et pour ams1 :

ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0

Mais, Si vous avez spécifié ci-dessus des adresses différentes, Changez-les ici aussi bien. Enregistrez ces fichiers, et cesser de fumer. Nous sommes presque là.

Nous avons juste besoin de faire le script d’arrêt interface réseau, tout comme avant :

sudo vi /etc/tinc/netname/tinc-down

Et ajoutez cette ligne sur les deux serveurs :

commande ifconfig $INTERFACE down

Et le tout dernier bit de configuration est de rendre nos nouveaux scripts exécutables :

sudo chmod 755 /etc/tinc/netname/tinc-*

Sauvegarder et quitter. Ouf. Si tout va bien, les trois serveurs sont désormais configurés. Maintenant pour la mise en œuvre de la cryptographie.

Distribution de touches

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 pris doit être en mesure de parler directement avec un autre nœud à l’aide d’un public / interface de clé privée. Les clés, comme nous l’avons vu plus haut, sont maintenant dans les fichiers de configuration des hôtes pour chaque serveur. Dans le réseau simple, nous faisons ici, externalnyc fait seulement a besoin d’échanger des clés avec les autres nœuds.

Et oui, la meilleure façon de le faire est simplement de copier chaque clé publique à tous les membres des différents nœuds. C’est en fait assez facile, juste faire attention changer la valeur de « adresse » dans le fichier de configuration d’externalnyc à sa propre adresse IP privée quand vous le copier. Par là, la connexion sera établie sur le réseau privé.

Si vous m’a suivi et appelé votre VPN « netname », les fichiers de configuration des hôtes sont ici : /etc/tinc/netname/hosts

Internalnyc et clés d’échange entre externalnyc

C’est simple. Sur internalnyc, trouver les hôtes fichier de configuration et copiez-le dans externalnyc :

SCP /etc/tinc/netname/hosts/internalnyc [email protégée]_private_IP : / tmp

Puis, sur externalnyc, Copiez le même fichier à l’emplacement approprié :

CD /etc/tinc/netname/hosts ; sudo cp/tmp/internalnyc .

Maintenant, nous ne la procédure inverse. Sur externalnyc, Copiez le fichier de configuration des hôtes à internalnyc :

SCP /etc/tinc/netname/hosts/externalnyc [email protégée]_private_IP : / tmp

Et puis sur internalnyc copiez le fichier est au bon endroit :

CD /etc/tinc/netname/hosts ; sudo cp/tmp/externalnyc .

Il faut maintenant modifier le fichier de configuration de hosts d’externalnyc sur internalnyc donc l’adresse est correcte. C’est donc les nœuds seront connecte 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/externalnyc

Et modifiez l’adresse de l’adresse IP privée d’externalnyc, Comme ça :

Adresse = externalnyc_private_IP

Enregistrez le fichier, et cesser de fumer. C’est ces deux touches faits. Maintenant, il nous suffit d’échanger des clés avec nos nœuds restants.

Ams1 et touches d’échange entre externalnyc

Le processus ici est assez similaire. À l’aide d’ams1, Copiez le fichier de configuration des hôtes à externalnyc :

SCP /etc/tinc/netname/hosts/ams1 [email protégée]_public_IP : / tmp

Et puis copiez-le dans le bon endroit, à l’aide d’externalnyc :

CD /etc/tinc/netname/hosts ; sudo cp/tmp/ams1 .

Votre séjour sur externalnyc, Copiez le fichier ailleurs, dans l’ensemble à ams1 :

SCP /etc/tinc/netname/hosts/externalnyc [email protégée]_public_IP : / tmp

Et une fois de plus, sur ams1, Copiez ce fichier n’est au bon endroit :

CD /etc/tinc/netname/hosts ; sudo cp/tmp/externalnyc .

Et vous avez terminé avec échange de clés. En théorie, vous avez maintenant un travail, VPN crypté par le biais de Tinc. Si vous avez suivi ce tutorial à la lettre, vous pouvez passer à tester votre jeu vers le haut. If, Cependant, vous avez aussi profité de l’occasion pour ajouter des nœuds supplémentaires, maintenant est le bon moment pour échanger toutes les clés que vous aurez besoin.

N’oubliez pas que si vous utilisez un point nodal, comme je le fais ici, vous n’avez pas besoin de copier toutes les clés pour tous les serveurs. Cependant, Si vous voulez des nœuds pour pouvoir communiquer entre eux directement, ils devront échanger des clés. Le processus pour y parvenir, c’est le même que j’ai décrit ci-dessus – il suffit de faire autant d’itérations que vous avez besoin pour atteindre votre connectivité désirée.

Test

Vous devriez maintenant être prêt à tester. Pour ce faire, C’est une bonne idée de commencer Tinc en mode debug, donc nous pouvons intercepter les erreurs et obtenir de plus amples informations si quelque chose se passe mal. N’oubliez pas qu’un VPN mal configuré peut effectivement être un risque pour la sécurité, alors assurez-vous que tout fonctionne correctement avant d’utiliser votre VPN pour quelque chose d’important.

Pour démarrer Tinc en mode debug, sur chaque nœud, à partir d’externalnyc, exécuter :

tincd de le sudo NCA netname -D de - n-d3

Si vous avez appelé votre VPN quelque chose de différent, Bien sûr, changer la variable « nom » réseau pour le nom approprié.

Après que le démon démarre sur chaque nœud, elle doit retourner la sortie en vous donnant le nom de chaque nœud, tel qu’ils se connectent. Si cela n’arrive pas, vous avez fait une erreur quelque part.

Maintenant, Nous pouvons tester le VPN. Dans une nouvelle fenêtre dans ams1, internalnyc ping à l’aide de son adresse IP. Nous avons attribué cela à 10.0.0.2 plus tôt, donc tapez :

ping 10.0.0.2

Si tout va bien, votre ping fonctionne. Vous devriez aussi voir quelques sortie de débogage dans les autres fenêtres, décrivant les connexions vous venez de faire. Ams1 est maintenant connecté, Grâce à votre nouveau VPN, à externalnyc, et peut se connecter à internalnyc dedans. Appuyez sur CTRL-C et le ping seront arrête.

Maintenant vous avez une connexion VPN sécurisée, vous pouvez l’utiliser pour tout autre type de communication réseau – connexions d’application, copie de fichiers, SSH, ou autre chose que vous aimez.

Si votre ping n’a pas fonctionné, mais vous pensez que vous avez tout bien fait, il pourrait être qu’un pare-feu a obtenu de la manière. Vérifiez vos paramètres de pare-feu, et essayez à nouveau.

Tinc au démarrage

Juste une dernière chose. Si vous allez maintenant utiliser votre VPN Tinc pour tous vos réseaux, vous pouvez mettre à démarrage au démarrage. Vous aurez besoin pour ce faire sur chaque nœud, en éditant le fichier de configuration nets.boot. Ouvrez le fichier à l’aide :

sudo vi /etc/tinc/nets.boot

Puis ajoutez le nom de votre nouveau VPN à ce fichier. Si vous avez choisi « netname » comme moi, cela ressemblera ce qui suit:

# Ce fichier contient tous les noms des réseaux à démarrer au démarrage du système.
netname

Sauvegarder et quitter, et vous avez terminé. Tinc travaille actuellement, et commencera le démarrage. Bien fait vous.

Si vous avez besoin de contrôler Tinc, vous pouvez maintenant exécuter la commande « service » de le faire. Sur chaque nœud, Il suffit d’exécuter :

démarrage de sudo service tinc

Et avoir un jeu autour. Contrôle plus simple peut être obtenu par le biais de cette commande.

Conclusion

Vous devriez maintenant avoir une connexion VPN sécurisée, traversant Tinc sur toutes vos machines. Ce VPN peut être utilisé comme une base pour renforcer davantage les fonctionnalités de réseau.

Si vous souhaitez ajouter d’autres nœuds dans le futur, ou combiner Tinc avec d’autres réseaux privés virtuels, Tinc vous permettra de le faire. Le processus pour chaque nœud supplémentaire est le même que j’ai décrit ci-dessus, et vous devriez être capable de voir facilement les variables et les adresses doivent changer. N’oubliez pas que si vous voulez des nœuds pour pouvoir se connecter les uns aux autres directement, vous devrez échanger les clés entre eux directement. Comme ça, Tinc fonctionne comme un maillage VPN, qui est un peu plus sûr que mon approche (3). Dans le cas contraire, vous pouvez configurer simplement votre réseau comme je l’ai fait, et que tout en passant par un point nodal.

De toute façon, vous êtes maintenant libre de jouer. Bonne chance !

Ressources

(1) https://www.tinc-vpn.org/

(2) https://www.linux.com/news/creating-vpn-tinc

(3) https://thebestvpn.com/cryptography/

(4) https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04

Source