21 puntos por GN⁺ 2025-07-28 | 1 comentarios | Compartir por WhatsApp
  • Dumbpipe es una herramienta de estilo Unix que permite conectar un pipe de datos fácilmente entre dos computadoras
  • La instalación y el uso son muy simples, y no requieren cuenta ni configuración adicional
  • En una computadora, espera en modo receptor y proporciona una clave secreta y un comando de conexión
  • En la otra computadora, se pueden enviar datos y conectarse con una sola línea de comando
  • Funciona sin importar el entorno de red, así que puede usarse desde cualquier ubicación

Introducción a Dumbpipe

  • Una herramienta open source para intercambiar datos directamente entre dos computadoras, al estilo de un pipe de Unix
  • Como puede instalarse y ejecutarse en una sola línea sin configuraciones complejas, es práctica y muy accesible

Características principales

  • Después de instalarlo en una computadora, se puede entrar en modo de espera (recepción) con el comando ./dumbpipe listen
    • Al ejecutarlo, se genera automáticamente una clave secreta y se proporciona un comando de conexión dedicado para que la otra computadora pueda conectarse
  • El emisor puede enviar datos fácilmente con algo como echo "hello" | ./dumbpipe connect ...
  • No hace falta crear una cuenta
    • Se puede usar de inmediato, sin registro, inicio de sesión ni alta de datos de usuario
  • Funciona de inmediato sin configuración adicional
    • Puede usarse enseguida sin variables de entorno, archivos de configuración ni ajustes de firewall
  • Permite enviar y recibir datos entre dos dispositivos desde cualquier parte del mundo
    • Funciona sin limitaciones por entorno de red, ya sea red privada, nube o red local

Resumen del ejemplo de uso

  • El receptor ejecuta dumbpipe en modo listen y copia/compartе la clave y otros datos necesarios para la conexión
  • El emisor usa el comando connect con esa clave para transmitir los datos en forma de stream

Implicaciones prácticas

  • Incluso usuarios nuevos o con poca experiencia pueden armar fácilmente un pipeline de transferencia de datos por red
  • Puede aplicarse rápidamente a distintos usos, como envío de archivos o mensajes simples, relay de datos entre dispositivos, desarrollo y automatización de despliegues
  • Su comando único y flujo de trabajo intuitivo contribuyen a la productividad de los ingenieros

