Eine VPN installieren mit Tinc auf Ubuntu 16.04 LTS

 

Ein Virtual Private Network (VPN) ist ein sicheres privates Netzwerk, das über ein größeres öffentliches Netzwerk wie das Internet funktioniert. VPNs sind in den letzten Jahren immer beliebter geworden., vor allem, weil sie bieten erhöhte Sicherheit und Privatsphäre ohne die Notwendigkeit für teure und aufwendige neue Hardware einrichten. Sie bieten auch einige andere Vorteile, einschließlich der reduzierten Netzwerke und Support-Kosten.

VPNs zu arbeiten, indem man einen verschlüsselten Tunnel über ein öffentliches Netzwerk, und Verwendung dieser Daten zwischen Server und Endgeräte sicher versenden. Diese Verbindungen können in verschiedener Weise verschlüsselt werden, und es gibt viele verschiedene VPN-Clients und Dämonen entsprechend Ihrer Architektur, Budget, und Erfahrungsstand.

Tinc ist eine solche Lösung (1,2). Ein Open-Source VPN daemon, Es ist jetzt verfügbar für eine Vielzahl von Plattformen, und hat mehrere Vorteile gegenüber ähnlichen VPN-clients. Freuen Sie sich auf sichere und zuverlässige Verschlüsselung, optionale Komprimierung, und ist leicht erweiterbar, wie Ihr Netzwerk wächst. Der automatische full-Mesh routing bedeutet, dass VPN-Datenverkehr immer (wenn möglich) direkt an den Zielcomputer gesendet, ohne fortgeschrittene transfers, und dies verbessert Sicherheit durch Begrenzung der Möglichkeit von Datendiebstahl (3). Außerdem, weil die Tinc VPN IP-Ebene Netzwerk-Code als normale Netzwerk-Gerät erscheint, nach dem Einrichten eines Tinc VPN gibt es keine Notwendigkeit der Anpassung bestehenden software. Dies macht die Tinc VPN inhärent skalierbar.

Das einzige kleinere Problem mit Tinc ist, dass einige Leute es ein wenig kompliziert einzurichten gefunden haben. Wenn das klingt wie Sie, keine Angst – heute nehme ich Sie durch eine (mehr oder weniger) stressfreien Lebensweise Tinc VPN aufstehen und laufen auf Ihren Servern.

Voraussetzungen

Dieses Tutorial vollständig folgen, Du wirst mindestens drei Ubuntu brauchen 16.04 Server, und Root-Zugriff auf jedem Rechner. Wenn Sie haben dies nicht oder nicht sicher sind, was dies bedeutet, Dieses Tutorial ist nicht für Sie – sollten Sie zuerst heraus, wie Sie einen Server mit Ubuntu (4) einrichten überprüfen.

Wenn Sie ein Server-System von Grund auf neu erstellen, als erstes müssen Sie überlegen, wie Ihre Maschinen sind, miteinander zu kommunizieren. In diesem tutorial, I 'm gonna die Variablennamen verwenden, die ich denke, die meisten Menschen wählen würde, aber beachten Sie, dass Sie möglicherweise einige der Variablennamen entsprechend Ihrem eigenen Setup anpassen müssen.

Möchten Sie dieses Tutorial genau befolgen, Du gehst zu müssen zuerst zwei VPS im selben Rechenzentrum einrichten, und stellen Sie dann eine dritte VPS in einem zweiten Rechenzentrum. Meine Rechenzentren werden NYC2 genannt., die hat zwei VPS, und AMS2, die dritte hat. Diese VPS sind im folgenden genannt:

Externalnyc – alle unsere VPN-Knoten werden mit diesem Server verbinden, Was bedeutet, dass es in Verbindung zur Verfügung, um sicherzustellen, dass die Netzwerk-Funktionen ordnungsgemäß bleiben und müssen. Möchten Sie schließlich Ihren Satz zusätzlicher Server hinzufügen, bis, Sie müssen in der gleichen Weise wie Externalnyc einrichten.

Internalnyc – diese VPS verbindet sich mit der Externalnyc VPN-Knoten mit einem privaten Netzwerk-interface.

ams1 – Dies ist unsere öffentliche VPN-Verbindung. Es verbindet sich mit Externalnyc über das öffentliche internet.

Ziel

Was wir erreichen wollen, ist die folgende:

