Erste Schritte mit softwaredefiniertem Netzwerk und Erstellen eines VPN mit ZeroTier One

Einführung

Heutzutage werden immer mehr Softwareprojekte von Teams erstellt, deren Mitglieder von verschiedenen geografischen Standorten aus zusammenarbeiten. Obwohl dieser Workflow viele klare Vorteile bietet, möchten diese Teams ihre Computer in manchen Fällen über das Internet miteinander verbinden und sie so behandeln, als befänden sie sich im selben Raum. Sie können beispielsweise verteilte Systeme wie Kubernetes testen oder eine komplexe Multi-Service-Anwendung erstellen. Manchmal hilft es nur bei der Produktivität, wenn Sie Maschinen so behandeln können, als wären sie direkt nebeneinander, da Sie nicht riskieren müssten, Ihre unfertigen Dienste dem Internet auszusetzen. Dieses Paradigma kann durch Software-Defined Networking (SDN) erreicht werden, eine relativ neue Technologie, die eine dynamische Netzwerkstruktur bereitstellt, deren Existenz vollständig aus Software besteht.

ZeroTier One ist eine Open-Source-Anwendung, die einige der neuesten Entwicklungen in SDN verwendet, damit Benutzer sichere, verwaltbare Netzwerke erstellen und verbundene Geräte so behandeln können, als wären sie gleich physischer Standort. ZeroTier bietet eine Webkonsole für die Netzwerkverwaltung und Endpunktsoftware für die Clients. Es handelt sich um eine verschlüsselte Peer-to-Peer-Technologie, dh im Gegensatz zu herkömmlichen VPN-Lösungen muss die Kommunikation nicht über einen zentralen Server oder Router erfolgen - Nachrichten werden direkt von Host zu Host gesendet. Dadurch ist es sehr effizient und sorgt für minimale Latenz. Weitere Vorteile sind der einfache Bereitstellungs- und Konfigurationsprozess von ZeroTier, die einfache Wartung und die Möglichkeit, autorisierte Knoten zentral über die Webkonsole zu registrieren und zu verwalten.

Wenn Sie diesem Lernprogramm folgen, verbinden Sie einen Client und einen Server in einem einfachen Punkt-zu-Punkt-Netzwerk. Da beim softwaredefinierten Netzwerk das herkömmliche Client / Server-Design nicht verwendet wird, muss kein zentraler VPN-Server installiert und konfiguriert werden. Dies vereinfacht die Bereitstellung des Tools und das Hinzufügen zusätzlicher Knoten. Sobald die Verbindung hergestellt ist, haben Sie die Möglichkeit, die VPN-Funktion von ZeroTier zu nutzen, indem Sie einige clevere Linux-Funktionen verwenden, damit der Datenverkehr Ihr ZeroTier-Netzwerk von Ihrem Server verlassen und einen Client anweisen kann, den Datenverkehr in diese Richtung zu senden.

Voraussetzungen

Bevor Sie dieses Tutorial durcharbeiten, benötigen Sie die folgenden Ressourcen:

  • Ein Server mit Ubuntu 16.04. Auf diesem Server benötigen Sie auch einen Nicht-Root-Benutzer mit Sudo-Rechten, der unter https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16- eingerichtet werden kann. 04 [Anleitung zur Ersteinrichtung des Servers für Ubuntu 16.04].

  • Ein Konto bei ZeroTier One, das Sie unter My ZeroTier einrichten können. Für den Zweck dieses Tutorials können Sie die kostenlose Version dieses Dienstes verwenden, die keine Kosten oder Verpflichtungen mit sich bringt.

  • Ein lokaler Computer, um Ihrem SDN als Client beizutreten. In den Beispielen in diesem Tutorial wird Ubuntu Linux sowohl auf dem Server als auch auf dem lokalen Computer ausgeführt, aber jedes auf der ZeroTier Download Page aufgeführte Betriebssystem funktioniert auf dem Client.

Unter diesen Voraussetzungen können Sie ein softwaredefiniertes Netzwerk für Ihren Server und Ihren lokalen Computer einrichten.

Schritt 1 - Erstellen eines softwaredefinierten Netzwerks mit ZeroTier One

Die ZeroTier-Plattform bietet den zentralen Kontrollpunkt für Ihr softwaredefiniertes Netzwerk. Dort können Sie Clients autorisieren und deaktivieren, ein Adressierungsschema auswählen und eine Netzwerk-ID erstellen, an die Sie Ihre Clients beim Einrichten weiterleiten können.

