Aufbau eines Meshwork-Netzwerks

Die Konfiguration von Meshwork läuft darauf hinaus, dass jeder Knoten seinen eigenen Namen und seine Domain kennt und mindestens einen erreichbaren Peer hat. Anschließend baut die Domain die übrigen Verbindungen selbst auf. Alle Aktionen werden im Web-Adminbereich durchgeführt; das Ändern der Meshwork-Einstellungen erfordert die Administratorrolle. Die genauen Felder und ihre Position sind im Abschnitt Weboberfläche beschrieben.

Anforderungen und Erreichbarkeit

  • Netzwerk-Erreichbarkeit. Ein Knoten muss in der Lage sein, eine TCP-Verbindung zum administrativen Webserver eines Peers herzustellen. Der Port wird der Adresse des Peers („Host:Port“) entnommen oder dem öffentlichen Port, den der Peer über sich selbst meldet (Knotenidentität) — es ist immer der Port, auf dem sein Webserver konfiguriert ist, und bei aktiviertem HTTPS auf dem Peer dessen TLS-Port. Die Werte für eine frische Installation sind in Anfangseinstellungen aufgeführt; der benötigte Port eines Peers muss von den anderen Knoten aus geöffnet sein.

  • HTTPS für die automatische Erkennung über das Internet. Wenn automatisch erkannte Domain-Knoten über öffentliche (Internet-)Adressen kommunizieren, müssen sie untereinander eine sichere Verbindung (HTTPS) herstellen, um die Authentizität des jeweils anderen über das offene Netz sicher zu bestätigen. Aktivieren Sie HTTPS daher zumindest auf den Knoten, über die die Erkennung erfolgt. Die Aktivierung von HTTPS wird nach einem Neustart des Servers wirksam. Wenn Knoten nur über öffentliche Adressen erreichbar sind und keiner per HTTPS läuft, werden direkte automatisch erkannte Verbindungen nicht authentifiziert: Der Knoten ist dennoch sichtbar (über Relay von einem Peer), seine direkte Verbindung wird jedoch mit einer Ursache gekennzeichnet (siehe Netzwerkkarte und Ressourcenkatalog).

  • Lokales Netzwerk — HTTPS nicht erforderlich. Wenn Domain-Knoten über private Adressen eines einzigen vertrauenswürdigen Netzwerks kommunizieren (10.x.x.x, 172.16–31.x.x, 192.168.x.x sowie 127.x.x.x und 169.254.x.x), ist eine sichere Verbindung für die automatische Erkennung nicht erforderlich — die Knoten bestätigen die Authentizität auch über einfaches HTTP. Ein Knoten wird anhand seiner IP-Adresse als lokal erkannt, geben Sie Peers im lokalen Netzwerk daher gezielt über IP-Adressen und nicht über Domainnamen an. HTTPS kann dabei aktiviert werden — es wird verwendet, sofern verfügbar.

  • Eine explizite Verbindung funktioniert auch über HTTP — die HTTPS-Anforderung gilt für sie in keinem Fall.

  • Name und Secret sind obligatorisch. Ein Knoten nimmt nur dann am Netzwerk teil, wenn für ihn ein Name und ein Signatur-Secret festgelegt sind. Ohne Namen oder ohne Secret nimmt ein Knoten nicht an Meshwork teil.

  • Namensbeschränkungen. Ein Knotenname umfasst 2 bis 16 Zeichen, ein Domainname ist höchstens 16 Zeichen lang; erlaubt sind lateinische Buchstaben, Ziffern und die Zeichen _, -, .. Leerzeichen und andere Zeichen sind nicht zulässig (zum Beispiel lässt sich die Domain „Alex Home“ nicht festlegen — verwenden Sie Alex_Home).

Knotenidentität

