Administratoren kennen die Herausforderung, unterschiedliche Sicherheitszonen unabhängig vom zugrunde liegenden Transportnetz abbilden zu müssen. Gleichzeitig soll das Netzwerk flexibel erweiterbar, aber auch einfach verwaltbar sein und Subnetze über unterschiedliche Standorte hinweg bereitstellen können. Einen neuen Ansatz für diese Herausforderungen verspricht das Open-Source-basierte ZeroTier.
ZeroTier [1] versteht sich als eine Abstraktionsschicht zwischen dem zugrunde liegenden Transportnetz im Underlay und der eigentlichen Datenübertragung und Steuerung im Overlay. Der gleichnamige Hersteller nutzt den Begriff "Netzwerkhypervisor", um die Unabhängigkeit des Netzwerkverhaltens und der zugehörigen Regelwerke von Standort und Transportmedium zu verdeutlichen.
Fokus der ZeroTier-Entwickler war ein einfach einzurichtendes Werkzeug, das unterschiedliche Arten von Endgeräten nahtlos über ein Peer-to-Peer-Konzept miteinander verbindet. Dies reduziert die Latenz, da in den meisten Fällen kein Datenverkehrsmuster mit Hairpinning wie bei klassischen VPN-Ansätzen entsteht. Mit Hairpinning ist hier der Datenfluss zu einem zentralen Punkt und wieder zurück gemeint.
Schlägt die Peer-to-Peer-Verbindung fehl, gibt es noch die Möglichkeit für ein Relay, das den Datenverkehr bidirektional über einen sogenannten Root Node weiterleitet. ZeroTier setzt insgesamt mehrere Serverkomponenten in der Management- und in der Control-Plane ein. Neben dem reinen Weiterleiten von Datenpaketen bietet die Technologie spezielle Richtlinien, um Segmentierungen oder virtuelle SPAN-Ports für Monitoring und Troubleshooting zu realisieren.
ZeroTier [1] versteht sich als eine Abstraktionsschicht zwischen dem zugrunde liegenden Transportnetz im Underlay und der eigentlichen Datenübertragung und Steuerung im Overlay. Der gleichnamige Hersteller nutzt den Begriff "Netzwerkhypervisor", um die Unabhängigkeit des Netzwerkverhaltens und der zugehörigen Regelwerke von Standort und Transportmedium zu verdeutlichen.
Fokus der ZeroTier-Entwickler war ein einfach einzurichtendes Werkzeug, das unterschiedliche Arten von Endgeräten nahtlos über ein Peer-to-Peer-Konzept miteinander verbindet. Dies reduziert die Latenz, da in den meisten Fällen kein Datenverkehrsmuster mit Hairpinning wie bei klassischen VPN-Ansätzen entsteht. Mit Hairpinning ist hier der Datenfluss zu einem zentralen Punkt und wieder zurück gemeint.
Schlägt die Peer-to-Peer-Verbindung fehl, gibt es noch die Möglichkeit für ein Relay, das den Datenverkehr bidirektional über einen sogenannten Root Node weiterleitet. ZeroTier setzt insgesamt mehrere Serverkomponenten in der Management- und in der Control-Plane ein. Neben dem reinen Weiterleiten von Datenpaketen bietet die Technologie spezielle Richtlinien, um Segmentierungen oder virtuelle SPAN-Ports für Monitoring und Troubleshooting zu realisieren.
Für den produktiven Betrieb gibt es zwei Modelle: On-Premises im Self-Hosting [2] oder als SaaS-Angebot. Das Unternehmen ZeroTier stellt eine solche SaaS-Version in der Public Cloud bereit. ZeroTier steht für eine Vielzahl von Clientbetriebssystemen wie Windows, Linux, macOS, aber auch Router-Betriebssystemen wie RouterOS von MikroTik oder mit Einschränkungen für iOS und Android bereit.
Grundbegriffe und Aufbau
ZeroTier nutzt einige Eigenbegriffe, die zu Beginn etwas verwirrend sind. Der bereits zuvor genannte Root Node bildet unter anderem die Control-Plane ab und führt ähnlich der Funktionsweise von DNS-Root-Servern den Lookup zwischen Adresse und Identität aus. Er verteilt außerdem Informationen über die Erreichbarkeit anderer Nodes, sodass diese darauffolgend direkt zu einer Peer-to-Peer-Verbindung wechseln können. Schlägt dies jedoch fehl, kann ein Root Node als Relay in der Data-Plane Pakete weiterleiten. Als Nodes bezeichnet der Anbieter alle Endgeräte, auf denen ein ZeroTier-Agent läuft. Diese halten eine dauerhafte Verbindung zum Root Node.
Der Network Controller bildet die Management-Plane ab und dient primär dem Konfigurationsmanagement. Des Weiteren übernimmt er jedoch auch die Funktion der Zertifizierungsstelle für die
Nodes eines darauf angelegten virtuellen Netzwerks. Sowohl der Netzwerkcontroller als auch die Endgeräte haben eine eindeutige Adresse mit 40 Bit Länge. Dies entspricht zehn HEX-Zeichen. Der Inhalt basiert auf der Hashbildung eines Public Keys, die Identity hingegen auf Public und Private Key sowie der zuvor benannten Adresse.
Neben diesen Begriffen gibt es in ZeroTier noch Netzwerke. Diese bilden ähnlich wie ein VLAN eine Broadcast-Domäne. Der Begriff bezieht sich jedoch in der Nomenklatur von ZeroTier nur auf ein virtuelles Netzwerk, Netzwerk-IDs identifizieren die jeweiligen Netzwerke. Diese bestehen aus 16 HEX-Zeichen, also 64 Bit, wobei die ersten 40 Bit aus der Adresse des Netzwerkcontrollers bestehen und die letzten 24 Bit das Netzwerk auf dem Controller identifizieren.
Damit Nodes in ZeroTier eine Peer-to-Peer-Kommunikationsbeziehung aufbauen können, bedarf es zunächst der Verteilung von Erreichbarkeitsinformationen durch den Root Node. Zudem sind valide Schlüssel nötig. Deren Verteilung übernimmt der Netzwerkcontroller.
Bei der Installation und dem Hinzufügen von Netzwerken auf den Nodes legt ZeroTier virtuelle Netzwerkadapter mit einer MTU von 2800 Byte im Betriebssystem an. Damit diese MTU funktioniert, ignoriert ZeroTier das Don't-Fragment-Bit im IP-Header und fragmentiert im zugrunde liegenden Netzwerk. Für den Verbindungsaufbau kommt der UDP-Port 9993 zum Einsatz.
Zur Funktionstrennung finden – wie im OSI-Modell –unterschiedliche Schichten Verwendung. Diese bezeichnet ZeroTier als VL1 und VL2. VL1 kümmert sich um die Verschlüsselung sowie die Peer-to-Peer-Kommunikation. VL2 sorgt mittels einer logischen Netzwerktrennung für Netzwerkvirtualisierung.
Bild 1: Im Underlay-Netz befinden sich alle Clients in unterschiedlichen Segmenten und können nicht ohne NAT kommunizieren. Im Overlay durch ZeroTier befinden sich alle im gleichen Subnetz.
Virtuelle Schichten: VL1 und VL2
VL1 (Virtual Layer) kümmert sich in erster Linie um eine direkte Kommunikation zwischen den Nodes. Dazu baut es ein kryptografisch abgesichertes Peer-to-Peer-Netzwerk auf, bildet also ein Overlay-Netz. Dieses abstrahiert dann das zugrunde liegende Transportnetz im sogenannten Underlay. Dazu versucht VL1 auf UDP-Port 9993, eine direkte Verbindung aufzubauen.
Falls sich der Node hinter einem NAT-Gateway befindet, übernimmt dieser Layer auch das UDP Hole Punching, sorgt also dafür, dass der Rückweg über das NAT-Gateway offenbleibt. Bei Fehlern oder Abbruch der Verbindung sorgt VL1 für den Wiederaufbau. Die Identifizierung und Authentifizierung der Nodes erfolgt über Public Keys, die die Grundlage für die Adressen bilden. Auch das Schlüsselmanagement vom Netzwerkcontroller zum Node und die Verschlüsselung laufen in VL1. Ebenso sind hier die Lastverteilungs- und Fallback-Features angesiedelt.
VL2 bildet eine Abstraktionsschicht, die sich wie ein virtueller, verteilter und gemanagter Switch verhält. Dabei kann es über physische Netzwerkgrenzen hinweg eine Layer-2-Kommunikation ermöglichen. Aber auch eine geroutete Layer-3-Kopplung bei Netzübergängen in klassische Netze ist mit VL2 möglich. Von der Netzwerksicht bildet es zunächst separate Broadcast-Domänen je angelegtem Netzwerk. Dies erlaubt Spiegelungen von Datenverkehr zur Analyse sowie zentral gemanagte und dezentral ausgerollte Richtlinien zur Filterung von Datenverkehr.
Bestandteile von ZeroTier
Bestandteil
Rolle
Root Node
Zentrale Komponente mit Verbindung zu allen anderen Nodes. Agiert auch als Relay für Nodes ohne Peer-to-Peer-Möglichkeit. Übernimmt ähnlich dem DNS-Konzept Lookup zwischen Identität und Adresse. Verteilt Informationen über die Erreichbarkeit anderer Nodes.
Node
Beteiligte Komponente in einem ZeroTier-Netzwerk. Identifizierung über Adresse und Identität.
Identity
Eindeutiges Identifizierungsmerkmal eines Nodes, das aus einem Public/Private-Schlüsselpaar und der zugehörigen Adresse besteht.
Netzwerkcontroller
Zentrale Komponente für das Management und das Zertifikatshandling.
Netzwerk
Bezeichnung für ein virtuelles Ethernet-Netzwerk innerhalb von ZeroTier.
Netzwerk-ID
Eindeutiges Identifizierungsmerkmal für ein Netzwerk innerhalb von ZeroTier.
Adresse
40-Bit-Hash abgeleitet von einem Public Key.
Konfiguration im Dashboard
Nach einer Registrierung und dem Login auf "my.zerotier.com" legen Sie über "Cre-ate a Network" ein neues Netzwerk auf dem Dashboard an. Der SaaS-Dienst lässt in der kostenfreien Version nur einen Administrator zu. Die Netzwerk-ID wird automatisch auf Basis der Adresse des Controllers vergeben, wohingegen Name und Beschreibung individuell anpassbar sind.
Der entscheidende Unterschied beim Anlegen von Netzwerken ist die Deklaration als privates oder öffentliches Netzwerk. Einem öffentlichen Netzwerk können alle Nutzer beitreten, denen die Netzwerk-ID bekannt ist. Bei einem privaten Netzwerk bedarf es zusätzlich der Autorisierung des Nodes durch den Administrator. In der Verwaltungsoberfläche sieht er nach dem Beitritt den entsprechenden Node.
Auf Seiten des Nodes kann ein Beitritt entweder über die Eingabe der Netzwerk-ID in einer GUI oder über die CLI geschehen. Ein Beispiel für den CLI-Einsatz unter macOS und Linux sieht so aus – die drei Befehle stehen für Beitritt, das Auflisten und das Verlassen von Netzwerken:
zerotier-cli join 1234567891
zerotier-cli listnetworks
zerotier-cli leave 1234567891
Nach der Autorisierung für das neue Netzwerk, sei es automatisch bei öffentlichen oder manuell bei privaten Netzwerken, erfolgt eine Adresszuweisung gemäß dem auf dem Controller konfigurierten Subnetz. Auch gemanagte IP-Adressen und Zuweisungen mehrerer IP-Adressen sind auf dem Controller möglich. Das Dashboard listet alle mit dem Netzwerk verbundenen Nodes inklusive des letzten Registrierungszeitpunkts auf.
Bild 2: Nur im SaaS-Modell von ZeroTier lassen sich angelegte Netzwerke per WebGUI verwalten.
P2P, Routing und Failover
Bevor die Nodes Peer-to-Peer miteinander kommunizieren können, bedarf es zunächst des Public Keys der jeweiligen Gegenstelle, um den Datenverkehr verschlüsselt zu übertragen. Diesen erhält der sendende Node vom ZeroTier-Root. Möchte also Node 1 mit Node 2 kommunizieren, bezieht er den Public Key von Node 2 über den Root Node. Das initiale Paket läuft über Root als Relay. Nachdem Node 1 die Adresse für Node 2 von Root erhalten hat, versucht Node 1, eine direkte Kommunikation zu Node 2 aufzubauen.
Damit die beiden Nodes direkt ansprechbar sind, sogar falls sie sich hinter einem NAT-Übergang befinden, führen diese ein sogenanntes UDP-Hole-Punching durch, um den NAT-Eintrag aktiv zu halten und jeweils rückwärts erreichbar zu sein. Daher benötigen Sie meist kein Port-Forwarding, sondern nur ausgehende Firewallregeln. Schlägt die P2P-Kommunikation fehl, kommt die Relay-Funktion des Root Node zum Einsatz, was allerdings eine erhöhte Latenz und im Fall der SaaS-Variante von ZeroTier verringerte Datenraten nach sich zieht. Falls die Nodes im Underlay sowohl IPv4 und IPv6 aktiviert haben, bevorzugt ZeroTier IPv6.
Die Übertragung von Broadcast und Multicast innerhalb eines ZeroTier-Netzwerks ist transparent. Die Nodes bridgen diese Pakete, sodass selbst nicht IP-basierte Protokolle übertragbar sind. Dies ermöglicht es auch, Legacy-Geräte zu verwenden, bei denen sich die Kommunikationspartner in derselben Broadcast-Domäne befinden müssen. Das ARP-Handling ist für WAN-Umgebungen optimiert, indem ZeroTier für jede IPv4-Adresse auf dem Node eine Multicast-Adresse generiert. Die Nodes fangen ARP-Anfragen per Broadcast direkt auf jedem Node ab und leiten diese nur gezielt an das Multicast-Ziel weiter. Dies vermeidet unnötigen Broadcast-Traffic und verbessert die Skalierung.
Auf Layer 3 kann grundsätzlich jede IP-Adresse zur Anwendung kommen, wobei sowohl statische als auch dynamisch zugewiesene Adressen möglich sind. Der Netzwerkcontroller ist ferner in der Lage, zu routen und DNS-Server zu pushen. Interessant ist hier die Möglichkeit, IPv6-Only-Hosts im Underlay mit reinen IPv4-Hosts im Underlay über einen Relay-Server zu verbinden, sodass diese im Overlay direkt miteinander kommunizieren können.
Das ZeroTier-Protokoll erlaubt es, multiple physische Netzwerkverbindungen im Underlay über das Konzept des Linux-Bond-Treibers zu bündeln. Jedoch gibt es keine Applikations-Awareness. Sie können also keine Zuteilung von Anwendungen und QoS-Richtlinien zu definierten Links im Underlay vornehmen. Neben reinem Aktiv/Passiv-Failover lässt sich auch Traffic Duplication, Loadbalancing und Round Robin nutzen.
In VL2 gibt es eine Regel-Engine. Über diese verwalten Sie Layer-2-, Layer-3- und Layer-4-Regeln zentral am Controller und wenden sie auf den Nodes an, wobei dies vom Anlegen bis zum Anwenden im Normalfall in unter einer Minute geschehen ist. Regelwerke sind sowohl global, also für alle Nodes, als auch für einzelne Nodes oder Gruppen von Nodes anwendbar. Wie eine ACL auf Switches oder Routern arbeitet die Regel-Engine statuslos. Es gibt also keine Connection-Awareness.
Die Grundstruktur der Regelwerke bietet Match-Bedingungen, wie Quell- und Ziel-IP-Adressen oder MAC-Adressen, aber auch Ports, Ethertypes und Frame-Größen. Zudem gibt es sogenannte ZeroTier-Tags. Diese weisen Sie den Nodes zu, um Richtlinien aufzubauen. Für das Matching stehen sowohl Negierungen als auch "UND"- und "ODER"-Verknüpfungen zur Verfügung. Tee- und Redirect-Regeln bieten selektive Umleitung von Traffic zur Analyse, beispielsweise zum Troubleshooting oder für Sicherheitszwecke. Klassisch steht als Ergebnis natürlich "ACCEPT" und "DROP" als binäre Ausgabe bereit. Ein einfaches Beispiel für die Akzeptanz für das SIP- und RTP-Protokoll für VoIP sehen Sie im Listing-Kasten. Hier erlauben wir die UDP-Portbereiche 5060 sowie 6000 bis 9000.
Lizenzmodelle
Seit Version 1.4.2 bildet eine Business Source License (BSL) die Basis der Lizenzierung. Unternehmen haben die Auswahl zwischen dem SaaS-Betrieb durch ZeroTier oder dem Self-Hosting. Letzteres bietet mehr Flexibilität bei Setup und Funktionen. Die übersichtliche WebGUI des Anbieters für das Management steht dann allerdings nicht zur Verfügung. Wer sich für den SaaS-Betrieb entscheidet, hat die Wahl zwischen drei Abomodellen. Diese nennt der Anbieter Basic, Professional und Enterprise. Die Enterprise-Variante bietet eine unbegrenzte Anzahl an Admins, Nodes, Netzwerken und sogenannten Priority-Support. Sie bedarf jedoch in Bezug auf den Preis einer individuellen Anfrage beim Vertrieb. Gleiches gilt für individuelle SLAs. Die Professional-Variante kostet derzeit 10 US-Dollar monatlich pro Administrator und ein 25-Node-Paket 5 US-Dollar im Monat. Ab 250 US-Dollar im Monat ist zusätzlich Ticket-Support zu haben. Das Basic-Paket ist grundsätzlich kostenlos. Es bietet nur Unterstützung für einen Administrator und 25 Nodes und es gibt nur Community-Support. Sie können allerdings bereits eine unbegrenzte Anzahl an Netzwerken anlegen. Für die Integration in proprietäre Produkte oder Managed Service Provider braucht es spezielle Lizenzen.
Sicherheit und Kryptografie
Grundsätzlich bietet VL1 eine Ende-zu-Ende-Verschlüsselung. Dafür implementieren die ZeroTier-Entwickler den symmetrischen 256-Bit-Salsa-20-Algorithmus, jedoch ohne Forward Secrecy. Im Bereich der asymmetrischen Public-Key-Kryptografie kommt Curve25519/Ed25519 als 256-Bit-Variante auf Basis elliptischer Kurven zum Einsatz. Die Nachrichtenauthentizität stellt das Protokoll Poly1305 sicher.
Der Controller verteilt die kryptografischen Schlüssel automatisiert, wobei für Umgebungen mit entsprechenden Sicherheitsanforderungen auch die Möglichkeit eines Eigenhostings besteht. Version 1.2.0 erlaubt zudem das Hosting eigener Root-Server. Jedoch lassen diese sich zum aktuellen Stand in iOS- und Android-Apps nicht nutzen.
Mit anderen Betriebssystemen bedarf dies auf allen beteiligten Nodes noch einiger Handarbeit. Jedoch versuchen die Nodes trotzdem noch, die Root-Server des Anbieters zu erreichen. Hier entscheidet das First-Come-First-Serve-Prinzip über die Antwortgeschwindigkeit. Lediglich mit entsprechenden Verträgen für größere Unternehmenskunden bietet ZeroTier die Möglichkeit einer exklusiven Nutzung der eigenen Root-Server.
Mögliche Einsatzszenarien
Durch seinen Peer-to-Peer-Aufbau und die Flexibilität der Zielplattformen positioniert sich ZeroTier als Alternative zu Site-to-Site- und Remote-Access-VPNs. Im Gegensatz zu klassischen Methoden bietet es durch gestretchte Layer-2-Netze ohne zusätzliche Komplexität wie bei VXLAN oder GENEVE einen interessanten Ansatz. Dies gilt auch für Multicloud-Umgebungen, falls es hier einer direkten Layer-2-Kommunikation wie bei geclusterten Umgebungen bedarf.
Aber auch für klassische geroutete Vernetzungen eignet sich ZeroTier. Durch die Initiierung aus dem internen Netz heraus ist es auch für Supportverbindungen wie Fernwartungen oder für ein Out-of-Band-Management interessant. Eingehende Firewallregeln oder Port-Forwardings sind im Normalfall nicht nötig. Somit müssen Sie auch kein Loch ins NAT bohren. Aber auch zur einfachen Vernetzung von Komponenten im Internet der Dinge bietet sich ZeroTier durch die simple Implementierung und den schlanken Unterbau an.
Interessant ist der vereinfachte SD-WAN-Ansatz, der sowohl Loadbalancing als auch Aktiv/Passiv-Failover von den zugrunde liegenden Underlay-Links unterstützt. Erweiterte Quality-of-Service-Maßnahmen und ein Monitoring der Dienstgüte oder dynamisches applikationsbasierendes Loadbalancing bietet ZeroTier jedoch nicht. Hier haben vollwertige SD-WAN-Produkte mehr im Angebot. Durch den zentralisierten Managementansatz ergeben sich jedoch interessante Optionen für die Anbindung von Drittanbieterwerkzeugen. So stehen neben einer Controller-API auch Integrationen für Kubernetes, Ansible und Terraform bereit.
Falls Sie sich nun fragen, ob sie ZeroTier auch in Ihren aktiven Netzwerkkomponenten nutzen können, sei gesagt, dass es seitens ZeroTier inzwischen einige Kooperationen mit Herstellern und entsprechende Implementierungen gibt. Unter anderem ist hier die Unterstützung für die Open-Source-Projekte OpenWRT und OPNsense zu nennen. Im kommerziellen Umfeld findet sich die Möglichkeit einer Verzahnung mit Komponenten von Synology, Ubiquiti Networks, QNAP, aber auch MikroTik.
Fazit
Administratoren, die ein leichtgewichtiges Werkzeug suchen, um gemanagte Netzwerke unabhängig vom zugrunde liegenden Transportmedium aufzubauen, finden in ZeroTier einen interessanten Ansatz. Das zentrale Management bei dezentralem Deployment überzeugt. Im Einsatzbereich von Remote-Access-VPNs fehlt jedoch die Option zur Integration von Zweifaktor-Authentifizierung auf Clientseite. Gleiches gilt auch für Tools zum Troubleshooting.
Der selbstgehostete Betrieb ist jedoch recht komplex. So stört, dass trotz eigenem Root-Server ein Kontakt zu den Root Nodes des Anbieters stattfindet. Auch die fehlende Möglichkeit, eigene Root-Server in den iOS- und Android-Apps zu nutzen, wirkt experimentell. Vollwertigen SD-WAN-Produkten kann ZeroTier ebenfalls keine Konkurrenz machen. Wer jedoch eine einfaches, schnell zu implementierendes VPN ohne die Notwendigkeit für Port-Forwardings und eingehende Firewallregeln sucht, findet hier eine interessante Alternative.