1 comentarios

 
GN⁺ 2025-07-28
Comentarios de Hacker News
  • Se presenta un método para intercambiar comandos de forma remota usando ssh y socat o mkfifo

    # receptor
    socat UNIX-RECV:/tmp/foobar - | my-command
    
    # emisor
    my-command | ssh host socat - UNIX-SENDTO:/tmp/foobar
    

    Si el destino está bloqueado por un firewall o NAT, se puede usar un servidor SSH público como ssh-j.com como relay para enviar y recibir datos de forma segura (usando túneles SSH dobles)

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

    Esto fue publicado originalmente en un hilo sobre beam enlace

    • Con una herramienta como spiped, se puede implementar de forma más simple sin depender de ssh sitio oficial de spiped
    • Este enfoque no cumple varios de los objetivos principales que describe dumbpipe. Por ejemplo, no usa QUIC, tampoco evita relays cuando es posible, y no tiene selección automática de relay ni mantenimiento de conexión ante cambios en la red. Además, el usuario tiene que gestionar por su cuenta las claves SSH, mientras que dumbpipe entrega una clave como una cadena ASCII arbitraria. WireGuard se parece más a dumbpipe
    • Primera frase del enlace de presentación de dumbpipe:
      Dumb pipe punches through NATs, using on-the-fly node identifiers. It even keeps your machines connected as network conditions change.
      
    • Si montas un servidor wg para conectar a dos clientes, puedes enviar datos a la IP de cada uno, pero al final un relay central sigue actuando como intermediario de los datos (haya NAT o no)
    • Apenas me enteré de que existe ssh-j.com, y está bastante interesante
  • Me pregunto por qué no es un estándar poder transferir archivos fácilmente entre dos PCs usando solo un cable USB. Si todos los sistemas operativos soportaran el mismo protocolo, parecería una función que debería haber existido desde el principio. Sé que en teoría no existe el cable USB A-A, pero justo eso refuerza la necesidad. Con USB C debería ser totalmente posible; entre Android y una PC se puede hasta cierto punto, pero entre dos laptops no

    • Al conectar dos dispositivos por USB-C (USB4/Thunderbolt), se crea una conexión de red. Por defecto solo reciben direcciones Link-Local, así que para usar SSH y similares puede ser un poco incómodo, pero con descubrimiento automático de red funciona bastante bien. Referencias: Thunderbolt Networking on Linux, respuesta en SuperUser
    • Incluso en el Nintendo DS ya existía una tecnología para hacerlo de forma inalámbrica, sin cables ni LAN. En los últimos 40 años el problema de transferir archivos se ha resuelto de incontables maneras, pero da la impresión de que algunas personas no quieren que se resuelva para siempre sin servicios en la nube. dumbpipe es interesante, pero podría chocar con las mismas barreras prácticas que tantas soluciones previas. Por ejemplo, si un usuario de Linux quiere pasarle un archivo de 50 MB a uno de Windows, no hay forma de recibirlo en Windows sin instalar un programa adicional
    • USB es estructuralmente asimétrico: hay hosts y dispositivos. El dispositivo funciona como esclavo por sondeo. La conexión directa por cable entre dos PCs ya era un problema resuelto por Ethernet incluso antes de USB
    • Antes de que TCP/IP se volviera el estándar universal, se transferían archivos grandes usando cables Ethernet cruzados. Hoy muchas PCs están eliminando el puerto Ethernet, y eso está relacionado con una visión que empuja a que el propietario suba sus archivos a computadoras de terceros en internet (la nube). Han aparecido muchos métodos de transferencia con el tiempo, pero el cable cruzado sigue funcionando perfectamente y basta con tener adaptadores USB a Ethernet. No hace falta software especial, router, internet ni terceros. Con TCP/IP es suficiente
    • En Linux se puede haciendo que el equipo cree un endpoint MTP como si fuera un dispositivo móvil uMTP-Responder
      Microsoft también sacó una herramienta para eso, pero al parecer solo estaba disponible para Windows CE enlace oficial de MS
  • Relacionado con eso, tengo una lista que armé de herramientas para transferir archivos (principalmente basadas en navegador y algo de CLI). La comparto cada vez que surge el tema y sigo buscando buenas herramientas para agregar mi lista de herramientas

    • Prefiero LocalSend. Es excelente para transferencias rápidas entre tus propios dispositivos y funciona bien en todos los sistemas operativos GitHub de LocalSend
    • El equipo que hizo dumbpipe también creó Sendme, que está mucho más orientado a este caso de uso GitHub de Sendme
  • Me pregunto cuánto trabajo duplicado hay entre dumbpipe y Tailscale. Parece que comparten muchas funciones necesarias, y da la impresión de que ya debería haber muchas librerías de bajo nivel reutilizables para cosas como atravesar NAT. O quizá esta sea la primera librería de ese tipo

    • Si nos ponemos estrictos, Tailscale también es como la implementación número 600 de la misma idea. Antes ya existían nebula, tinc y otros. Simplemente apareció en el momento en que WireGuard iba en ascenso y se benefició de una gran promoción más financiamiento de VC
    • Iroh es mucho más adecuado para la capa de aplicación. Permite multiplexar varios streams QUIC con distintos propósitos sobre una sola conexión. Solo necesitas acceso a QUIC, sin interfaz de red virtual. Un ejemplo parecido sería gRPC, pero aquí tienes libertad total sobre el control de byte streams: un stream puede ser una llamada de voz, otro transferencia de archivos y otro un RPC simple, todo dividido en tiempo real. Es lo más parecido a WebRTC, pero ofrece más opciones que SCTP o RTMP
    • Esto está hecho con iroh y apunta a ser un framework de bajo nivel para software distribuido. Además del networking, incluye varias estructuras de datos necesarias para replicación y consistencia de datos
    • Conectar un teléfono por Tailscale en móvil/cignat fue una de esas rarísimas experiencias de software de “ajá”
    • Pienso en tailscale como un wrapper basado en WireGuard con algunas funciones extra de hole punching
  • En pico.sh implementaron una función similar de transferencia de archivos usando SSH pipe.pico.sh

    • Me gustaría ver qué tal saldría una comparación directa con dumbpipe en rendimiento o usabilidad
  • Si te interesa el ecosistema de herramientas de túneles similares a esta, hay una lista awesome que vale la pena revisar awesome-tunneling

  • iroh es una tecnología realmente fantástica. Hace dos semanas asistí al workshop de Rüdiger (N0) en la web3 summit de Berlín y me dejó súper inspirado. El código para crear un servicio parecido está publicado aquí código de iroh-workshop; también recomiendo mucho revisar las diapositivas

  • Si quieres un pipe más avanzado, también tengo un CLI de gestor de túneles que estoy construyendo sobre Iroh. Soporta port forwarding para sockets TCP, UDP y UNIX qtm en GitLab

  • Este tipo de soluciones salen una o dos veces al año. Como buen open source enfocado en la orquestación de conexiones, recomiendo Spacebrew documentación oficial de Spacebrew

    • En ese sentido es cierto, pero el branding de este proyecto sí es realmente único. Literalmente tiene el concepto de un personaje humano “dumbpipe” con brazos ridículos. Y además simplemente funciona bien
    • "En 2023..."
  • Siempre me ha parecido especialmente interesante este método GitHub de pwnat
    No cubre todos los casos y es un poco más complejo, pero tiene la gran ventaja de no necesitar un intermediario

    • Es una solución bastante vieja y últimamente presenta problemas con algunos routers modernos enlace al issue
    • GitHub de slipstream es la versión nueva
    • Recién conocí este tipo de herramientas y de verdad parecen muy útiles. Eso sí, por las limitaciones estructurales del NAT, este enfoque también tiene la desventaja de permitir que software malicioso abra conexiones entrantes con facilidad ignorando reglas de firewall
    • Sobre todo, Samy es para mí una especie de héroe