Original-URL des Artikels: https://www.golem.de/news/syncthing-im-test-p2p-synchronisierung-leicht-gemacht-1407-107904.html    Veröffentlicht: 16.07.2014 12:00    Kurz-URL: https://glm.io/107904

Syncthing im Test

P2P-Synchronisierung leicht gemacht

Syncthing soll eine sichere und vor allem einfache Synchronisierung zwischen Rechnern bieten - ausgerechnet über UPnP. Wir haben es uns angeschaut.

Eines vorweg: Syncthing befindet sich noch in der Betaphase und offenbart die ein oder andere Macke. Wir halten die Synchronisierungssoftware trotzdem für vielversprechend und haben sie deshalb getestet. Syncthing verspricht eine kinderleichte Konfiguration, die Verbindung soll selbst ohne Änderungen am Router auch über das Internet funktionieren, der allerdings UPnP unterstützen muss.

Die Konfiguration erfolgt über eine webbasierte Benutzeroberfläche, die sich automatisch im Browser öffnet, nachdem die Syncthing-Software gestartet wurde. Beim ersten Aufruf generiert die Software die benötigten Zertifikate und Schlüssel für eine TLS-Verbindung zu anderen Clients und erstellt automatisch den Ordner Sync, in dem zunächst zu synchronisierende Dateien abgelegt werden können. Windows verlangt beim ersten Start der Software eine Änderung in den Firewall-Einstellungen, der wir zustimmen.

Lange IDs für sichere Verbindungen

Die Software muss auf jedem Rechner vorhanden und gestartet sein, der Teil des Synchronisierungsnetzwerks werden soll. Jeder Client erhält eine eindeutige Identifikationsnummer, die im Drop-down-Menü unter der Schaltfläche Edit rechts oben im Webinterface über den Eintrag Show ID angezeigt werden kann. Diese 46-stellige alphanumerische Zeichenkette muss auf dem entfernten Rechner unter Edit, Add Node eingegeben werden. Die ID ist ein SHA-256-Hashwert, der aus den Zertifikatsinformationen errechnet wird.

Syncthing nutzt für die Synchronisierung P2P, jeder Client ist also ein Knoten - Node - in einem dezentralen Netzwerk. Wenige Sekunden, nachdem ein Node auf einem anderen Rechner konfiguriert wurde, taucht dieser im Webinterface auf. Die IP-Adresse wird anhand der im Netz veröffentlichten ID ermittelt. Hier können mehrere Optionen genutzt werden. Syncthing stellt den globalen Server announce.syncthing.net zur Verfügung, der die Verbindungen vermittelt. Daten werden darüber nicht ausgetauscht.

Globaler Vermittlungsserver

Der globale Server ist dann notwendig, wenn Verbindungen zwischen Nodes auch über das Internet erfolgen sollen. Ob er erreichbar ist, lässt sich im Webinterface unter Announce Server einsehen. Es ist auch möglich, einen eigenen Announce Server aufzusetzen. Er übermittelt nur die öffentliche und nicht die interne IP-Adresse, etwa wenn der Client hinter einem NAT-Router steht. Damit die Verbindungen auch durch die Firewall eines Routers funktionieren, muss dieser UPnP unterstützen. Getestet haben wir das mit einem Speedport W 921V der Telekom, der UPnP AV unterstützt. Dort waren keine weiteren Konfigurationsschritte nötig.

Allerdings funktionierten die Zugriffe auf den Rechner hinter dem Router nicht immer zuverlässig. Während eine externe Verbindung über UMTS beziehungsweise LTE im Telekom-Netz hergestellt wurde, klappte das aus einem anderen Telekom-Netzwerk nicht. Im Heimnetzwerk hatten wir hingegen gar keine Probleme, die Rechner zu verbinden.

Eigenes P2P-Protokoll

Alternativ lässt sich wahlweise ein Hostname, eine IP- oder DDNS-Adresse festlegen, über die der Node erreichbar sein soll. Letztere Optionen sind dann nötig, wenn der Router kein UPnP unterstützt. Dann muss aber auch der Port 22000/TCP in der Firewall des Routers geöffnet werden, an dem das quelloffene Syncthing-Protokoll lauscht. Sollen die Rechner ausschließlich im lokalen Netzwerk synchronisiert werden, wird lediglich die Option Local Discovery benötigt.

Jeder Syncthing-Node sendet in regelmäßigen Abständen seine ID. Ist diese einem anderen Node bekannt, wird eine Verbindung hergestellt. Erst wenn im lokalen Netzwerk über Port 21025/UDP kein Node auffindbar ist, versucht Syncthing, den globalen Server zu kontaktieren. Diese globalen Optionen lassen sich über das Edit-Drop-down-Menü unter Settings ein- und ausschalten. Standardmäßig sind sowohl Local als auch Global Discovery sowie die Verbindung über UPnP aktiviert. Die IP- oder DDNS-Adresse sowie der Hostname eines lokalen oder entfernten Knotens werden über die Schaltfläche Edit unter den jeweiligen Rechnernamen festgelegt, die dem Synchronisierungsnetzwerk angehören.

Ordner einrichten, Master sein

In den globalen Optionen lässt sich auch festlegen, wie oft ein Scan der zu synchronisierenden Verzeichnisse erfolgen soll, wie hoch die Datentransferrate sein soll oder ob das lokale Webinterface nur mit einem Passwort erreichbar sein soll. Sämtliche Einstellungen werden in der Textdatei config.xml gespeichert, die zusammen mit Zertifikat und Schlüssel unter Linux im Home-Verzeichnis unter ./config/syncthing abgespeichert wird. Unter Windows liegen sie im versteckten Benutzerverzeichnis Lokale Einstellungen.