Unser private Netzwerk wird durch die grüne Linie dargestellt., und verbindet alle drei Server. Die Orange ist unser privates Netzwerk, die beiden NYC2-Server miteinander zu verbinden. Alle drei Server können über das VPN verbinden., Obwohl im private Netzwerk nicht für AMS1 zugänglich ist.

Um dies zu tun, gehen Sie folgendermaßen vor:

Tinc installieren

An erster Stelle, Wir müssen Tinc installieren. Wie eh und je, sicherstellen Sie, dass Ihre apt Repositories mit up to date sind:

Sudo apt-Get update

Installieren Sie dann Tinc in üblicher Weise durch apt:

Sudo apt-Get Install tinc

Und das ist es! Ihre Maschine wird jetzt Tinc herunterladen., Plus alle Voraussetzungen benötigen Sie. Nun müssen wir einen Blick auf die Konfiguration.

Konfiguration

Tinc konfigurieren kann ein wenig von anderen VPNs unterscheiden, an die Sie gewöhnt sind. Es verwendet eine "Netname", ein VPN voneinander zu unterscheiden, Dies wird sehr nützlich, wenn Sie mehrere VPNs Tinc durchlaufen haben, aber ist am Anfang ein wenig unlogisch. Da dies unsere erste Tinc Netzwerk, Wir halten es einfach und rufen Sie unser VPN "Netname".

Jetzt für jeden einzelnen unserer Server. Jeweils benötigen drei Konfigurationskomponenten:

Die Konfigurations-Dateien: tinc.conf, Tinc-up, Tinc-down, und eine optionale Zahl anderer Dateien.

Öffentliche und private Schlüsselpaare: Diese sind für die Verschlüsselung und Authentifizierung.

Konfigurations-Dateien zu hosten: Diese enthalten öffentliche Schlüssel, und andere Elemente der VPN-Konfiguration.

Lassen Sie uns nun konfigurieren Sie jeden unserer Server wiederum. An erster Stelle, externalnyc.

Externalnyc konfigurieren

Okay, nun auf die Schrauben und Muttern. Auf externalnyc, beginnen Sie mit der Erstellung der Konfiguration-Verzeichnis-Struktur für die VPN-Netzdaten. Laufen:

Sudo Mkdir -p /etc/tinc/netname/hosts

Jetzt öffnen Sie tinc.conf in Ihrem gewählten Text-Editor:

Sudo vi /etc/tinc/netname/tinc.conf

Sobald Sie die Datei vor dir haben, das Ende der Datei Folgendes hinzufügen:

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

Alles, was du hier tust ist einen Knoten namens Externalnyc konfigurieren, und dem Server mitzuteilen, dass es Netzwerkschnittstelle ist ipv4 verwendet wird und "tun0" aufgerufen werden. Speichern Sie die Datei, und schließen Sie es.

Als nächstes, Wir müssen eine Host-Konfigurationsdatei für Externalnyc erstellen. Um dies zu tun, Öffnen Sie die Gastgeber-Konfigurations-Datei in einem Texteditor:

Sudo vi /etc/tinc/netname/hosts/externalnyc

Wieder, Fügen Sie einige Zeilen an das Ende der Datei, die öffentliche IP-Adresse von Ihrem VPS in der ersten Zeile ersetzen:

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

Dies ist die Datei, mit dem anderen Server zum Herstellen einer externalnyc. Die Adresse erfahren, wie Sie andere Knoten und wo Sie zu diesem Server verbinden, und die Subnetzadresse im Subnetz, für den dieser Daemon ausgeführt wird. Wieder, Speichern Sie die Änderungen an dieser Datei und schließen Sie es.

Jetzt müssen wir die Öffentlichkeit generieren / private Schlüsselpaar für diesen host. Dies ist leicht genug, führen Sie einfach:

Sudo Tincd - n Netzdaten-K4096

Dies macht einen privaten RSA-Schlüssel, und fügt am Ende der Konfigurationsdatei, die wir gerade erstellt eine öffentliche Schlüsselpaar. Sie können öffnen Sie es erneut, um festzustellen, dass dies geschehen ist, Wenn Sie möchten.

Jetzt, Wir brauchen um Tinc-up, ein kleines Skript, das ausgeführt wird, wenn unser VPN gestartet wird. Öffnen Sie die folgende Datei zur Bearbeitung:

Sudo vi /etc/tinc/netname/tinc-up

Und hinzufügen:

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

Wann wird die VPN-Netzdaten gestartet, Dieses Skript wird ausgeführt. Es wird eine Netzwerk-Schnittstelle von unseren VPN verwendet werden machen., und auf dieses VPN Externalnyc wird eine IP-Adresse des 10.0.0.1.

