L'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 plus large, comme l'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 plus grande sécurité et la confidentialité sans qu'il soit nécessaire de mettre en place un nouveau matériel coûteux et complexe. Ils offrent également plusieurs autres avantages, y compris les coûts de mise en réseau et de soutien réduits.

Réseaux privés virtuels travail en créant un tunnel chiffré par l'intermédiaire d'un réseau public, et d'utiliser cette option pour envoyer en toute sécurité des données entre les serveurs et les terminaux. Ces connexions peuvent être cryptées dans une variété de façons, et il y a beaucoup de différents clients VPN et daemons pour répondre à 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 une large gamme de plates-formes, et a plusieurs avantages par rapport aux clients VPN similaires. Il offre un cryptage sécurisé et fiable, compression optionnelle, et est facilement extensible que votre réseau se développe. Le routage automatique de maillage complet signifie que le trafic VPN est toujours (autant que possible) envoyé directement à la machine de destination, sans subir les transferts intermédiaires, et cela améliore grandement la sécurité en limitant les risques de vol de données (3). De plus,, parce que le VPN Tinc semble le code réseau de niveau IP en tant que dispositif de réseau normal, après la mise en place d'un VPN Tinc il n'y a pas besoin d'adapter des logiciels existants. Cela rend intrinsèquement le VPN Tinc évolutive.

Le seul problème mineur avec Tinc est que certaines personnes ont trouvé un peu difficile à mettre en place. Si cela vous ressemble, jamais peur - aujourd'hui, je vais vous prendre par un (plus ou moins) façon sans tracas d'obtenir un VPN Tinc et en cours d'exécution sur vos serveurs.

Conditions préalables

Pour 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 ne possédez pas ou ne sont pas sûr de ce que cela signifie, ce tutoriel est pas pour vous - vous devez d'abord vérifier comment configurer un serveur en utilisant Ubuntu (4).

Si vous construisez un système de serveur à partir de zéro, vous devez d'abord penser à la façon dont 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 pourriez avoir besoin d'adapter quelques-uns des noms de variables en fonction de votre configuration.

Si vous voulez suivre ce tutoriel exactement, vous allez d'abord besoin de mettre en place deux SMV 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, ce qui a pour deux VPS, et AMS2, qui a la troisième. Ces SMV sont appelés les éléments suivants:

externalnyc - Tous nos noeuds VPN vont se connecter à ce serveur, ce qui signifie qu'il doit rester connecté et disponible pour assurer les fonctions de réseau correctement. Si vous voulez éventuellement d'ajouter des serveurs supplémentaires à votre mise en place, ils devront être mis en place de la même manière que externalnyc.

internalnyc - Ce VPS se connecte au nœud VPN externalnyc à l'aide d'une interface de réseau privé.

AMS1 - Ceci est notre connexion VPN publique. Il se connecte à externalnyc en utilisant 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é, lier ensemble les deux serveurs de nyc2. Les trois serveurs peuvent se connecter via le VPN, bien que le réseau privé est pas accessible à AMS1.

Pour ce faire, procédez comme suit :

installer

Premier à avoir, nous devons installer Tinc. Comme toujours, assurez-vous que tous vos dépôts apt sont à jour en cours d'exécution:

sudo apt-get update

Ensuite, installez Tinc de façon standard par apt:

sudo apt-get install I

Et c'est tout! Votre machine maintenant télécharger Tinc, ainsi que toutes les conditions préalables dont vous avez besoin. Il faut maintenant jeter un oeil à la configuration.

Configuration

Configuration Tinc peut être un peu différent des autres réseaux privés virtuels que vous êtes habitué. Il utilise une « netname » pour distinguer un VPN d'un autre, Cela devient très utile lorsque vous avez plusieurs réseaux privés virtuels en cours d'exécution à travers Tinc, mais est un peu contre-intuitif au premier abord. Étant donné que c'est notre premier réseau Tinc, nous allons rester simple et appeler notre VPN « netname ».

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

Les fichiers de configuration: tinc.conf, my-up, I-bas, et un nombre optionnel d'autres fichiers.

paires de clés publiques et privées: ce sont pour le chiffrement et l'authentification.

Hôte des fichiers de configuration: Ceux-ci contiennent des clés publiques, et d'autres éléments de configuration VPN.

Configurons maintenant chacun de nos serveurs à son tour. Premier à avoir, externalnyc.

configurer externalnyc

Bien, maintenant aux écrous et boulons. sur externalnyc, commencez par créer la structure de répertoire de configuration du netname VPN. Run :

sudo mkdir -p / etc / I / netname / hôtes

tinc.conf maintenant ouvert dans votre éditeur de texte choisi:

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

Une fois que vous avez le fichier devant vous, ajouter ce qui suit au bas du fichier:

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

Tout ce que vous faites ici est de configurer un nœud appelé externalnyc, et dire au serveur que son interface réseau utilisera ipv4 et être appelé « tun0 ». Enregistrez le fichier, et fermez.

Ensuite, nous avons besoin de créer un fichier de configuration hôte pour externalnyc. Pour ce faire, ouvrez le fichier de configuration des hôtes dans un éditeur de texte:

vi sudo / etc / I / netname / hôtes / externalnyc

Encore une fois, ajouter quelques lignes au bas de ce fichier, en remplaçant l'adresse IP publique de votre VPS dans la première ligne:

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

Ceci est le fichier que les autres serveurs utiliseront pour se connecter à externalnyc. L'adresse indique aux autres noeuds où et comment se connecter à ce serveur, et l'adresse de sous-réseau est le sous-réseau que ce démon fonctionnera sur. Encore une fois, enregistrer vos modifications dans ce fichier et fermez.

Maintenant, nous devons générer le public / clé privée paire pour cet hôte. Ceci est assez facile, Il suffit d’exécuter :

sudo tincd -n netname -K4096

Cela fait une clé privée RSA, et ajoute une clé publique paire à 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 tu veux.

Maintenant, nous devons faire tinc-up, un petit script qui sera exécuté lorsque notre VPN est lancé. Ouvrez le fichier suivant pour l'édition:

vi sudo / etc / I / netname / my-up

Et ajouter:

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

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

Mais lorsque le VPN est arrêté, nous voulons que cette interface réseau à disparaître, donc nous avons besoin d'un script supplémentaire. Cela devrait être ajouté à tinc vers le bas. Ouvrir:

vi sudo / etc / I / netname / I-down

Et puis ajouter:

#!/bin/sh
ifconfig $INTERFACE down

Et encore enregistrer et quitter. Nous avons maintenant nos scripts, mais pour eux au travail, ils doivent être marqués comme exécutable. Ceci est assez facile, en utilisant la ligne de commande:

sudo chmod 755 /etc / I / 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 deux autres serveurs, 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 avons d'abord besoin de rendre la structure de répertoire pour nos fichiers de configuration. Sur chaque serveur, exécutez la commande suivante, puis ouvrez le fichier de configuration Tinc pour l'édition:

sudo mkdir -p / etc / I / netname / hôtes
vi /etc/tinc/netname/tinc.conf sudo

Puis ajouter quelques lignes au bas de ce fichier, par substitution de « node_name » avec le nom de chaque noeud:

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

Vous pouvez voir que nos deux serveurs sont maintenant configurés pour tenter de se connecter à externalnyc. Enregistrez ce fichier, et fermez.

Maintenant, nous devons rendre le fichier de configuration des hôtes. Run :

vi sudo / etc / I / netname / hôtes / node_name

Ensuite, pour internalnyc, ajoutez cette ligne:

= subnet 10.0.0.2/32

Et pour AMS1, ajoutez cette ligne:

= subnet 10.0.0.3/32

La seule différence ici est que les adresses diffèrent, afin que nous puissions dire à nos serveurs en dehors. Enregistrez ce fichier, et fermez.

Maintenant, tout comme avant, nous devons générer notre population / paires de clés privées, et créer l'interface réseau script de démarrage. Sur chaque serveur, exécuter :

sudo tincd -n netname -K4096

Et alors:

vi sudo / etc / I / netname / my-up

Maintenant. Pour chaque serveur, nous avons besoin d'utiliser les adresses que nous avons spécifiées plus tôt. Si vous me suivez précisément, pour vous internalnyc besoin d'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é différentes adresses ci-dessus, les changer ici aussi. Enregistrer ces fichiers, et quitter. Nous y sommes presque.

Nous avons juste besoin de faire l'interface réseau script d'arrêt, juste comme avant:

vi sudo / etc / I / netname / I-down

Et puis ajoutez cette ligne sur les deux serveurs:

ifconfig $ INTERFACE vers le bas

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

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

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

Touches distribution

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 fait doit être en mesure de parler directement avec un autre noeud à l'aide d'un public / interface 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 que nous faisons ici, en fait seulement besoin externalnyc d'échanger des clés avec les autres noeuds.

Et oui, la meilleure façon de le faire est simplement de copier chaque clé publique à tous les membres des différents noeuds. Ceci est en fait assez facile, juste être prudent de changer la valeur « adresse » dans le fichier de configuration de externalnyc à sa propre adresse IP privée lorsque vous copiez. Par là, la connexion sera établie sur le réseau privé.

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

Les clés d'échange entre externalnyc et internalnyc

C'est simple. sur internalnyc, trouver le fichier de configuration des hôtes et le copier externalnyc:

scp / etc / I / netname / hôtes / internalnyc [email protégée]_private_IP: / tmp

Puis, sur externalnyc, copier le même fichier à l'emplacement approprié:

cd / etc / I / netname / hôtes; sudo cp / tmp / internalnyc .

Maintenant, nous faisons face à la procédure. sur externalnyc, copiez le fichier de configuration des hôtes à internalnyc:

scp / etc / I / netname / hôtes / externalnyc [email protégée]_private_IP: / tmp

Et puis sur internalnyc copiez le fichier de sorte qu'il est au bon endroit:

cd / etc / I / netname / hôtes; sudo cp / tmp / externalnyc .

Maintenant, nous devons modifier le fichier de configuration des hôtes de externalnyc sur internalnyc si l'adresse est correcte. Il en est ainsi 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:

vi sudo / etc / I / netname / hôtes / externalnyc

Et changer la valeur d'adresse à l'adresse IP privée de externalnyc, Comme ça :

Adresse = externalnyc_private_IP

Enregistrez le fichier, et quitter. Ce sont ces deux touches fait. Maintenant, nous avons juste besoin d'échanger des clés avec notre un autre noeud.

Les clés d'échange entre externalnyc et AMS1

Le processus est assez similaire ici. L'utilisation AMS1, copiez le fichier de configuration des hôtes à externalnyc:

scp / etc / I / netname / hôtes / AMS1 [email protégée]_public_IP: / tmp

Et puis copier à nouveau au bon endroit, en utilisant externalnyc:

cd / etc / I / netname / hôtes; sudo cp / tmp / AMS1 .

Rester sur externalnyc, copiez le fichier dans l'autre sens, à travers à AMS1:

scp / etc / I / netname / hôtes / externalnyc [email protégée]_public_IP: / tmp

Et une fois de plus, sur AMS1, copier ce fichier de sorte qu'il est au bon endroit:

cd / etc / I / netname / hôtes; sudo cp / tmp / externalnyc .

Et vous avez terminé avec échange de clés. En théorie, vous avez maintenant un travail, VPN crypté Tinc. Si vous avez suivi ce tutoriel à la lettre, vous pouvez passer à tester votre configuration. If, Cependant, vous avez également eu l'occasion d'ajouter des nœuds supplémentaires, maintenant est un bon moment pour échanger toutes les clés dont vous aurez besoin.

Rappelez-vous que si vous utilisez un noeud central, comme je fais ici, vous n'avez pas besoin de copier toutes les clés à tous les serveurs. Cependant, si vous voulez noeuds pour pouvoir communiquer entre eux directement, ils devront échanger des clés. Le processus pour ce faire est le même comme je l'ai décrit plus haut - il suffit de faire autant d'itérations que vous avez besoin pour atteindre votre connectivité souhaitée.

Test

Vous devriez maintenant être prêt à tester. Pour ce faire, c'est une bonne idée de commencer Tinc en mode débogage, afin que nous puissions rattraper les erreurs et obtenir plus d'informations en cas de problème. Rappelez-vous qu'un VPN mal configuré peut effectivement être un risque pour la sécurité, alors assurez-vous que tout fonctionne correctement avant de commencer à utiliser votre VPN pour quelque chose d'important.

Pour commencer Tinc en mode débogage, sur chaque noeud, en commençant par externalnyc, exécuter :

sudo tincd -n netname -D -d3

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

Une fois le démon démarre sur chaque nœud, il doit renvoyer un résultat qui vous donne le nom de chaque noeud comme 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 sur AMS1, ping internalnyc en utilisant son adresse IP. Nous avons attribué cela 10.0.0.2 plus tôt, alors entrez:

ping 10.0.0.2

Si tout va bien, votre ping fonctionnera. Vous devriez également voir la sortie de débogage dans l'autre fenêtre, décrivant les connexions que vous venez de faire. AMS1 est maintenant connecté, grâce à votre nouveau VPN, à externalnyc, et peut se connecter à travers elle internalnyc. Appuyez sur CTRL-C et le ping arrêtera.

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 tout ce que vous aimez.

Si votre ping ne fonctionne pas, mais vous pensez que vous avez tout droit, il pourrait être qu'un pare-feu obtenu de la manière. Vérifiez vos paramètres de pare-feu, et essayez à nouveau.

Là où je Boot

Juste une dernière chose. Si vous allez maintenant utiliser votre VPN Tinc pour tous vos réseaux, vous pouvez le configurer au démarrage au démarrage. Vous devrez le faire sur chaque noeud, en éditant le fichier de configuration de nets.boot. Ouvrez le fichier en utilisant:

vi /etc/tinc/nets.boot sudo

Et 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 tu as fini. 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 » pour le faire. Sur chaque noeud, Il suffit d’exécuter :

Je commence sudo service

Et un jeu autour de. La plupart de base peut être atteint grâce à cette commande.

Conclusion

Vous devriez maintenant avoir une connexion VPN sécurisée en cours d'exécution à travers Tinc sur toutes vos machines. Ce VPN peut être utilisé comme base pour renforcer encore la fonctionnalité réseau.

Si vous souhaitez ajouter d'autres noeuds dans l'avenir, ou combiner avec d'autres réseaux privés virtuels Tinc, Tinc vous permettra de le faire. Le processus pour chaque nœud supplémentaire est le même comme je l'ai décrit ci-dessus, et vous devriez être en mesure de voir facilement quelles sont les variables et les adresses doivent changer. Rappelez-vous que si vous voulez noeuds pour pouvoir se connecter les uns aux autres directement, vous aurez besoin d'échanger des clés entre eux directement. Comme ça, Tinc fonctionne comme un maillage VPN, qui est un peu plus sûre que mon approche (3). Dans le cas contraire, vous pouvez simplement configurer votre réseau comme je l'ai fait, et ont tout ce qui passe par un nœud central.

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

Laisser une réponse