Melden Sie sich bei Ihrem ZeroTier-Konto an, klicken Sie oben auf dem Bildschirm auf * Netzwerke * und dann auf * Erstellen *. Ein automatisch generierter Netzwerkname wird angezeigt. Klicken Sie darauf, um den Konfigurationsbildschirm Ihres Netzwerks anzuzeigen. Notieren Sie sich die * Netzwerk-ID *, die in Gelb angezeigt wird, da Sie später darauf verweisen müssen.

Wenn Sie den Netzwerknamen in einen aussagekräftigeren Namen ändern möchten, bearbeiten Sie den Namen auf der linken Seite des Bildschirms. Auf Wunsch können Sie auch eine Beschreibung hinzufügen. Alle Änderungen, die Sie vornehmen, werden automatisch gespeichert und übernommen.

Wählen Sie als Nächstes den IPv4-Adressbereich aus, in dem der SDN ausgeführt werden soll. Wählen Sie auf der rechten Seite des Bildschirms im Bereich * IPv4 Auto-Assign * einen Adressbereich aus, unter den Ihre Knoten fallen sollen. Für die Zwecke dieses Lernprogramms kann jeder Bereich verwendet werden. Es ist jedoch wichtig, dass das Kontrollkästchen * Automatisch aus Bereich zuweisen * aktiviert ist.

Stellen Sie sicher, dass * Access Control * auf der linken Seite weiterhin auf * Certificate (Private Network) * eingestellt ist. Dies stellt sicher, dass nur zugelassene Computer eine Verbindung zu Ihrem Netzwerk herstellen können und nicht nur jeder, der Ihre Netzwerk-ID kennt!

Sobald Sie fertig sind, sollten Ihre Einstellungen ungefähr so ​​aussehen:

Zu diesem Zeitpunkt haben Sie die Grundlage für ein ZeroTier Software-Defined Network erfolgreich zusammengestellt. Als Nächstes installieren Sie die ZeroTier-Software auf Ihren Server- und Client-Computern, damit diese eine Verbindung zu Ihrem SDN herstellen können.

Schritt 2 - Installieren des ZeroTier One-Clients auf Ihrem Server und Ihrem lokalen Computer

Da es sich bei ZeroTier One um eine relativ neue Software handelt, wurde sie noch nicht in die zentralen Ubuntu-Software-Repositorys aufgenommen. Aus diesem Grund stellt ZeroTier ein Installationsskript zur Verfügung, mit dem wir die Software installieren. Dieser Befehl ist ein von GPG signiertes Skript, dh, der heruntergeladene Code wird von ZeroTier als veröffentlicht überprüft. Dieses Skript besteht aus vier Hauptteilen, von denen jeder einzeln erklärt wird:

  • + curl -s 'https: //pgp.mit.edu/pks/lookup? op = get & search = 0x1657198823E52A61' + - Importiert den öffentlichen ZeroTier-Schlüssel vom MIT.

  • + gpg --import + - In diesem Abschnitt des Befehls wird der öffentliche Schlüssel ZeroTier zu Ihrem lokalen Schlüsselbund von Behörden hinzugefügt, damit Sie den Paketen vertrauen können, die Sie zu installieren versuchen. Der nächste Teil des Befehls wird nur ausgeführt, wenn der GPG-Import erfolgreich abgeschlossen wurde

  • `+ wenn z = $ (curl -s 'https://install.zerotier.com/' | gpg); dann echo "$ z" + `- In diesem Abschnitt passieren einige Dinge, die sich jedoch im Wesentlichen wie folgt übersetzen lassen:“ Wenn das von ZeroTier.com heruntergeladene kryptografisch signierte Installationsskript GPG durchläuft und von ZeroTier nicht als unsigniert abgelehnt wird, Füge diese Informationen in den Bildschirm ein. “

  • `+ sudo bash; fi + `- In diesem Abschnitt wird das neu validierte Installationsskript ausgeführt, bevor die Routine beendet wird.

Verwenden Sie eine SSH-Konsole, um eine Verbindung zu Ihrem neu erstellten Server herzustellen, und führen Sie den folgenden Befehl als normaler Benutzer aus (eine Erläuterung des Befehls finden Sie unten). Stellen Sie sicher, dass Sie es * nicht * als root ausführen, da das Skript automatisch Ihr Kennwort anfordert, um die Berechtigungsstufe zu erhöhen, und denken Sie daran, die ZeroTier-Konsole in Ihrem Browser geöffnet zu lassen, damit Sie bei Bedarf mit ihr interagieren können.

curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

