21 points par GN⁺ 2025-07-28 | 1 commentaires | Partager sur WhatsApp
  • Dumbpipe est un outil de style Unix qui permet de relier facilement un pipe de données entre deux ordinateurs
  • L’installation et l’utilisation sont très simples, sans compte ni configuration supplémentaire
  • Sur un ordinateur, il attend en mode récepteur et fournit une clé secrète ainsi qu’une commande de connexion
  • Sur l’autre ordinateur, il suffit d’une seule ligne de commande pour émettre et se connecter afin de transmettre les données
  • Il fonctionne quel que soit l’environnement réseau, ce qui permet de l’utiliser indépendamment du lieu

Présentation de Dumbpipe

  • Un outil open source permettant d’échanger directement des données entre deux ordinateurs, comme avec un pipe Unix
  • Il peut être installé et exécuté en une seule ligne sans configuration complexe, ce qui le rend pratique et très accessible

Principales caractéristiques

  • Après installation sur un ordinateur, la commande ./dumbpipe listen permet d’entrer en mode attente (réception)
    • Lors de l’exécution, une clé secrète générée automatiquement est fournie, ainsi qu’une commande de connexion dédiée utilisable depuis l’autre ordinateur
  • L’émetteur peut envoyer des données très simplement sous la forme echo "hello" | ./dumbpipe connect ...
  • Aucune création de compte n’est nécessaire
    • Utilisation immédiate, sans inscription, connexion ni enregistrement d’informations utilisateur
  • Fonctionne immédiatement sans configuration supplémentaire
    • Aucun besoin de variables d’environnement, de fichier de configuration ou de réglage de pare-feu
  • Échange de données entre deux appareils depuis n’importe où dans le monde
    • Fonctionne sans restriction liée à l’environnement réseau, qu’il s’agisse d’un réseau privé, du cloud ou d’un réseau local

Résumé de l’utilisation

  • Le récepteur lance dumbpipe en mode listen, puis copie et transmet les éléments nécessaires à la connexion, comme la clé
  • L’émetteur utilise la commande connect contenant cette clé pour envoyer les données sous forme de flux

Ce que cela implique

  • Même les nouveaux utilisateurs ou les personnes peu expérimentées peuvent facilement mettre en place un pipeline de transfert de données réseau
  • Peut être rapidement utilisé pour de nombreux usages, comme le transfert de fichiers ou de messages simples, le relais de données entre appareils, ainsi que l’automatisation du développement et du déploiement
  • Grâce à une commande unique et à un workflow intuitif, il contribue à la productivité des ingénieurs

