21 Punkte von GN⁺ 2025-07-28 | 1 Kommentare | Auf WhatsApp teilen
  • Dumbpipe ist ein Unix-ähnliches Tool, das eine einfache Daten-Pipe-Verbindung zwischen zwei Computern ermöglicht
  • Installation und Nutzung sind sehr einfach, und es sind weder ein Konto noch zusätzliche Einrichtung erforderlich
  • Auf einem Computer wartet es im Empfängermodus und stellt einen geheimen Schlüssel sowie den Verbindungsbefehl bereit
  • Auf dem anderen Computer können Daten mit einer einzigen Befehlszeile gesendet und die Verbindung hergestellt werden
  • Es funktioniert unabhängig von der Netzwerkumgebung, sodass es überall eingesetzt werden kann

Einführung in Dumbpipe

  • Ein Open-Source-Tool, mit dem sich Daten direkt zwischen zwei Computern wie über eine Unix-Pipe austauschen lassen
  • Da Installation und Ausführung ohne komplizierte Einrichtung mit einer einzigen Zeile möglich sind, ist es praktisch und leicht zugänglich

Hauptmerkmale

  • Nach der Installation auf einem Computer kann mit dem Befehl ./dumbpipe listen der Warte- bzw. Empfangsmodus gestartet werden
    • Beim Start werden automatisch ein geheimer Schlüssel sowie ein dedizierter Verbindungsbefehl erzeugt, mit dem der andere Computer sich verbinden kann
  • Der Sender kann Daten einfach im Stil von echo "hello" | ./dumbpipe connect ... bequem übertragen
  • Kein separates Konto erforderlich
    • Sofort nutzbar ohne Registrierung, Login oder Eingabe persönlicher Daten
  • Ohne zusätzliche Konfiguration sofort einsatzbereit
    • Keine separaten Umgebungsvariablen, Konfigurationsdateien oder Firewall-Einstellungen notwendig
  • Weltweit Daten zwischen zwei Geräten senden und empfangen
    • Funktioniert ohne Einschränkungen durch die Netzwerkumgebung, etwa in privaten Netzen, in der Cloud oder im lokalen Netzwerk

Zusammenfassung des Einsatzbeispiels

  • Der Empfänger startet dumbpipe im Listen-Modus und kopiert bzw. übermittelt die für die Verbindung nötigen Schlüssel
  • Der Sender verwendet den Connect-Befehl mit dem entsprechenden Schlüssel, um Daten als Stream zu übertragen

Praktische Bedeutung

  • Auch neue oder weniger erfahrene Nutzer können damit leicht eine Pipeline für Netzwerk-Datenübertragung aufbauen
  • Schnell einsetzbar für viele Zwecke wie Datei- oder einfache Nachrichtenübertragung, Datenweiterleitung zwischen Geräten sowie Entwicklungs- und Deployment-Automatisierung
  • Ein einzelner Befehl und ein intuitiver Workflow steigern die Produktivität von Engineers