Nach Abschluss des Skripts werden zwei Ausgabezeilen angezeigt, die den unten gezeigten ähnlich sind. Notieren Sie sich Ihre ZeroTier-Adresse (ohne die eckigen Klammern) und den Namen des Systems, das diese Adresse generiert hat. Beides benötigen Sie später:

Output*** Waiting for identity generation...

*** Success! You are ZeroTier address [  ].

Wiederholen Sie diesen Schritt auf Ihrem lokalen Computer, wenn Sie Ubuntu verwenden, oder befolgen Sie die entsprechenden Schritte für Ihr Betriebssystem auf der Download page der ZeroTier-Website. Vergewissern Sie sich erneut, dass Sie die ZeroTier-Adresse und den Computer, der diese Adresse generiert hat, notiert haben. Sie benötigen diese Informationen im nächsten Schritt dieses Lernprogramms, wenn Sie Ihren Server und Client tatsächlich mit dem Netzwerk verbinden.

Schritt 3 - Beitritt zu Ihrem ZeroTier-Netzwerk

Nachdem sowohl der Server als auch der Client die ZeroTier-Software ausgeführt haben, können Sie sie mit dem in der ZeroTier-Webkonsole erstellten Netzwerk verbinden.

Verwenden Sie den folgenden Befehl, um Ihren Client anzuweisen, über seine Plattform Zugriff auf das ZeroTier-Netzwerk anzufordern. Die anfängliche Anfrage des Kunden wird abgelehnt und bleibt hängen, aber wir werden das gleich beheben. Stellen Sie sicher, dass Sie die Netzwerk-ID verwenden, die Sie zuvor im Konfigurationsfenster Ihres Netzwerks notiert haben.

sudo zerotier-cli join
Output200 join OK

Sie erhalten eine Meldung "+200 join OK +", die bestätigt, dass der ZeroTier-Dienst auf Ihrem Server den Befehl verstanden hat. Ist dies nicht der Fall, überprüfen Sie die eingegebene ZeroTier-Netzwerk-ID.

Da Sie kein öffentliches Netzwerk erstellt haben, dem jeder auf der Welt beitreten kann, müssen Sie jetzt Ihre Kunden autorisieren. Gehen Sie zur ZeroTier-Webkonsole und scrollen Sie ganz nach unten, wo sich der Abschnitt * Mitglieder * befindet. Sie sollten zwei als * Online * gekennzeichnete Einträge mit denselben Adressen finden, die Sie zuvor notiert haben.

Aktivieren Sie in der ersten mit * Auth? * Gekennzeichneten Spalte die Kontrollkästchen, um sie zum Beitritt zum Netzwerk zu autorisieren. Der Zerotier Controller weist dem Server und dem Client beim nächsten Aufruf des SDN eine IP-Adresse aus dem zuvor ausgewählten Bereich zu.

Das Zuweisen der IP-Adressen kann einen Moment dauern. Während des Wartens können Sie im Abschnitt * Mitglieder * einen * Kurznamen * und eine * Beschreibung * für Ihre Knoten eingeben.

Damit haben Sie zwei Systeme an Ihr softwaredefiniertes Netzwerk angeschlossen.

Bisher haben Sie sich mit dem ZeroTier-Bedienfeld vertraut gemacht, ZeroTier über die Befehlszeilenschnittstelle heruntergeladen und installiert und anschließend sowohl den Server als auch den Client an dieses Netzwerk angeschlossen. Als Nächstes überprüfen Sie, ob alles korrekt angewendet wurde, indem Sie einen Konnektivitätstest durchführen.

Schritt 4 - Überprüfen der Konnektivität

In diesem Stadium ist es wichtig zu überprüfen, ob die beiden Hosts tatsächlich miteinander kommunizieren können. Es besteht die Möglichkeit, dass die Hosts, obwohl sie behaupten, dem Netzwerk beigetreten zu sein, nicht in der Lage sind, zu kommunizieren. Wenn Sie die Konnektivität jetzt überprüfen, müssen Sie sich keine Gedanken mehr über grundlegende Verbindungsprobleme machen, die später zu Problemen führen können.

Eine einfache Möglichkeit, die ZeroTier-IP-Adresse der einzelnen Hosts zu ermitteln, besteht darin, in der ZeroTier-Webkonsole im Abschnitt "Mitglieder" nachzuschlagen. Möglicherweise müssen Sie es aktualisieren, nachdem Sie den Server und den Client autorisiert haben, bevor deren IP-Adressen angezeigt werden. Alternativ können Sie die Linux-Befehlszeile verwenden, um diese Adressen zu finden. Verwenden Sie auf beiden Computern den folgenden Befehl - die erste in der Liste angezeigte IP-Adresse ist diejenige, die verwendet werden soll. In dem unten gezeigten Beispiel lautet diese Adresse "+ 203.0.113.0 +".