In den Servereinstellungen wird festgelegt, als was sich der Knoten im Netzwerk darstellt:

  • Knotenname — ein kurzer, eindeutiger Name, an dem die anderen den Knoten erkennen. Ein leerer Name bedeutet, dass der Knoten nicht am Netzwerk teilnimmt.

  • Notiz — eine beliebige Beschriftung des Knotens (zum Beispiel „Moskau, Rack 3“), wird im Adminbereich zur Übersicht angezeigt und hat keinen Einfluss auf den Netzwerkbetrieb.

  • Domain — Knoten mit derselben Domain finden sich automatisch, teilen sich einen gemeinsamen Ressourcenkatalog und replizieren Alerts. Ein leerer Wert deaktiviert die automatische Erkennung (der Knoten kann nur über die explizite Peer-Liste arbeiten).

  • Öffentliche Ports (HTTP und HTTPS) — die Ports, die der Knoten den Peers für die Rück-Erreichbarkeit bei Adressübersetzung (NAT) mitteilt. Sind sie nicht festgelegt, meldet der Knoten seine eigenen Webserver-Ports.

  • Zusätzliche Domains (super-node-Modus) — der Knoten nimmt an der automatischen Erkennung jeder aufgeführten Domain gleichberechtigt mit der Hauptdomain teil. Die Ressourcen bleiben je Domain isoliert — der Knoten vermischt sie nicht.

Peers und Secrets

Hier wird festgelegt, mit welchen Peers der Knoten eine direkte Verbindung unterhält und wie die Seiten einander überprüfen. Anfragen zwischen Knoten werden mit einem gemeinsamen Secret signiert, daher kommt ohne übereinstimmende Secrets keine Verbindung zustande. Die Länge jedes Secrets beträgt 16 bis 128 Zeichen.

Die Peer-Liste besteht aus Einträgen der Form „Adresse — Name — Secret“:

  • Adresse eines Peers — der „Host:Port“ seines Adminbereichs. Ein Eintrag darf ohne Adresse sein: Ein solcher Peer wird von diesem Knoten nie kontaktiert (er wählt sich nur selbst ein) und wird anhand von Namen und Secret erkannt — dies wird für einen Knoten hinter NAT verwendet, der nur eine Verbindung initiieren kann.

  • Name eines Peers muss exakt mit dem Namen übereinstimmen, der auf dem Peer selbst festgelegt ist.

  • Gemeinsames Secret der Verbindung mit diesem Peer muss an beiden Enden identisch sein.

Neben der Peer-Liste besitzt ein Knoten sein eigenes Signatur-Secret: Damit signiert der Knoten seine ausgehenden Anfragen. Ein Peer überprüft die Signatur mit dem Secret, das er für diesen Knoten speichert, daher muss das eigene Secret des Knotens mit dem Secret übereinstimmen, das bei jedem Peer über ihn hinterlegt ist.

Bemerkung

Eine praktische Regel: Legen Sie für einen einfachen Standort ein gemeinsames Secret fest und verwenden Sie es sowohl als eigenes Signatur-Secret auf jedem Knoten als auch als Secret in jedem Peer-Eintrag — dann authentifiziert sich jedes Knotenpaar auf dieselbe Weise. Für eine strengere Trennung können Sie pro Verbindung ein separates Secret führen.

Schnellstart

Variante A. Zwei Knoten direkt (explizite Verbindung)

Das einfachste Meshwork sind zwei manuell verbundene Server.

  1. Legen Sie auf jedem Knoten einen eindeutigen kurzen Namen fest (zum Beispiel node1 und node2).

  2. Fügen Sie auf jedem Knoten einen Peer-Eintrag hinzu: die Adresse seines Adminbereichs, seinen Namen und das gemeinsame Secret.

  3. Legen Sie auf jedem Knoten das eigene Signatur-Secret fest. Am einfachsten ist es, ein einziges gemeinsames Secret für beide Knoten zu führen.

  4. Öffnen Sie die Netzwerkkarte im Adminbereich. Innerhalb weniger Sekunden sehen beide Knoten einander im Zustand „online“.

Eine Domain muss dabei nicht festgelegt werden, aber ohne gemeinsame Domain erhalten Sie nur die gegenseitige Sichtbarkeit der Knoten. Der gemeinsame Ressourcenkatalog und die Alert-Replikation funktionieren nur zwischen Knoten mit derselben Domain — falls Sie sie benötigen, legen Sie für die Knoten eine gemeinsame Domain fest (Variante B).

Variante B. Eine Domain mit automatischer Erkennung