1 commentaires

 
GN⁺ 2025-07-28
Avis Hacker News
  • Présentation d’une méthode pour échanger des commandes à distance avec ssh et socat ou mkfifo

    # récepteur
    socat UNIX-RECV:/tmp/foobar - | my-command
    
    # émetteur
    my-command | ssh host socat - UNIX-SENDTO:/tmp/foobar
    

    Si la cible est bloquée par un pare-feu ou un NAT, on peut utiliser un serveur SSH public comme ssh-j.com comme relais pour envoyer et recevoir des données de façon sécurisée (via un double tunnel SSH)

    # récepteur
    ssh top-secret@ssh-j.com -N -R ssh:22:localhost:22
    socat UNIX-RECV:/tmp/foobar - | my command
    
    # émetteur
    my-command | ssh -J top-secret@ssh-j.com ssh socat - UNIX-SENDTO:/tmp/foobar
    

    C’est le contenu que j’avais initialement publié dans un fil lié à beam lien

    • Avec un outil comme spiped, on peut obtenir une implémentation plus simple sans supposer l’usage de SSH site officiel de spiped
    • Cette approche ne remplit pas les principaux objectifs décrits par dumbpipe. Par exemple, elle n’utilise pas QUIC, n’évite pas non plus les relais quand c’est possible, et ne dispose ni de sélection automatique du relais ni de maintien de la connexion en cas de changement du réseau. En plus, la gestion des clés SSH doit être faite séparément par l’utilisateur, tandis que dumbpipe fournit une clé sous forme de chaîne ASCII arbitraire. WireGuard ressemble davantage à dumbpipe
    • Première phrase du lien de présentation de dumbpipe :
      Dumb pipe punches through NATs, using on-the-fly node identifiers. It even keeps your machines connected as network conditions change.
      
    • Si l’on déploie un serveur wg pour relier deux clients, on peut faire transiter les données vers leurs IP respectives, mais au final un relais central joue tout de même le rôle d’intermédiaire pour les données (qu’il y ait NAT ou non)
    • Je viens seulement de découvrir ssh-j.com, et c’est plutôt intéressant
  • Je me demande pourquoi le simple échange de fichiers entre deux PC via un câble USB n’est pas standard. Si tous les OS prenaient en charge le même protocole, on a l’impression que cela aurait dû exister depuis le tout début. Je sais bien qu’un câble USB A-A n’existe théoriquement pas, mais c’est justement en soi un argument montrant le besoin. Avec l’USB C, cela devrait être tout à fait possible ; c’est faisable dans une certaine mesure entre Android et un PC, mais pas entre deux ordinateurs portables

    • En reliant deux appareils via USB-C (USB4/Thunderbolt), une connexion réseau est créée. Par défaut on n’obtient que des adresses Link-Local, ce qui est un peu fastidieux pour utiliser SSH et autres, mais avec une découverte réseau automatique cela fonctionne plutôt bien. Références : Thunderbolt Networking on Linux, réponse SuperUser
    • Une technologie permettant cela en sans-fil, sans câble et même sans LAN, existait déjà sur la Nintendo DS. Depuis 40 ans, le problème du transfert de fichiers a été résolu d’innombrables fois de façons très diverses, mais on a parfois l’impression que certains ne veulent pas que ce problème soit définitivement réglé sans service cloud. dumbpipe est intéressant, mais il risque de se heurter aux mêmes obstacles concrets que les innombrables solutions existantes. Par exemple, même si un utilisateur Linux veut envoyer un fichier de 50 Mo à un utilisateur Windows, il n’y a aucun moyen pour ce dernier de le recevoir sans installer un programme supplémentaire
    • L’USB est structurellement asymétrique, avec une séparation entre hôte et périphérique. Le périphérique fonctionne comme un esclave interrogé par polling. La connexion filaire directe entre deux PC est un problème déjà résolu par Ethernet avant même l’USB
    • Avant que TCP/IP ne devienne le standard universel, on transférait de gros fichiers via des câbles Ethernet croisés. Aujourd’hui, beaucoup de PC suppriment le port Ethernet, un changement lié à une logique qui pousse le propriétaire à téléverser ses fichiers vers l’ordinateur Internet d’un tiers (le cloud). Avec le temps, les méthodes de transfert de fichiers se sont diversifiées, mais le câble croisé fonctionne toujours très bien, et un simple adaptateur USB vers Ethernet suffit. Pas besoin de logiciel spécial, de routeur, d’Internet ni de tiers. TCP/IP suffit largement
    • Sous Linux, c’est possible en créant un endpoint MTP comme sur un appareil mobile uMTP-Responder
      Microsoft a aussi publié un outil compatible, mais il semble qu’il n’ait été proposé que pour Windows CE lien officiel Microsoft
  • À ce sujet, j’ai une liste d’outils de transfert de fichiers (principalement basés sur le navigateur, avec un peu de CLI) que j’ai compilée. Je la partage selon les situations et je continue à y ajouter de bons outils ma liste d’outils

    • Je préfère LocalSend. Il est excellent pour les transferts rapides entre ses propres appareils et fonctionne bien sur tous les OS GitHub de LocalSend
    • L’équipe derrière dumbpipe a aussi créé Sendme, conçu bien plus directement pour cet usage GitHub de Sendme
  • Je me demande à quel point il y a duplication entre dumbpipe et Tailscale. Il semble y avoir beaucoup de fonctionnalités nécessaires en commun, et j’imagine qu’il existe déjà beaucoup de bibliothèques de bas niveau réutilisables, notamment pour la traversée de NAT. Ou bien c’est peut-être la première bibliothèque de ce genre

    • À vrai dire, même Tailscale est en quelque sorte la 600e implémentation de la même idée. Avant lui, il y avait déjà nebula, tinc, etc. Il a simplement émergé au moment où WireGuard gagnait en importance, avec en plus une grosse promotion et des financements VC
    • Iroh est bien mieux adapté à la couche applicative. On peut multiplexer plusieurs flux QUIC sur une seule connexion selon leur usage. Il suffit d’avoir accès à QUIC, sans nécessiter d’interface réseau virtuelle. Un exemple similaire serait gRPC, mais avec un contrôle libre du byte stream, ce qui permet d’utiliser en temps réel un flux pour un appel vocal, un autre pour un transfert de fichiers, un autre encore pour de simples RPC, etc. C’est ce qui se rapproche le plus de WebRTC, mais avec davantage d’options que SCTP ou RTMP
    • Ceci est construit avec iroh et vise à devenir un framework de bas niveau pour les logiciels distribués. En plus du networking, il inclut diverses structures de données nécessaires à la réplication et au maintien de la cohérence des données
    • Le fait d’avoir connecté mon téléphone via Tailscale en mobilité/cignat a été une expérience logicielle de type « ah oui ! » vraiment rare
    • Je considère tailscale comme un wrapper autour de WireGuard avec quelques fonctions supplémentaires de hole punching
  • Chez pico.sh, une fonction similaire de transfert de fichiers a été implémentée avec SSH pipe.pico.sh

    • Je me demande ce que donnerait une comparaison directe avec dumbpipe en matière de performances et d’ergonomie
  • Si l’écosystème des outils de tunnelisation similaires vous intéresse, il existe une awesome list utile à consulter awesome-tunneling

  • iroh est une technologie absolument fantastique. J’ai participé il y a deux semaines à l’atelier de Rüdiger (N0) au web3 summit de Berlin, et j’en suis sorti profondément inspiré. Le code pour construire un service similaire est publié ici code de l’atelier iroh et je recommande vivement de jeter aussi un œil aux slides

  • Si vous voulez un pipe plus avancé, j’ai aussi un CLI de gestion de tunnels que je suis en train de construire sur Iroh. Il prend en charge le port forwarding TCP, UDP et sockets UNIX qtm sur GitLab

  • Ce genre de solution sort une ou deux fois par an. Comme bon open source spécialisé dans l’orchestration de connexions, je recommande Spacebrew documentation officielle de Spacebrew

    • C’est vrai d’un certain point de vue, mais le branding de ce projet est vraiment unique. Littéralement un personnage dumbpipe avec des bras ridicules. Et en plus, ça marche tout simplement très bien
    • « En 2023… »
  • J’ai toujours trouvé cette méthode particulièrement intéressante GitHub de pwnat
    Elle ne couvre pas tous les cas et elle est un peu plus complexe, mais son plus grand avantage est qu’elle ne nécessite aucun intermédiaire

    • C’est une solution assez ancienne, et elle rencontre parfois des problèmes avec certains routeurs récents lien vers l’issue
    • GitHub de slipstream en est la version plus récente
    • Je découvre ce genre d’outil pour la première fois et ça a l’air vraiment exploitable. Cela dit, à cause des limites structurelles du NAT, cette approche a aussi l’inconvénient de permettre à des logiciels malveillants d’ouvrir facilement des connexions entrantes en contournant les règles du pare-feu
    • Plus que tout, Samy est pour moi une sorte de héros