Aber wenn das VPN beendet wird, Wir wollen diese Netzwerkschnittstelle zu verschwinden, Wir brauchen also eine weitere Skript. Dies sollte zu Tinc-unten angehängt. Geöffnet:

Sudo vi /etc/tinc/netname/tinc-down

Und fügen Sie dann:

#!/bin/sh
ifconfig $INTERFACE down

Und wieder speichern und beenden. Wir haben jetzt unsere Skripte, aber in Ordnung für sie zu arbeiten sie als ausführbar gekennzeichnet werden müssen. Dies ist leicht genug, Mithilfe der Befehlszeile:

Sudo chmod 755 /etc./Tinc/Netzdaten/Tinc-*

Speichern und beenden, und du bist fertig Konfiguration dieses Servers. Als nächstes, Internalnyc und ams1.

Internalnyc und ams1 konfigurieren

Die zwei verbleibenden Server konfigurieren, Sie müssen die gleichen Befehle auf jedem Computer ausführen. Es gibt ein paar kleinere Variationen, was ich sagen werde, aber der Prozess ist im Grunde das gleiche.

Wie wir mit Externalnyc oben, als erstes müssen wir die Verzeichnisstruktur für unser Konfigurations-Dateien machen. Auf jedem server, führen Sie die folgenden, und öffnen Sie dann die Tinc Konfigurations-Datei für die Bearbeitung:

Sudo Mkdir -p /etc/tinc/netname/hosts
Sudo vi /etc/tinc/netname/tinc.conf

Fügen Sie ein paar Zeilen an das Ende der Datei, ersetzen "Node_name" mit dem Namen der einzelnen Knoten:

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

Sie können sehen, dass beide unserer Server jetzt so konfiguriert sind, dass Versuch zum Herstellen einer externalnyc. Speichern Sie diese Datei, und schließen Sie es.

Jetzt müssen wir die Gastgeber Konfigurationsdatei. Laufen:

Sudo vi /etc/tinc/netname/hosts/node_name

Dann für internalnyc, Fügen Sie diese Zeile:

Subnetz = 10.0.0.2/32

Und für ams1, Fügen Sie diese Zeile:

Subnetz = 10.0.0.3/32

Der einzige Unterschied ist, dass die Adressen unterscheiden sich, So können wir sagen, unsere Server auseinander. Speichern Sie diese Datei, und schließen Sie es.

Jetzt, genau wie vor, Wir müssen unser Publikum zu generieren / private Schlüsselpaare, und die Netzwerk-Schnittstelle Start-up-Skript erstellen. Auf jedem server, laufen:

Sudo Tincd - n Netzdaten-K4096

Und dann:

Sudo vi /etc/tinc/netname/tinc-up

Jetzt. Für jeden server, Wir müssen die Adressen nutzen, die wir früher angegeben. Wenn du mir genau folgst, bei Internalnyc müssen Sie hinzufügen:

Ifconfig $INTERFACE 10.0.0.2 Netzmaske 255.255.255.0

Und für ams1:

Ifconfig $INTERFACE 10.0.0.3 Netzmaske 255.255.255.0

Aber, Wenn Sie verschiedene Adressen oben angegeben, auch hier ändern. Diese Dateien speichern, und beenden. Wir sind fast da.

Wir müssen nur das Netzwerk Stop-Skript, genau wie vor:

Sudo vi /etc/tinc/netname/tinc-down

Und fügen Sie diese Zeile auf beiden Servern:

Ifconfig $INTERFACE nach unten

Und das letzte Bit Konfiguration soll unsere neue Skripte ausführbar machen:

Sudo chmod 755 /etc./Tinc/Netzdaten/Tinc-*

Speichern und beenden. Puh. Wenn alles geklappt hat, alle drei Server sind nun konfiguriert.. Jetzt für die Umsetzung der Kryptographie.

Verteilung von Schlüsseln

Wenn Sie bereits ein Config-Management-System verwenden, sind Sie im Glück. In einer idealen Welt, Jeder Knoten, die wir jetzt gemacht haben muss, direkt mit einem anderen Knoten mit einem Publikum sprechen können / private Schlüssel Schnittstelle. Die Tasten, wie wir oben gesehen haben, sind jetzt in der Gastgeber-Konfigurations-Dateien für jeden server. In der einfachen Netzwerk machen wir hier, eigentlich nur Externalnyc muss mit den anderen Knoten Schlüsselaustausch.