ip addr sh zt0 | grep 'inet'
Outputinet 203.0.113.0/24 brd 203.0.255.255 scope global zt0
inet6 fc63:b4a9:3507:6649:9d52::1/40 scope global
inet6 fe80::28e4:7eff:fe38:8318/64 scope link

Um die Konnektivität zwischen den Hosts zu testen, führen Sie den Befehl + ping + von einem Host aus, gefolgt von der IP-Adresse des anderen. Zum Beispiel auf dem Client:

ping

Und auf dem Server:

ping

Wenn Antworten vom gegenüberliegenden Host zurückgesendet werden (wie in der folgenden Ausgabe gezeigt), kommunizieren die beiden Knoten erfolgreich über den SDN.

OutputPING 203.0.113.0 (203.0.113.0) 56(84) bytes of data.
64 bytes from 203.0.113.0: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 203.0.113.0: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 203.0.113.0: icmp_seq=3 ttl=64 time=0.043 ms

Sie können dieser Konfiguration beliebig viele Computer hinzufügen, indem Sie die ZeroTier-Installation wiederholen und die oben beschriebenen Prozesse verbinden. Denken Sie daran, dass diese Maschinen in keiner Weise in der Nähe voneinander sein müssen.

Nachdem Sie bestätigt haben, dass Server und Client miteinander kommunizieren können, lesen Sie weiter, wie Sie das Netzwerk so anpassen, dass ein Ausgangs-Gateway bereitgestellt und ein eigenes VPN erstellt wird.

Schritt 5 - Aktivieren der VPN-Funktion von ZeroTier

Wie in der Einführung erwähnt, ist es möglich, ZeroTier als VPN-Tool zu verwenden. Wenn Sie nicht vorhaben, ZeroTier als VPN-Lösung zu verwenden, müssen Sie diesen Schritt nicht ausführen und können mit Schritt 6 fortfahren.

Durch die Verwendung eines VPN wird die Quelle Ihrer Kommunikation mit Websites im Internet ausgeblendet. Hiermit können Sie Filter und Einschränkungen umgehen, die in dem von Ihnen verwendeten Netzwerk möglicherweise vorhanden sind. Im weiteren Internet scheinen Sie von der öffentlichen IP-Adresse Ihres Servers aus zu surfen. Um ZeroTier als VPN-Tool zu verwenden, müssen Sie noch einige Änderungen an den Konfigurationen Ihres Servers und Clients vornehmen.

Aktivieren der Netzwerkadressübersetzung und IP-Weiterleitung

Network Address Translation, im Allgemeinen als "NAT" bezeichnet, ist eine Methode, mit der ein Router Pakete auf einer mit der IP-Adresse des Absenders gekennzeichneten Schnittstelle akzeptiert und diese Adresse dann gegen die des Routers austauscht. Eine Aufzeichnung dieses Austauschs wird im Speicher des Routers gespeichert, damit der Router die IP-Adresse zurück in die ursprüngliche Adresse übersetzen kann, wenn der Datenverkehr in die entgegengesetzte Richtung zurückkehrt. NAT wird normalerweise verwendet, um mehreren Computern den Betrieb hinter einer öffentlich zugänglichen IP-Adresse zu ermöglichen, was für einen VPN-Dienst nützlich ist. Ein Beispiel für NAT in der Praxis ist der inländische Router, den Sie von Ihrem Internetdienstanbieter erhalten haben, um alle Geräte in Ihrem Haushalt mit dem Internet zu verbinden. Ihr Laptop, Ihr Telefon, Ihr Tablet und alle anderen internetfähigen Geräte scheinen dieselbe öffentliche IP-Adresse für das Internet zu haben, da Ihr Router NAT ausführt.

Obwohl NAT in der Regel von einem Router ausgeführt wird, kann es auch ein Server ausführen. Während dieses Schritts nutzen Sie diese Funktionalität auf Ihrem ZeroTier-Server, um dessen VPN-Funktionen zu aktivieren.

IP-Weiterleitung ist eine Funktion, die von einem Router oder Server ausgeführt wird, bei der Datenverkehr von einer Schnittstelle zu einer anderen weitergeleitet wird, wenn sich diese IP-Adressen in verschiedenen Zonen befinden. Wenn ein Router mit zwei Netzwerken verbunden war, kann er mithilfe der IP-Weiterleitung den Datenverkehr zwischen diesen Netzwerken weiterleiten. Das mag einfach klingen, aber es kann überraschend komplex sein, es erfolgreich zu implementieren. In diesem Tutorial müssen jedoch nur einige Konfigurationsdateien bearbeitet werden.

