21 पॉइंट द्वारा GN⁺ 2025-07-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Dumbpipe दो कंप्यूटरों के बीच आसानी से डेटा पाइप कनेक्शन बनाने वाला एक Unix-style टूल है
  • इसे इंस्टॉल और इस्तेमाल करना बहुत आसान है, और किसी अकाउंट या अलग सेटअप की ज़रूरत नहीं होती
  • एक कंप्यूटर पर यह receiver mode में इंतज़ार करता है और secret key व connection command देता है
  • दूसरे कंप्यूटर पर एक लाइन के command से भेजना और कनेक्ट करना संभव है, जिससे डेटा ट्रांसफ़र किया जा सकता है
  • यह नेटवर्क environment की परवाह किए बिना काम करता है, इसलिए लोकेशन से स्वतंत्र रूप से इस्तेमाल किया जा सकता है

Dumbpipe परिचय

  • यह दो कंप्यूटरों के बीच Unix pipe की तरह सीधे डेटा भेजने और पाने की सुविधा देने वाला open source टूल है
  • बिना जटिल सेटअप के एक लाइन में इंस्टॉल और रन किया जा सकता है, इसलिए यह व्यावहारिक और आसानी से सुलभ है

मुख्य विशेषताएँ

  • एक कंप्यूटर पर इंस्टॉल करने के बाद ./dumbpipe listen कमांड से waiting (receiving) mode में जाया जा सकता है
    • रन करते ही अपने-आप बने secret key के साथ, दूसरे कंप्यूटर से कनेक्ट करने के लिए dedicated connection command दिया जाता है
  • sender echo "hello" | ./dumbpipe connect ... के रूप में आसानी से डेटा भेज सकता है
  • अलग से अकाउंट बनाने की ज़रूरत नहीं
    • signup, login या सदस्य जानकारी दर्ज किए बिना तुरंत इस्तेमाल किया जा सकता है
  • बिना अतिरिक्त सेटअप के तुरंत काम करता है
    • अलग environment variables, config file या firewall setting के बिना सीधे इस्तेमाल किया जा सकता है
  • दुनिया में कहीं से भी दो डिवाइसों के बीच डेटा भेजना और पाना संभव
    • private network, cloud, local network आदि किसी भी नेटवर्क environment की सीमा के बिना काम करता है

उपयोग का संक्षिप्त उदाहरण

  • receiver dumbpipe को listen mode में चलाता है और कनेक्शन के लिए ज़रूरी key आदि कॉपी करके साझा करता है
  • sender उस key वाले connect command का इस्तेमाल करके डेटा को stream के रूप में भेजता है

उपयोगिता के संकेत

  • नए उपयोगकर्ता या कम अनुभवी लोग भी आसानी से नेटवर्क डेटा ट्रांसफ़र pipeline बना सकते हैं
  • फ़ाइल या छोटे संदेश भेजने, डिवाइसों के बीच डेटा relay, development और deployment automation जैसे कई कामों में इसे जल्दी इस्तेमाल किया जा सकता है
  • एक ही command और सहज workflow के ज़रिए यह engineer productivity बढ़ाने में मदद करता है