Und so, der einfachste Weg, dies zu tun ist einfach zu jeder öffentlichen Schlüssel an alle Mitglieder der verschiedenen Knoten kopieren. Dies ist eigentlich recht einfach, nur vorsichtig sein, ändern Sie die "Adresse" Wert in der Externalnyc-Konfigurationsdatei auf eigene private IP-Adresse beim Kopieren. Auf diese Weise, die Verbindung wird über das private Netzwerk.

Wenn Sie mir folgte und rief Ihr VPN "Netname", die Gastgeber-Konfigurationsdateien sind hier: /etc/tinc/netname/hosts

Exchange-Tasten zwischen Externalnyc und internalnyc

Dies ist einfach. Auf internalnyc, finden Sie die Gastgeber Konfigurations-Datei und kopieren Sie ihn in Externalnyc:

SCP /etc/tinc/netname/hosts/internalnyc [e-Mail geschützt]_private_IP: / Tmp

Dann, auf externalnyc, Kopieren Sie die gleiche Datei an die richtige Stelle:

CD /etc/tinc/netname/hosts; Sudo cp/Tmp/internalnyc .

Jetzt machen wir das entgegengesetzte Verfahren. Auf externalnyc, Kopieren Sie die Hostdatei Konfiguration in Internalnyc:

SCP /etc/tinc/netname/hosts/externalnyc [e-Mail geschützt]_private_IP: / Tmp

Und dann auf Internalnyc die Datei kopieren, so ist es an der richtigen Stelle:

CD /etc/tinc/netname/hosts; Sudo cp/Tmp/externalnyc .

Wir müssen nun Externalnyc der Gastgeber-Konfigurationsdatei auf dem Internalnyc zu bearbeiten, so dass die Adresse korrekt ist. Dies ist also der Knoten mit dem VPN über das private Netzwerk verbinden wird. Also, auf internalnyc, Öffnen Sie die Hosts-Konfiguration-Datei für Externalnyc:

Sudo vi /etc/tinc/netname/hosts/externalnyc

Und ändern Sie den Adresswert Externalnyc die private IP-Adresse, So:

Adresse = Externalnyc_private_IP

Speichern Sie die Datei, und beenden. Das ist diese beiden Schlüssel getan. Jetzt brauchen wir nur mit unseren restlichen Knoten Schlüsselaustausch.

Exchange-Tasten zwischen Externalnyc und ams1

Der Prozess hier ist ziemlich ähnlich. Verwendung von ams1, Kopieren Sie die Hostdatei Konfiguration in Externalnyc:

SCP /etc/tinc/netname/hosts/ams1 [e-Mail geschützt]_public_IP: / Tmp

Und kopieren Sie sie dann wieder an der richtigen Stelle, Verwendung von Externalnyc:

CD /etc/tinc/netname/hosts; Sudo cp/Tmp/ams1 .

Der Aufenthalt auf externalnyc, Kopieren Sie die Datei anders, über zu ams1:

SCP /etc/tinc/netname/hosts/externalnyc [e-Mail geschützt]_public_IP: / Tmp

Und einmal mehr, auf ams1, Kopieren Sie diese Datei, so ist es an der richtigen Stelle:

CD /etc/tinc/netname/hosts; Sudo cp/Tmp/externalnyc .

Und du bist fertig mit Schlüsselaustausch. In der Theorie, Du hast jetzt eine funktionierende, verschlüsselte VPN über Tinc. Wenn Sie dieses Tutorial befolgt habe, Sie können mit Ihren Testsatz fortfahren. If, jedoch, Sie haben auch die Möglichkeit, zusätzliche Knoten hinzufügen übernommen., Jetzt ist ein guter Zeitpunkt, um alle Schlüssel austauschen, die Sie benötigen.

Denke daran: Wenn Sie einen zentralen Knoten verwenden, Wie mache ich hier, Sie müssen nicht alle Schlüssel auf allen Servern zu kopieren. Jedoch, möchten Sie Knoten direkt miteinander kommunizieren können, Sie müssen Schlüsselaustausch. Der Prozess dafür ist das gleiche wie ich oben beschrieben habe – tun Sie einfach so viele Wiederholungen wie Sie benötigen, um Ihre gewünschte Konnektivität zu erreichen.

Testen