Durch Aktivieren der IP-Weiterleitung gelangt der VPN-Verkehr von Ihrem Client im ZeroTier-Netzwerk auf die ZeroTier-Schnittstelle des Servers. Ohne diese Konfigurationsänderungen wirft der Linux-Kernel (standardmäßig) alle Pakete weg, die nicht für die Schnittstelle bestimmt sind, auf der sie ankommen. Dies ist ein normales Verhalten für den Linux-Kernel, da normalerweise alle Pakete, die auf einer Schnittstelle ankommen und eine Zieladresse für ein anderes Netzwerk haben, durch eine falsche Routing-Konfiguration an einer anderen Stelle im Netzwerk verursacht werden können.

Es ist hilfreich, die IP-Weiterleitung so zu verstehen, dass der Linux-Kernel darüber informiert wird, dass es akzeptabel ist, Pakete zwischen Schnittstellen weiterzuleiten. Die Standardeinstellung ist "+ 0 " - entspricht "Aus". Sie werden es auf " 1 +" umschalten - das entspricht "Ein".

Führen Sie den folgenden Befehl aus, um die aktuelle Konfiguration anzuzeigen:

sudo sysctl net.ipv4.ip_forward
Outputnet.ipv4.ip_forward = 0

Um die IP-Weiterleitung zu aktivieren, ändern Sie die Datei "+ / etc / sysctl.conf " auf Ihrem Server und fügen Sie die erforderliche Zeile hinzu. Mit dieser Konfigurationsdatei kann ein Administrator die Standard-Kernel-Einstellungen überschreiben. Sie wird nach einem Neustart immer angewendet, sodass Sie sich nicht um eine erneute Einstellung kümmern müssen. Verwenden Sie ` nano +` oder Ihren bevorzugten Texteditor, um die folgende Zeile am Ende der Datei einzufügen.

sudo nano /etc/sysctl.conf

/etc/sysctl.conf

. . .

Speichern und schließen Sie die Datei und führen Sie dann den nächsten Befehl aus, um die Übernahme der neuen Konfiguration durch den Kernel auszulösen

sudo sysctl -p

Der Server übernimmt alle neuen Konfigurationsanweisungen in die Datei und wendet sie sofort an, ohne dass ein Neustart erforderlich ist. Führen Sie den gleichen Befehl wie zuvor aus, und Sie werden feststellen, dass die IP-Weiterleitung aktiviert ist.

sudo sysctl net.ipv4.ip_forward
Outputnet.ipv4.ip_forward = 1

Nachdem die IP-Weiterleitung aktiviert ist, können Sie sie gut nutzen, indem Sie dem Server einige grundlegende Routing-Regeln bereitstellen. Da der Linux-Kernel bereits über eine eingebettete Netzwerk-Routing-Funktion verfügt, müssen Sie lediglich einige Regeln hinzufügen, um der integrierten Firewall und dem Router mitzuteilen, dass der neue Datenverkehr akzeptabel ist und wohin er gesendet werden soll .

Um diese Regeln über die Befehlszeile hinzuzufügen, müssen Sie zuerst die Namen kennen, die Ubuntu sowohl Ihrer Zerotier-Schnittstelle als auch Ihrer normalen internetfähigen Ethernet-Schnittstelle zugewiesen hat. Dies sind normalerweise "+ zt0 " und " eth0 +", obwohl dies nicht immer der Fall ist.

Verwenden Sie den Befehl "+ ip link show ", um die Namen dieser Schnittstellen zu finden. Dieses Befehlszeilendienstprogramm ist Teil von " iproute2 +", einer Sammlung von Userspace-Dienstprogrammen, die standardmäßig auf Ubuntu installiert sind:

ip link show

In der Ausgabe dieses Befehls stehen die Namen der Schnittstellen direkt neben den Nummern, die eine eindeutige Schnittstelle in der Liste identifizieren. Diese Schnittstellennamen werden in der folgenden Beispielausgabe hervorgehoben. Wenn sich Ihre Namen von den im Beispiel gezeigten Namen unterscheiden, ersetzen Sie Ihren Schnittstellennamen in diesem Handbuch entsprechend.

Output1: : <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
   link/ether 72:2d:7e:6f:5e:08 brd ff:ff:ff:ff:ff:ff