Neben dem standardmäßig eingerichteten Sync-Verzeichnis lassen sich auch weitere Ordner zur Synchronisierung freigeben. Dazu wird im globalen Edit-Menü die Option Add Repository ausgewählt. Unter Repository ID wird ein beliebiger Name vergeben, darunter, unter Repository Path, wird der Pfad zum freigegebenen Verzeichnis festgelegt. Das zu synchronisierende Repository muss auf allen Rechnern eingerichtet und der ID-Name identisch sein. Das Repository darf aber auf dem jeweiligen Rechner auf ein anderes Verzeichnis verweisen.

Versionierung

Darunter gibt es etliche Optionen, mit denen die Synchronisierung gesteuert werden kann. Sind alle Nodes gleichwertig im Netz, wirken sich die Änderungen auf einem Node auch auf die anderen aus. Wird also im Sync-Ordner eines Rechners eine Datei gelöscht, verschwindet sie auch auf allen anderen. Wird stattdessen die Option Repository Master ausgewählt, bleiben Dateien, die auf anderen Nodes in dem Ordner gelöscht werden, auf diesem Master-Node erhalten. Erst wenn sie dort gelöscht werden, wirkt sich das auf alle anderen Nodes aus. Sind zwei oder mehr Repositories als Master definiert, wird zwischen diesen keine Synchronisierung mehr stattfinden, also werden weder Dateien gelöscht noch hinzugefügt.

Unter File Versioning lässt sich eine Versionierung aktivieren, die eine festzulegende Anzahl von Sicherheitskopien von Dateien anlegt, an denen Änderungen vorgenommen wurden. Die früheren Versionen werden im jeweiligen Verzeichnis im versteckten Ordner .stversions abgelegt und müssen im Bedarfsfall händisch von dort wiederhergestellt werden. Für Linux und Unix-Benutzer gibt es zusätzlich die Option, die Zugriffsberechtigungen für Dateien zu ignorieren. Damit wird das Synchronisieren von Dateien auf FAT-Datenträgern ermöglicht. Schließlich lässt sich unter Share with Nodes festlegen, mit welchen Rechnern im Synchronisierungsnetzwerk der jeweilige Ordner abgeglichen werden soll.

Wackelige App

Es gibt bereits eine App für Android, die sich allerdings in einem sehr frühen Entwicklungsstadium befindet, wie die Entwickler auch selbst anmerken. Dort wird automatisch das Verzeichnis zum Synchronisieren freigegeben, in dem die Smartphone-Kamera die Aufnahmen ablegt. Darüber lassen sich auch die IDs anderer Nodes per QR-Code einlesen. Auch hier klappte die Verbindung jedoch nicht. Der Client auf einem entfernten Rechner meldete stets, die Verbindung sei wegen eines Unexpected EOF (End of File) abgebrochen.

Fazit

Auf den ersten Blick macht Syncthing einen guten Eindruck. Es bringt alle Kriterien einer sicherheitsrelevanten Software mit: Der Quellcode liegt vollkommen offen, die Entwickler arbeiten transparent und es gibt häufige Updates.

Die Dokumentation hingegen ist noch dürftig beziehungsweise unübersichtlich auf zu viele Seiten verteilt. Hier wäre ein Wiki besser, als die Informationen in Form von Fragen und Antworten in einer Forumssoftware zu verteilen. Es gibt zwar eine ordentliche Einführung, die FAQs sind aber eher dürftig und die meisten Einträge erklären, wie Syncthing automatisch auf diversen Betriebssystemen gestartet werden kann. Die mangelhafte Dokumentation macht es auch schwer, die Software zu debuggen oder bei Fehlern an der richtigen Stelle zu suchen.

Warum die Entwickler standardmäßig das als unsicher geltende UPnP einsetzen wollen, ist ebenfalls nicht ganz nachvollziehbar. Sicherlich gilt UPnP als leicht zu konfigurieren, in den meisten Routern dürfte es aber abgeschaltet sein. Viele unterstützen UPnP gar nicht erst. Immerhin gibt es die Ausweichmöglichkeit, die Verbindungen per DDNS oder statischer IP-Adresse zu konfigurieren. Vielleicht sollten die Entwickler beim ersten Aufruf nochmals explizit auf UPnP hinweisen und die Alternativen samt Konfiguration des Routers genauer erklären.

Syncthing ist noch in der Betaphase. In den zwei Wochen unseres Versuchs gab es bereits zwei Updates. An der Kernfunktion der Software - der Synchronisierung - gibt es nichts zu beanstanden. Auch die etwas längeren Wartezeiten, bis sich zwei Rechner im Netz gefunden haben, sind bei P2P-Netzwerken durchaus üblich. Die Zeit kann softwareseitig noch verkürzt werden. Die kleinen Macken in der Weboberfläche, etwa dass ein zu synchronisierendes Verzeichnis noch händisch eingetragen werden muss, werden hoffentlich in einer der nächsten Versionen ebenfalls noch behoben.

Syncthing Clients gibt es für Windows, Mac OS X und Linux. Die Software steht unter der MIT-Lizenz.  (jt)


Verwandte Artikel:
Palava TV: P2P-Videokonferenz verschlüsselt und quelloffen   
(28.12.2013, https://glm.io/103609 )
Deep Shot: Computer und Smartphone mit der Kamera synchronisieren   
(17.06.2011, https://glm.io/84288 )
Bittorrent: The Pirate Bay muss erneut umziehen   
(11.12.2013, https://glm.io/103327 )
Allseen Alliance: Auf dem Weg zur einheitlichen Vernetzung aller Geräte   
(10.12.2013, https://glm.io/103275 )
LG mit Alljoyn: Spiele auf dem Smart TV per Handy steuern   
(04.12.2013, https://glm.io/103149 )

© 1997–2018 Golem.de, https://www.golem.de/