Sie sollten jetzt testen können. Um dies zu tun, Es ist eine gute Idee, Tinc im Debug-Modus starten, Also wir fangen alle Fehler und einige weitere Informationen erhalten, wenn etwas schief geht. Denken Sie daran, dass eine schlecht konfigurierte VPN kann tatsächlich ein Sicherheitsrisiko, So stellen Sie sicher, dass alles ordnungsgemäß funktioniert, bevor Sie mit Ihrem VPN für etwas wichtiges.

Tinc im Debug-Modus starten, auf jedem Knoten, beginnend mit externalnyc, laufen:

Sudo Tincd - n Netzdaten -D-d3

Wenn Sie Ihr VPN etwas anderes angerufen haben, Natürlich, ändern Sie die Variable "Netname" auf den entsprechenden Namen.

Nachdem der Daemon auf jedem Knoten gestartet, Sie sollte zurückgeben, Ausgabe gibt Ihnen den Namen der einzelnen Knoten, wenn sie eine Verbindung herstellen. Wenn dies nicht, Du hast irgendwo einen Fehler gemacht..

Jetzt, Wir können das VPN testen.. In einem neuen Fenster auf ams1, Ping-Internalnyc unter Verwendung der IP-Adresse. Wir vergeben dazu 10.0.0.2 früher, So geben Sie ein:

Ping 10.0.0.2

Hoffentlich, Ihre Ping funktioniert. Sie sollten auch einige Debugausgaben in den anderen Fenstern sehen., beschreibt die Verbindungen haben Sie gerade gemacht. Ams1 ist jetzt verbunden., durch Ihre neue VPN, zu externalnyc, und kann eine Verbindung zu Internalnyc durch Sie. Hit Strg-C und der Ping-Befehl stoppt.

Nun hast du eine sichere VPN-Verbindung, Sie können für jede andere Art von Netzwerk-Kommunikation-Anwendungsverbindungen, Kopieren von Dateien, SSH, oder alles, was Sie mögen.

Wenn der Ping nicht funktioniert hat, aber Sie denken, dass Sie alles richtig gemacht, Es könnte sein, dass eine Firewall dazwischen bekam. Überprüfen Sie Ihre Firewalleinstellungen, und versuchen Sie es erneut.

Tinc beim Booten

Nur eine letzte Sache. Wenn du jetzt gehst, Tinc VPN für alle Ihre Netzwerk konfiguriert, Vielleicht möchten es zum Start beim Booten eingestellt. Du musst dazu auf jedem Knoten, durch Bearbeiten der Konfigurationsdatei nets.boot. Öffnen Sie die Datei verwenden:

Sudo vi /etc/tinc/nets.boot

Und dann diese Datei den Namen Ihres neuen VPN hinzufügen. Bei Auswahl von "Netname" wie mich, Dies wird wie folgt aussehen:

# Diese Datei enthält alle Namen der Netzwerk beim Systemstart gestartet werden.
netname

Speichern und beenden, und du bist fertig. Tinc arbeitet jetzt, und wird auf Booten starten. Das hast du gut gemacht.

Wenn Sie Tinc steuern, Sie können nun den „Dienst“ Befehl ausführen, dies zu tun. Auf jedem Knoten, führen Sie einfach:

Sudo Dienststart tinc

Und haben ein Spiel rund um. Grundlegende Steuerung lässt sich durch diesen Befehl.

Fazit

Sie sollten jetzt eine sichere VPN-Verbindung durch Tinc auf allen Computern ausgeführt haben.. Dieses VPN einsetzbar als Basis für den Aufbau weiterer Netzwerk-Funktionalität.

Wenn Sie weitere Knoten in der Zukunft hinzufügen möchten, oder kombinieren Sie Tinc mit anderen VPNs, Tinc ermöglicht es Ihnen, dies zu tun. Der Prozess für jeden zusätzlichen Knoten ist das gleiche wie ich oben beschrieben habe, und Sie sollten in der Lage, leicht zu erkennen, welche Variablen und Adressen ändern brauchen. Denken Sie daran, dass wenn Sie Knoten direkt miteinander verbinden zu wollen, Du musst die Tasten direkt untereinander tauschen. So, Tinc betreibt als Netz VPN, Das ist ein bisschen sicherer als mein Ansatz (3). Ansonsten, Sie können einfach Ihr Netzwerk einrichten wie ich getan habe, und haben alles, was über einen zentralen Knoten.

So oder so, Sie sind jetzt frei zu spielen, um. Viel Glück!

Ressourcen

(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

Quelle