3: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
   link/ether be:82:8f:f3:b4:cd brd ff:ff:ff:ff:ff:ff

Verwenden Sie "+ iptables +", um die Netzwerkadressübersetzung und IP-Masquerading zu aktivieren:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Verkehrsweiterleitung zulassen und aktive Verbindungen verfolgen:

sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Als nächstes erlauben Sie die Weiterleitung des Datenverkehrs von + zt0 + nach + eth0 +. Eine umgekehrte Regel ist nicht erforderlich, da in diesem Lernprogramm davon ausgegangen wird, dass der Client immer über den Server aufruft und nicht umgekehrt:

sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT

Beachten Sie, dass die für den Server festgelegten iptables-Regeln zwischen Neustarts nicht automatisch beibehalten werden. Sie müssen diese Regeln speichern, um sicherzustellen, dass sie nach einem Neustart des Servers wieder wirksam werden. Führen Sie auf Ihrem Server die folgenden Befehle aus. Befolgen Sie die Anweisungen auf dem Bildschirm, um die aktuellen IPv4-Regeln zu speichern. IPv6 ist nicht erforderlich.

sudo apt-get install iptables-persistent
sudo netfilter-persistent save

Nach dem Ausführen von "+ sudo netfilter-persistent save " kann es sich lohnen, den Server neu zu starten, um zu überprüfen, ob die iptables-Regeln korrekt gespeichert wurden. Eine einfache Möglichkeit, dies zu überprüfen, ist ` sudo iptables-save `, wodurch die aktuell im Speicher geladene Konfiguration auf Ihrem Terminal gespeichert wird. Wenn Sie in Bezug auf Maskierung, Weiterleitung und die ` zt0 +` - Schnittstelle ähnliche Regeln sehen, wurden diese korrekt gespeichert.

sudo iptables-save
Output# Generated by iptables-save v1.6.0 on Tue Apr 17 21:43:08 2018
. . .
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
. . .
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i zt0 -o eth0 -j ACCEPT
COMMIT
. . .

Nachdem diese Regeln auf Ihren Server angewendet wurden, kann der Datenverkehr zwischen dem ZeroTier-Netzwerk und dem öffentlichen Internet übertragen werden. Das VPN funktioniert jedoch nur, wenn das ZeroTier-Netzwerk selbst darüber informiert wird, dass der Server als Gateway verwendet werden kann.

Aktivieren Ihres Servers zum Verwalten der globalen Route

Damit Ihr Server den Datenverkehr von einem Client verarbeiten kann, müssen Sie sicherstellen, dass andere Clients im ZeroTier-Netzwerk ihren Datenverkehr an ihn senden können. Dies kann durch Festlegen einer globalen Route in der ZeroTier-Konsole erreicht werden. Personen, die mit Computernetzwerken vertraut sind, können dies auch als Standardroute bezeichnen. Hier sendet jeder Client seinen Standarddatenverkehr, d. H. Datenverkehr, der nicht an einen anderen bestimmten Ort geleitet werden soll.

Gehen Sie oben rechts auf Ihrer ZeroTier Networks-Seite und fügen Sie eine neue Route mit den folgenden Parametern hinzu. Sie finden die ZeroTier-IP für Ihren Server im Abschnitt * Mitglieder * Ihrer ZeroTier-Netzwerkkonfigurationsseite. Geben Sie im Feld * network / bits * in + 0.0.0.0 / 0 + und im Feld * (LAN) * die IP-Adresse Ihres ZeroTier-Servers ein.

Wenn die Details vorhanden sind, klicken Sie auf das Symbol "* + *". Daraufhin wird eine neue Regel unter der vorhandenen Regel angezeigt. Darin befindet sich eine orangefarbene Kugel, die verdeutlicht, dass es sich tatsächlich um eine globale Route handelt:

Wenn Ihr ZeroTier-Netzwerk betriebsbereit ist, muss nur noch eine Konfiguration vorgenommen werden, bevor das VPN funktioniert: die der Clients.

Linux-Clients konfigurieren

Wenn auf Ihrem Client Linux ausgeführt wird, müssen Sie die Datei + / etc / sysctl.conf + manuell ändern. Diese Konfigurationsänderung ist erforderlich, um die Ansicht des Kernels dahingehend zu ändern, was ein akzeptabler Rückgabepfad für Ihren Client-Datenverkehr ist. Aufgrund der Art und Weise, wie das ZeroTier-VPN konfiguriert ist, kann der von Ihrem Server an Ihren Client zurückgesendete Datenverkehr manchmal von einer anderen Netzwerkadresse stammen als der, an die es gesendet wurde. Standardmäßig betrachtet der Linux-Kernel diese als ungültig und löscht sie, sodass dieses Verhalten außer Kraft gesetzt werden muss.