Bei mehr als zwei Knoten ist es bequemer, ihnen eine gemeinsame Domain zuzuweisen, als jede Verbindung manuell aufzulisten.

  1. Legen Sie auf jedem Knoten einen eindeutigen Namen und die gemeinsame Standort-Domain fest.

  2. Wenn Domain-Knoten über das Internet kommunizieren (über öffentliche Adressen), aktivieren Sie HTTPS auf mindestens ein bis zwei Domain-Knoten und starten Sie diese neu (siehe Anforderungen und Erreichbarkeit). In einem lokalen Netzwerk kann dieser Schritt übersprungen werden.

  3. Verbinden Sie die Knoten über einen „Einstiegspunkt“: Geben Sie auf jedem Knoten mindestens einen bereits funktionierenden Peer an (Adresse, Name, gemeinsames Secret), wie in Variante A. Die übrigen Domain-Knoten findet der Knoten selbst.

  4. Öffnen Sie die Netzwerkkarte. Innerhalb weniger Sekunden erscheinen darauf alle Domain-Knoten: die explizit angegebenen als permanent, die automatisch gefundenen als automatisch erkannt.

Knoten hinter NAT

Ein Knoten in einem privaten Netzwerk, der von außen nicht direkt erreichbar ist, kann als Initiator vollwertig am Netzwerk teilnehmen. Er stellt selbst eine Verbindung zu einem erreichbaren Peer her, und über diese eine Verbindung fließen die Daten in beide Richtungen — der Knoten meldet sich sowohl selbst als auch erhält Informationen über andere. Für einen solchen Knoten genügt es, mindestens einen erreichbaren Peer anzugeben.

Informationen über einen NAT-Knoten verbreiten sich automatisch über die Domain: Ein Peer, der mit ihm online ist, leitet seinen Zustand per Relay an die anderen weiter. Bei entfernten Peers wird ein solcher Knoten als über Relay erhalten angezeigt, jedoch im Zustand „online“.

Damit ein Knoten hinter NAT auch für eingehende Verbindungen erreichbar ist (zum Beispiel als Einstiegspunkt der Domain dient), konfigurieren Sie die Veröffentlichung des öffentlichen Ports (siehe Knotenidentität) und leiten Sie diesen Port auf dem Router/der Firewall an den administrativen Webserver des Knotens weiter. Auf Seiten der Peers wird ein solcher Knoten als Eintrag „Name + Secret ohne Adresse“ geführt: Der Peer versucht nicht vergeblich, die private Adresse zu erreichen, sondern erkennt den Knoten anhand von Namen und Secret, wenn dieser sich selbst verbindet.

Typische Probleme

  • Die Knoten sehen einander nicht. Prüfen Sie: Bei beiden ist ein Knotenname festgelegt; jeder hat ein Signatur-Secret und es stimmt mit dem überein, das beim Peer über ihn hinterlegt ist; die Adresse des Peers ist korrekt und sein Admin-Port ist vom anderen Knoten aus geöffnet.

  • Ein Peer ist im Zustand „offline“. Der Knoten hat das Wartefenster überschritten: Prüfen Sie das Netzwerk und die Funktionsfähigkeit seines Webservers. Stellen Sie bei einem Knoten hinter NAT sicher, dass er die Verbindung zu einem erreichbaren Peer selbst initiiert oder dass Portveröffentlichung und Portweiterleitung konfiguriert sind.

  • Ein automatisch erkannter Peer ist mit einer Ursache gekennzeichnet, die direkte Verbindung funktioniert nicht. In der Domain lässt sich die Authentizität der Knoten nicht bestätigen. Wenn sie über das Internet kommunizieren, aktivieren Sie HTTPS auf mindestens einem Domain-Knoten und starten Sie ihn neu; prüfen Sie in einem lokalen Netzwerk, dass Peers über IP-Adressen und nicht über Domainnamen angegeben sind. Über eine explizite Verbindung (permanente Knoten) funktioniert die Verbindung auch ohne HTTPS.

  • Falsche NAT-Kennzeichnung. Wenn Knoten über Domainnamen und nicht über IP angegeben sind, lässt sich die NAT-Kennzeichnung möglicherweise nicht anhand der Adresse ermitteln — dies beeinträchtigt den Betrieb nicht. Verwenden Sie für eine zuverlässige NAT-Diagnose IP-Adressen.

  • Der Domainwechsel hat die Karte „zurückgesetzt“. Das Ändern der Domain oder der Menge zusätzlicher Domains baut die Mitgliedschaft neu auf: Automatisch erkannte Verbindungen und der gemeinsame Katalog werden vorübergehend zurückgesetzt und neu aufgebaut. Das ist normal.