1 Kommentare

 
GN⁺ 2025-07-28
Hacker-News-Kommentare
  • Es wird eine Methode vorgestellt, mit der man mit ssh und socat oder mkfifo aus der Ferne Kommandos austauschen kann.

    # Empfänger
    socat UNIX-RECV:/tmp/foobar - | my-command
    
    # Sender
    my-command | ssh host socat - UNIX-SENDTO:/tmp/foobar
    

    Falls das Ziel durch eine Firewall oder NAT blockiert ist, kann man einen öffentlichen SSH-Server wie ssh-j.com als Relay nutzen, um Daten sicher zu senden und zu empfangen (mit doppeltem SSH-Tunneling).

    # Empfänger
    ssh top-secret@ssh-j.com -N -R ssh:22:localhost:22
    socat UNIX-RECV:/tmp/foobar - | my command
    
    # Sender
    my-command | ssh -J top-secret@ssh-j.com ssh socat - UNIX-SENDTO:/tmp/foobar
    

    Das ist ein Beitrag, der ursprünglich im beam-Thread gepostet wurde Link

    • Mit einem Tool namens spiped lässt sich das auch einfacher umsetzen, ohne SSH vorauszusetzen spiped offizielle Website
    • Dieser Ansatz erfüllt die zentralen Ziele, die dumbpipe beschreibt, nicht. Er verwendet zum Beispiel kein QUIC, vermeidet nach Möglichkeit keine Relays und bietet weder automatische Relay-Auswahl noch die Aufrechterhaltung der Verbindung bei Netzwerkänderungen. Außerdem muss der Nutzer SSH-Schlüssel selbst verwalten, während dumbpipe Schlüssel über beliebige ASCII-Zeichenfolgen bereitstellt. WireGuard ist dumbpipe ähnlicher
    • Der erste Satz im Einführungslink zu dumbpipe:
      Dumb pipe punches through NATs, using on-the-fly node identifiers. It even keeps your machines connected as network conditions change.
      
    • Wenn man einen wg-Server aufsetzt und zwei Clients verbindet, kann man Daten an die jeweiligen IPs senden, aber am Ende übernimmt dennoch ein zentrales Relay die Datenweiterleitung (unabhängig davon, ob NAT im Spiel ist)
    • Ich habe ssh-j.com erst jetzt entdeckt, ziemlich interessant
  • Ich frage mich, warum es kein Standard ist, mit nur einem USB-Kabel einfach Dateien zwischen zwei PCs auszutauschen. Wenn alle Betriebssysteme nur dasselbe Protokoll unterstützen würden, hätte das eigentlich von Anfang an eine Grundfunktion sein sollen. Mir ist klar, dass ein USB-A-zu-A-Kabel theoretisch nicht existiert, aber genau das spricht ja für den Bedarf. Mit USB-C müsste es doch möglich sein; zwischen Android und PC geht es teilweise, aber nicht zwischen zwei Laptops

    • Wenn man zwei Geräte per USB-C (USB4/Thunderbolt) verbindet, entsteht eine Netzwerkverbindung. Standardmäßig bekommt man aber nur Link-Local-Adressen, was für SSH usw. etwas umständlich ist; mit automatischer Netzwerkerkennung funktioniert es jedoch recht flüssig. Siehe: Thunderbolt Networking on Linux, SuperUser-Antwort
    • Eine drahtlose Lösung ohne Kabel und sogar ohne LAN gab es schon auf dem Nintendo DS. In den letzten 40 Jahren wurde das Problem der Dateiübertragung auf unzählige Arten gelöst, aber es wirkt fast so, als wollten manche Leute nie, dass dieses Problem ohne Cloud-Dienste endgültig gelöst wird. dumbpipe ist interessant, könnte aber an denselben praktischen Hürden scheitern wie viele bestehende Lösungen. Wenn etwa ein Linux-Nutzer einem Windows-Nutzer eine 50-MB-Datei schicken will, gibt es auf der Windows-Seite ohne Zusatzsoftware keinen Weg, sie zu empfangen
    • USB ist strukturell asymmetrisch, da es Host und Device trennt. Das Device arbeitet als per Polling gesteuerter Slave. Eine direkte kabelgebundene Verbindung zwischen zwei PCs war schon vor USB mit Ethernet gelöst
    • Vor TCP/IP als universellem Standard hat man große Dateien über Ethernet-Crossover-Kabel übertragen. Heute verschwindet der Ethernet-Port von vielen PCs, was mit der Tendenz zusammenhängt, Eigentümer dazu zu bringen, ihre Dateien auf Internetrechner Dritter (die Cloud) hochzuladen. Im Lauf der Zeit sind viele Wege zur Dateiübertragung entstanden, aber die Methode mit dem Crossover-Kabel funktioniert immer noch gut, und mit einem USB-zu-Ethernet-Adapter geht es ebenfalls. Keine spezielle Software, kein Router, kein Internet, keine Dritten nötig. TCP/IP allein reicht aus
    • Unter Linux geht es, wenn man wie bei mobilen Geräten einen MTP-Endpunkt erzeugt uMTP-Responder
      Microsoft hat dafür ebenfalls ein unterstützendes Tool veröffentlicht, aber offenbar nur für Windows CE MS offizieller Link
  • Dazu passend habe ich eine Liste von Dateiübertragungstools zusammengestellt (vor allem browserbasiert, plus etwas CLI). Ich teile sie immer wieder, wenn das Thema aufkommt, und suche laufend nach weiteren guten Tools meine Tool-Liste

    • Ich bevorzuge LocalSend. Es eignet sich hervorragend für schnelle Übertragungen zwischen eigenen Geräten und funktioniert auf allen Betriebssystemen gut LocalSend GitHub
    • Das Team hinter dumbpipe hat auch Sendme gebaut, das für diesen Zweck deutlich passender ausgelegt ist Sendme GitHub
  • Ich frage mich, wie viel Überschneidung es zwischen dumbpipe und Tailscale bei der Implementierung gibt. Es scheint viele gemeinsam benötigte Funktionen zu geben, und gerade auf niedriger Ebene wie beim NAT-Traversal dürfte es schon einige nutzbare Bibliotheken geben. Oder vielleicht ist das die erste Bibliothek dieser Art

    • Streng genommen ist auch Tailscale selbst nur die 600. Umsetzung derselben Idee. Davor gab es schon nebula, tinc und andere. Es kam einfach genau dann auf, als WireGuard populär wurde, und profitierte zusätzlich von großem Marketing und VC-Geld
    • Iroh ist viel besser für die Anwendungsschicht geeignet. Mehrere QUIC-Streams lassen sich innerhalb einer einzigen Verbindung zweckgebunden multiplexen. Man braucht nur Zugriff auf QUIC und keine virtuelle Netzwerkschnittstelle. Ein ähnliches Beispiel wäre gRPC, aber hier hat man freie Kontrolle über Byte-Streams und kann einen Stream für Sprachanrufe, einen anderen für Dateiübertragung und einen weiteren für einfache RPCs in Echtzeit aufteilen. Es ist WebRTC am ähnlichsten, bietet aber mehr Optionen als SCTP oder RTMP
    • Das hier wurde mit iroh gebaut und zielt auf ein Low-Level-Framework für verteilte Software ab. Es enthält neben dem Networking auch verschiedene Datenstrukturen für Datenreplikation und Konsistenz
    • Ein Handy über mobiles Netz/CGNAT mit Tailscale zu verbinden, war für mich eine dieser seltenen Software-„Aha“-Erfahrungen
    • Ich sehe Tailscale als einen auf WireGuard basierenden Wrapper mit etwas zusätzlichem Hole-Punching
  • Bei pico.sh wurde eine ähnliche Dateiübertragungsfunktion mit SSH umgesetzt pipe.pico.sh

    • Es würde mich interessieren, wie ein direkter Benchmark gegen dumbpipe bei Performance oder Bedienbarkeit ausfallen würde
  • Wer sich für das Ökosystem ähnlicher Tunneling-Tools interessiert, findet hier eine sehenswerte Awesome-Liste awesome-tunneling

  • iroh ist wirklich fantastische Technik. Ich habe vor zwei Wochen beim web3 summit in Berlin am Workshop von Rüdiger (N0) teilgenommen und war extrem inspiriert. Der Code für einen ähnlichen Dienst ist hier veröffentlicht iroh-workshop code Es lohnt sich auch, die Folien anzusehen

  • Wenn man eine etwas weiterentwickelte Pipe will, habe ich auch einen Tunnel-Manager-CLI in Arbeit, der auf Iroh basiert. Unterstützt TCP-, UDP- und UNIX-Socket-Port-Forwarding qtm GitLab

  • Solche Lösungen erscheinen ein- bis zweimal pro Jahr. Als gutes Open-Source-Projekt, das sich auf Verbindungsorchestrierung spezialisiert, empfehle ich Spacebrew Spacebrew offizielle Dokumentation

    • Das stimmt zwar in gewisser Weise, aber das Branding dieses Projekts ist wirklich einzigartig. Wörtlich eine Dumb-Pipe-Menschenfigur mit albernen Armen. Und außerdem funktioniert es einfach gut
    • „Im Jahr 2023 ...“
  • Ich fand diese Methode schon immer besonders interessant pwnat GitHub
    Sie deckt nicht alle Fälle ab und ist etwas komplexer, hat aber den großen Vorteil, keinen Vermittler in der Mitte zu brauchen

    • Das ist eine ziemlich alte Lösung, und bei manchen heutigen Routern gibt es wohl Probleme Issue-Link
    • slipstream GitHub ist die neuere Version
    • Ich habe solche Tools gerade erst kennengelernt, aber sie wirken wirklich nützlich. Allerdings hat dieser Ansatz wegen der Grenzen von NAT den Nachteil, dass Schadsoftware Firewall-Regeln umgehen und leicht eingehende Verbindungen öffnen kann
    • Vor allem ist Samy für mich eine Art Held