Öffnen Sie "+ / etc / sysctl.conf +" auf Ihrem Client-Computer:

sudo nano /etc/sysctl.conf

Fügen Sie dann die folgende Zeile hinzu:

Output. . .

Speichern und schließen Sie die Datei, und führen Sie dann "+ sudo sysctl -p +" aus, um die Änderungen zu übernehmen.

sudo sysctl -p

Teilen Sie der ZeroTier Client-Software als Nächstes mit, dass Ihr Netzwerk Standardroutenverkehr übertragen darf. Dies ändert das Routing des Clients und wird daher als privilegierte Funktion betrachtet, weshalb es manuell aktiviert werden muss. Der Befehl druckt eine Konfigurationsstruktur in die Ausgabe. Aktivieren Sie dieses Kontrollkästchen, um sicherzustellen, dass oben "++" angezeigt wird:

sudo zerotier-cli set  allowDefault=1

Wenn Sie ZeroTier zu irgendeinem Zeitpunkt nicht mehr als VPN mit all Ihrem Datenverkehr verwenden möchten, setzen Sie "+ allowDefault " zurück auf " 0 +":

sudo zerotier-cli set  allowDefault=0

Bei jedem Neustart des ZeroTier-Dienstes auf dem Client wird der Wert + allowDefault = 1 + auf 0 zurückgesetzt. Vergessen Sie nicht, ihn erneut auszuführen, um die VPN-Funktionalität zu aktivieren.

Standardmäßig wird der ZeroTier-Dienst beim Booten sowohl für den Linux-Client als auch für den Server automatisch gestartet. Wenn Sie dies nicht wünschen, können Sie die Startroutine mit dem folgenden Befehl deaktivieren.

sudo systemctl disable zerotier-one

Wenn Sie andere Betriebssysteme in Ihrem ZeroTier-Netzwerk verwenden möchten, lesen Sie den nächsten Abschnitt. Fahren Sie andernfalls mit dem Abschnitt Verwalten von Flüssen fort.

Nicht-Linux-Clients konfigurieren

Die ZeroTier-Client-Software ist für viele Systeme und nicht nur für Linux-Betriebssysteme verfügbar - auch Smartphones werden unterstützt. Clients gibt es für Windows, MacOS, Android, iOS und sogar für spezielle Betriebssysteme wie QNAP, Synology und WesternDigital NAS.

Um MacOS- und Windows-basierte Clients mit dem Netzwerk zu verbinden, starten Sie das ZeroTier-Tool (das Sie in Schritt 1 installiert haben) und geben Sie Ihre Netzwerk-ID in das dafür vorgesehene Feld ein, bevor Sie auf * Verbinden * klicken. Denken Sie daran, die ZeroTier-Konsole erneut zu aktivieren, um die Schaltfläche * Zulassen * zu aktivieren, mit der ein neuer Host in Ihrem Netzwerk autorisiert wird.

Stellen Sie sicher, dass Sie das Kästchen mit der Aufschrift * Leiten Sie den gesamten Verkehr durch ZeroTier *. Wenn Sie dies nicht tun, wird Ihr Client an Ihr ZeroTier-Netzwerk angeschlossen, versucht jedoch nicht, seinen Internetverkehr über das Netzwerk zu senden.

Verwenden Sie ein IP-Überprüfungstool wie ICanHazIP, um zu überprüfen, ob Ihr Datenverkehr von der IP-Adresse Ihres Servers im Internet angezeigt wird. Um dies zu überprüfen, fügen Sie die folgende URL in die Adressleiste Ihres Browsers ein. Diese Website zeigt die IP-Adresse an, die der Server (und der Rest des Internets) für den Zugriff auf die Website verwendet:

http://icanhazip.com

Nachdem Sie diese Schritte ausgeführt haben, können Sie Ihr VPN nach Belieben verwenden. Der nächste optionale Abschnitt behandelt eine in das ZeroTier SDN integrierte Technologie, die als „Flussregeln“ bezeichnet wird. Sie sind jedoch in keiner Weise erforderlich, damit die VPN-Funktionalität funktioniert.

Schritt 6 - Verwalten von Flows (optional)