1 टिप्पणियां

 
GN⁺ 2025-07-28
Hacker News राय
  • ssh और socat या mkfifo का उपयोग करके रिमोट तौर पर कमांड भेजने और प्राप्त करने के तरीके का परिचय दिया गया है

    # 수신자
    socat UNIX-RECV:/tmp/foobar - | my-command
    
    # 송신자
    my-command | ssh host socat - UNIX-SENDTO:/tmp/foobar
    

    अगर लक्ष्य firewall या NAT के पीछे फंसा हो, तो ssh-j.com जैसे public SSH server को relay की तरह इस्तेमाल करके सुरक्षित रूप से डेटा भेजा और प्राप्त किया जा सकता है (double SSH tunneling का उपयोग)

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

    यह वही सामग्री है जो पहले beam से जुड़े थ्रेड में पोस्ट की गई थी लिंक

    • spiped नाम के टूल का उपयोग करने पर ssh को आधार मानने की भी जरूरत नहीं पड़ती, और इसे और सरल तरीके से लागू किया जा सकता है spiped आधिकारिक साइट
    • यह तरीका dumbpipe द्वारा बताए गए मुख्य लक्ष्यों को पूरा नहीं करता। उदाहरण के लिए, यह QUIC का उपयोग नहीं करता, संभव हो तो relay से बचता भी नहीं, और network बदलने पर connection बनाए रखने या relay को अपने-आप चुनने की क्षमता भी नहीं है। इसके अलावा, SSH key management उपयोगकर्ता को अलग से करना पड़ता है, जबकि dumbpipe किसी भी ASCII string से key उपलब्ध कराता है। WireGuard dumbpipe के ज्यादा करीब है
    • dumbpipe परिचय लिंक की पहली पंक्ति:
      Dumb pipe punches through NATs, using on-the-fly node identifiers. It even keeps your machines connected as network conditions change.
      
    • अगर wg server बनाकर दो clients को जोड़ा जाए, तो डेटा को उनके-अपने IP तक पहुंचाया जा सकता है, लेकिन आखिरकार central relay ही डेटा forwarding की भूमिका निभाता है (NAT हो या न हो)
    • ssh-j.com के बारे में अब पता चला, और यह काफ़ी दिलचस्प है
  • यह जानने की जिज्ञासा है कि दो PC सिर्फ USB cable से आसानी से file transfer क्यों नहीं कर सकते और यह कोई standard feature क्यों नहीं है। अगर सभी OS एक ही protocol को support करते, तो यह शुरू से ही उपलब्ध होना चाहिए था। USB A-A cable सैद्धांतिक रूप से मौजूद नहीं है, लेकिन वही बात इसकी ज़रूरत को भी दिखाती है। USB C के साथ तो यह पूरी तरह संभव होना चाहिए, Android और PC के बीच कुछ हद तक संभव भी है, लेकिन दो laptops के बीच नहीं

    • USB-C (USB4/Thunderbolt) से दो devices को जोड़ने पर एक network connection बन जाता है। डिफ़ॉल्ट रूप से सिर्फ Link-Local address मिलता है, इसलिए SSH जैसी चीज़ों के लिए थोड़ा झंझट होता है, लेकिन अगर automatic network discovery हो तो यह काफ़ी सहज रूप से काम कर सकता है। संदर्भ: Thunderbolt Networking on Linux, SuperUser उत्तर
    • wireless में बिना cable और बिना LAN के भी यह संभव था, और यह तकनीक Nintendo DS में पहले से मौजूद थी। पिछले 40 सालों में file transfer की समस्या अनगिनत तरीकों से हल की गई है, लेकिन कुछ लोगों को जैसे यह समस्या बिना cloud service के कभी पूरी तरह हल ही न हो, ऐसा लगता है। dumbpipe दिलचस्प है, लेकिन यह भी उन व्यावहारिक दीवारों से टकरा सकता है जिनसे पहले की अनगिनत solutions टकराईं। उदाहरण के लिए, अगर Linux user किसी Windows user को 50MB की file देना चाहे, तो Windows वाले के पास कोई अलग program install किए बिना उसे पाने का तरीका नहीं है
    • USB संरचनात्मक रूप से asymmetric है, इसलिए इसमें host और device अलग-अलग होते हैं। Device polling-आधारित slave की तरह काम करता है। दो PC के बीच सीधा wired connection USB से पहले ही Ethernet द्वारा हल की गई समस्या थी
    • TCP/IP के universal standard बनने से पहले, बड़ी files भेजने के लिए Ethernet crossover cable का उपयोग किया जाता था। आजकल कई PC से Ethernet port हटाए जा रहे हैं, और यह उस सोच से जुड़ा बदलाव है जिसमें मालिक अपने files तीसरे पक्ष के internet computer (cloud) पर अपलोड करें। समय के साथ file transfer के तरीके विविध हुए हैं, लेकिन crossover cable वाला तरीका आज भी अच्छी तरह काम करता है, और सिर्फ USB to Ethernet adapter से भी यह संभव है। किसी खास software, router, internet, या third party की जरूरत नहीं। सिर्फ TCP/IP काफ़ी है
    • Linux में mobile device की तरह MTP endpoint बनाकर यह किया जा सकता है uMTP-Responder
      MS ने भी इसके लिए support tool जारी किया था, लेकिन लगता है कि वह सिर्फ Windows CE में ही उपलब्ध था MS आधिकारिक लिंक
  • इसी संदर्भ में, मेरे पास file transfer tools की एक सूची है जिसे मैंने संकलित किया है (मुख्यतः browser-आधारित + थोड़े CLI tools)। मौका मिलने पर मैं इसे साझा करता हूँ और अच्छे tools और जोड़ता रहता हूँ मेरी tool list

    • मुझे LocalSend पसंद है। यह अपने devices के बीच तेज transfer के लिए शानदार है और सभी OS पर अच्छी तरह काम करता है LocalSend GitHub
    • dumbpipe बनाने वाली टीम ने Sendme भी बनाया है, और यह इस उपयोग के कहीं ज्यादा करीब डिज़ाइन किया गया है Sendme GitHub
  • यह जानने की जिज्ञासा है कि dumbpipe और Tailscale में implementation स्तर पर कितना overlap है। दोनों में कई common जरूरतें दिखती हैं, और लगता है कि NAT traversal जैसी low-level चीज़ों के लिए पहले से usable libraries मौजूद होंगी। या शायद यह ऐसी पहली library ही हो

    • अगर सख्ती से देखें, तो Tailscale खुद भी उसी विचार का शायद 600वाँ implementation है। इससे पहले nebula, tinc वगैरह भी थे। बस यह WireGuard के उभार के समय आया, और बड़े पैमाने की marketing व VC funding का फायदा मिला
    • Iroh application layer के लिए कहीं ज्यादा उपयुक्त है। इसमें एक connection के भीतर कई QUIC streams को अलग-अलग उद्देश्यों के लिए multiplex किया जा सकता है। सिर्फ QUIC access होना काफ़ी है, virtual network interface की जरूरत नहीं। कुछ हद तक gRPC जैसा उदाहरण है, लेकिन इसमें byte stream पर ज्यादा स्वतंत्र नियंत्रण मिलता है, इसलिए एक stream voice call, दूसरी file transfer, और तीसरी साधारण RPC के लिए real time में बाँटकर इस्तेमाल की जा सकती है। यह WebRTC के सबसे करीब है, लेकिन SCTP या RTMP से ज्यादा विकल्प देता है
    • यह iroh पर बनाया गया है, और इसका लक्ष्य distributed software के लिए low-level framework बनना है। इसमें networking के अलावा data replication और consistency बनाए रखने के लिए कई data structures भी शामिल हैं
    • mobile/cignat में Tailscale से phone connect करना मेरे लिए सचमुच एक दुर्लभ software "aha" अनुभव था
    • tailscale को मैं WireGuard-आधारित wrapper मानता हूँ, जिसमें कुछ hole-punch features जोड़े गए हैं
  • pico.sh ने भी SSH का उपयोग करके इसी तरह की file transfer functionality बनाई है pipe.pico.sh

    • अगर इसका dumbpipe से सीधा benchmark किया जाए, तो performance या usability में क्या नतीजे आएँगे, यह जानने की जिज्ञासा है
  • अगर इस तरह के tunneling tool ecosystem में रुचि है, तो देखने लायक एक awesome list है awesome-tunneling

  • iroh वाकई शानदार तकनीक है। दो हफ्ते पहले Berlin web3 summit में मैंने Rüdiger(N0) की workshop में हिस्सा लिया था, और उससे बहुत प्रेरणा मिली। इसी तरह की service बनाने वाला code यहाँ public है iroh-workshop कोड और slides भी ज़रूर देखनी चाहिए

  • अगर आपको थोड़ा और उन्नत pipe चाहिए, तो मेरा Iroh-आधारित tunnel manager CLI भी है जिसे मैं बना रहा हूँ। यह TCP, UDP, और UNIX socket port forwarding को support करता है qtm GitLab

  • इस तरह के solutions साल में एक-दो बार आते ही रहते हैं। connection orchestration में विशेषज्ञता रखने वाले अच्छे open source के रूप में मैं Spacebrew की सिफारिश करता हूँ Spacebrew आधिकारिक दस्तावेज़

    • उस नज़रिए से यह सही है, लेकिन इस project की branding सचमुच बहुत अनोखी है। सचमुच एक dumbpipe आदमी का character और मज़ेदार भुजाओं वाला concept है। और सबसे बढ़कर, यह बस अच्छी तरह काम करता है
    • "2023 में..."
  • मुझे यह तरीका हमेशा खास तौर पर दिलचस्प लगा pwnat GitHub
    यह हर स्थिति को cover नहीं करता और थोड़ा ज्यादा जटिल है, लेकिन इसका सबसे बड़ा फ़ायदा है कि किसी मध्यस्थ की जरूरत नहीं होती

    • यह काफ़ी पुराना solution है, और आजकल कुछ routers पर समस्या भी देता है issue लिंक
    • slipstream GitHub इसका नया version है
    • मुझे इस तरह के tools के बारे में अभी पता चला, और ये सचमुच उपयोगी लगते हैं। लेकिन NAT संरचना की सीमाओं के कारण, इस approach की कमी यह भी है कि firewall rules को दरकिनार करके malware आसानी से inbound connection खोल सकता है
    • सबसे बढ़कर, Samy मेरे लिए किसी हीरो जैसा है