Einer der Vorteile eines softwaredefinierten Netzwerks ist die zentrale Steuerung. In Bezug auf ZeroTier ist der zentralisierte Controller die Webbenutzeroberfläche, die sich über dem gesamten ZeroTier SDN-Dienst befindet. Über diese Schnittstelle können Regeln geschrieben werden, die als flow rules bezeichnet werden und angeben, welche Aktionen der Datenverkehr in einem Netzwerk ausführen kann oder nicht. Sie können beispielsweise ein generelles Verbot für bestimmte Netzwerkports festlegen, die Datenverkehr über das Netzwerk übertragen, die Anzahl der Hosts begrenzen, die miteinander kommunizieren können, und sogar den Datenverkehr umleiten.

Dies ist eine äußerst leistungsstarke Funktion, die fast sofort wirksam wird, da alle Änderungen an der Flow-Tabelle an die Netzwerkmitglieder weitergeleitet werden und nach wenigen Augenblicken wirksam werden. Um Ablaufregeln zu bearbeiten, kehren Sie zur ZeroTier Web-Benutzeroberfläche zurück, klicken Sie auf die Registerkarte * Netzwerk * ​​und scrollen Sie nach unten, bis Sie ein Feld mit dem Titel * Ablaufregeln * sehen (möglicherweise ist es reduziert und muss erweitert werden). Dadurch wird ein Textfeld geöffnet, in das Sie die gewünschten Regeln eingeben können. Ein vollständiges Handbuch finden Sie in der ZeroTier-Konsole in einem Feld direkt unter dem Eingabefeld * Flow Rules * mit dem Titel * Rules Engine Help *.

Im Folgenden finden Sie einige Beispielregeln, anhand derer Sie diese Funktionalität kennen lernen können.

Fügen Sie die folgende Regel hinzu, um den Datenverkehr für den DNS-Server "+ 8.8.8.8 +" von Google zu blockieren:

drop
   ipdest 8.8.8.8/32
;

Fügen Sie die folgende Regel hinzu, um den Datenverkehr für den öffentlichen DNS-Server von Google an einen Ihrer ZeroTier-Knoten umzuleiten. Dies könnte eine hervorragende Lösung sein, um DNS-Lookups zu überschreiben:

redirect
   ipdest 8.8.8.8/32
;

Wenn in Ihrem Netzwerk besondere Sicherheitsanforderungen bestehen, können Sie alle Aktivitäten an FTP-Ports, Telnet und unverschlüsseltem HTTP löschen, indem Sie die folgende Regel hinzufügen:

drop
   dport 80,23,21,20
;

Wenn Sie alle Ablaufregeln hinzugefügt haben, klicken Sie auf die Schaltfläche "Änderungen speichern". ZeroTier zeichnet Ihre Änderungen auf.

Fazit

In diesem Lernprogramm haben Sie einen ersten Schritt in die Welt des softwaredefinierten Netzwerks getan. Die Arbeit mit ZeroTier bietet einen Einblick in die Vorteile dieser Technologie. Wenn Sie dem VPN-Beispiel gefolgt sind, kann das anfängliche Setup zwar im Gegensatz zu anderen Tools stehen, die Sie in der Vergangenheit verwendet haben, aber das Hinzufügen zusätzlicher Clients kann ein zwingender Grund sein, die Technologie an anderer Stelle zu verwenden.

Zusammenfassend haben Sie gelernt, wie Sie ZeroTier als SDN-Anbieter verwenden und Knoten für dieses Netzwerk konfigurieren und verbinden. Mit dem VPN-Element haben Sie ein tieferes Verständnis für die Funktionsweise von Routing in einem solchen Netzwerk, und über einen der Pfade in diesem Lernprogramm können Sie die leistungsstarke Technologie für Flussregeln verwenden.

Jetzt, da ein Punkt-zu-Punkt-Netzwerk vorhanden ist, können Sie es mit anderen Funktionen wie der Dateifreigabe kombinieren. Wenn Sie zu Hause einen NAS oder Dateiserver haben, können Sie ihn mit ZeroTier verbinden und von unterwegs darauf zugreifen. Wenn Sie es mit Ihren Freunden teilen möchten, können Sie ihnen zeigen, wie sie sich Ihrem ZeroTier-Netzwerk anschließen können. Mitarbeiter, die über eine große Fläche verteilt sind, können sogar auf denselben zentralen Speicherplatz zurückgreifen. Informationen zum Erstellen der Dateifreigabe für eines dieser Beispiele finden Sie unter https://www.digitalocean.com/community/tutorials/how-to-set-up-a-samba-share-for-a- small-organization-on-ubuntu-16-04 [So richten Sie eine Samba-Freigabe für eine kleine Organisation unter Ubuntu 16.04 ein].