21 คะแนน โดย GN⁺ 2025-07-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Dumbpipe เป็นเครื่องมือสไตล์ Unix ที่ทำให้ เชื่อมต่อไปป์ข้อมูลระหว่างคอมพิวเตอร์สองเครื่องได้อย่างง่ายดาย
  • ติดตั้งและใช้งานได้ ง่ายมาก และไม่ต้องมีบัญชีหรือการตั้งค่าเพิ่มเติม
  • บนคอมพิวเตอร์เครื่องหนึ่งสามารถรอใน โหมดผู้รับ พร้อมรับคีย์ลับและคำสั่งเชื่อมต่อได้
  • บนอีกเครื่องหนึ่งสามารถ ส่งและเชื่อมต่อด้วยคำสั่งบรรทัดเดียว เพื่อส่งต่อข้อมูลได้
  • ทำงานได้ไม่ว่าระบบเครือข่ายจะเป็นแบบใด จึงใช้งานได้จากทุกที่

แนะนำ Dumbpipe

  • เครื่องมือโอเพนซอร์สสำหรับ รับส่งข้อมูลโดยตรงระหว่างคอมพิวเตอร์สองเครื่องในลักษณะเดียวกับ Unix pipe
  • ติดตั้งและรันได้ด้วยคำสั่งบรรทัดเดียวโดยไม่ต้องตั้งค่าซับซ้อน จึงใช้งานได้จริงและเข้าถึงได้ง่าย

คุณสมบัติหลัก

  • หลังติดตั้งบนคอมพิวเตอร์เครื่องหนึ่งแล้ว สามารถเข้าสู่ โหมดรอรับ (listen) ได้ด้วยคำสั่ง ./dumbpipe listen
    • เมื่อรันแล้ว ระบบจะสร้าง คีย์ลับ อัตโนมัติ พร้อมแสดง คำสั่งเชื่อมต่อเฉพาะ ที่ใช้งานจากคอมพิวเตอร์อีกเครื่องได้
  • ฝั่งผู้ส่งสามารถส่งข้อมูลได้อย่างง่ายดายในรูปแบบ echo "hello" | ./dumbpipe connect ...
  • ไม่ต้องสร้างบัญชีแยกต่างหาก
    • ใช้งานได้ทันทีโดยไม่ต้องสมัคร, ล็อกอิน หรือกรอกข้อมูลสมาชิก
  • ทำงานได้ทันทีโดยไม่ต้องตั้งค่าเพิ่ม
    • ใช้งานได้เลยโดยไม่ต้องมี environment variable, ไฟล์คอนฟิก หรือการตั้งค่าไฟร์วอลล์เพิ่มเติม
  • รับส่งข้อมูลระหว่างอุปกรณ์ได้จากทุกที่ทั่วโลก
    • ทำงานได้ โดยไม่จำกัดสภาพแวดล้อมเครือข่าย เช่น private network, cloud หรือ local network

สรุปตัวอย่างการใช้งาน

  • ฝั่งผู้รับรัน dumbpipe ใน โหมด listen แล้วคัดลอกคีย์และข้อมูลที่จำเป็นสำหรับการเชื่อมต่อไปส่งต่อ
  • ฝั่งผู้ส่งใช้ คำสั่ง connect ที่มีคีย์ดังกล่าวรวมอยู่เพื่อส่งข้อมูลในรูปแบบสตรีม

นัยสำคัญในการนำไปใช้

  • ทำให้ผู้ใช้ใหม่หรือ ผู้ที่ยังไม่ชำนาญก็สามารถสร้าง pipeline การส่งข้อมูลผ่านเครือข่ายได้ง่าย
  • นำไปใช้ได้รวดเร็วในหลายกรณี เช่น การส่งไฟล์หรือข้อความสั้น ๆ, การส่งต่อข้อมูลระหว่างอุปกรณ์, งานพัฒนาและระบบอัตโนมัติสำหรับการดีพลอย
  • ด้วยคำสั่งเดียวและเวิร์กโฟลว์ที่เข้าใจง่าย จึง ช่วยเพิ่มประสิทธิภาพการทำงานของวิศวกร

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
    

    หากปลายทางถูกไฟร์วอลล์หรือ NAT ขวางอยู่ ก็สามารถใช้ public SSH server อย่าง ssh-j.com เป็นรีเลย์เพื่อรับส่งข้อมูลอย่างปลอดภัยได้ (ใช้ 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, ไม่ได้หลีกเลี่ยงรีเลย์เมื่อทำได้, และไม่มีความสามารถเลือกรีเลย์อัตโนมัติหรือคงการเชื่อมต่อไว้เมื่อสภาพเครือข่ายเปลี่ยนไป นอกจากนี้การจัดการ SSH key ก็ยังเป็นภาระของผู้ใช้เอง ขณะที่ dumbpipe ให้คีย์เป็นสตริง ASCII ตามต้องการ 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 เพื่อเชื่อมไคลเอนต์สองตัวเข้าด้วยกัน ก็สามารถส่งข้อมูลไปยัง IP ของกันและกันได้ แต่สุดท้ายรีเลย์กลางก็ยังทำหน้าที่ส่งต่อข้อมูลอยู่ดี (ไม่ว่า จะมี NAT หรือไม่ก็ตาม)
    • เพิ่งรู้จัก ssh-j.com ตอนนี้เอง แต่น่าสนใจมากทีเดียว
  • สงสัยว่าทำไมการส่งไฟล์ระหว่างพีซีสองเครื่องด้วยสาย USB อย่างง่าย ๆ ถึงไม่เป็นมาตรฐาน ถ้าทุก OS รองรับแค่โปรโตคอลเดียวกัน ก็น่าจะเป็นฟีเจอร์ที่ควรมีมาตั้งแต่แรก แม้จะรู้ว่าในทางทฤษฎีสาย USB A-A ไม่มีอยู่จริง แต่จุดนั้นเองกลับเป็นเหตุผลว่าทำไมจึงควรมี ถ้าเป็น USB C ก็น่าจะทำได้สบาย ระหว่าง Android กับ PC พอทำได้บ้าง แต่ระหว่างโน้ตบุ๊กสองเครื่องกลับทำไม่ได้

    • ถ้าเชื่อมอุปกรณ์สองตัวด้วย USB-C (USB4/Thunderbolt) จะมีการสร้างการเชื่อมต่อเครือข่ายขึ้นมา โดยค่าเริ่มต้นจะได้แค่ที่อยู่แบบ Link-Local ทำให้เวลาจะใช้ SSH เป็นต้นอาจยุ่งยากนิดหน่อย แต่ถ้ามีฟังก์ชันค้นหาเครือข่ายอัตโนมัติก็ใช้งานได้ค่อนข้างลื่นไหล อ้างอิง: Thunderbolt Networking on Linux, คำตอบบน SuperUser
    • เทคโนโลยีที่ทำได้แบบไร้สาย ไม่ต้องใช้สาย และไม่ต้องมี LAN นั้นมีอยู่แล้วแม้แต่บน Nintendo DS ตลอด 40 ปีที่ผ่านมา ปัญหาการส่งไฟล์ถูกแก้ด้วยสารพัดวิธีจนแทบนับไม่ถ้วน แต่ก็ให้ความรู้สึกเหมือนบางคนไม่อยากให้ปัญหานี้ถูกแก้ได้ถาวรโดยไม่พึ่งบริการคลาวด์ dumbpipe น่าสนใจก็จริง แต่ก็อาจชนกำแพงเชิงปฏิบัติแบบเดียวกับโซลูชันจำนวนมากก่อนหน้า ตัวอย่างเช่น ถ้าผู้ใช้ Linux อยากส่งไฟล์ 50MB ให้ผู้ใช้ Windows ฝั่ง Windows ก็ไม่มีทางรับได้เลยหากไม่ติดตั้งโปรแกรมเพิ่ม
    • USB มีโครงสร้างแบบไม่สมมาตรโดยธรรมชาติ เพราะแบ่งเป็น host กับ device โดย device จะทำงานเป็น slave แบบ polling การเชื่อมต่อแบบมีสายตรงระหว่างพีซีสองเครื่องเป็นปัญหาที่ถูกแก้ไปแล้วด้วย Ethernet ตั้งแต่ก่อนยุค USB
    • ก่อนที่ TCP/IP จะกลายเป็นมาตรฐานสากล ผู้คนใช้สาย Ethernet crossover เพื่อส่งไฟล์ขนาดใหญ่ ทุกวันนี้พีซีจำนวนมากกำลังตัดพอร์ต Ethernet ออก ซึ่งเป็นการเปลี่ยนแปลงที่สัมพันธ์กับมุมมองที่อยากให้เจ้าของไฟล์อัปโหลดไฟล์ของตนไปยังคอมพิวเตอร์อินเทอร์เน็ตของบุคคลที่สาม (คลาวด์) แม้เวลาจะผ่านไปและวิธีส่งไฟล์จะหลากหลายขึ้น แต่วิธีสาย crossover ก็ยังใช้งานได้ดี และแค่มี USB to Ethernet adapter ก็เพียงพอแล้ว ไม่ต้องใช้ซอฟต์แวร์พิเศษ เราเตอร์ อินเทอร์เน็ต หรือบุคคลที่สาม ขอแค่มี TCP/IP ก็พอ
    • บน Linux สามารถทำได้โดยสร้าง MTP endpoint เหมือนอุปกรณ์พกพา uMTP-Responder
      ทาง MS ก็เคยออกเครื่องมือที่รองรับสิ่งนี้เช่นกัน แต่ดูเหมือนจะมีให้เฉพาะบน Windows CE ลิงก์ทางการของ MS
  • ที่เกี่ยวข้องกัน ฉันมีรายการเครื่องมือส่งไฟล์ที่รวบรวมไว้เอง (ส่วนใหญ่เป็นแบบ browser-based และมี CLI ปนเล็กน้อย) ไว้แชร์ทุกครั้งที่มีโอกาส และกำลังมองหาเครื่องมือดี ๆ เพิ่มอยู่เสมอ รายการเครื่องมือของฉัน

    • ชอบ LocalSend มาก เหมาะมากสำหรับการส่งไฟล์ความเร็วสูงระหว่างอุปกรณ์ของตัวเอง และทำงานได้ดีบนทุก OS GitHub ของ LocalSend
    • ทีมที่ทำ dumbpipe ก็ทำ Sendme ด้วย ซึ่งออกแบบมาใกล้เคียงกับการใช้งานแบบนี้มากกว่า GitHub ของ Sendme
  • สงสัยว่าระหว่าง dumbpipe กับ Tailscale มีส่วนที่ทำซ้ำกันมากแค่ไหน ดูเหมือนมีฟังก์ชันร่วมกันหลายอย่างที่จำเป็นเหมือนกัน และน่าจะมีไลบรารีระดับล่างที่ใช้ได้อยู่แล้วสำหรับเรื่องอย่างการทะลุ NAT หรือไม่ก็นี่อาจเป็นไลบรารีแรกในลักษณะนี้ก็ได้

    • ถ้าจะพูดกันจริง ๆ Tailscale เองก็เป็น implementation ลำดับที่ 600 ของไอเดียเดียวกัน ก่อนหน้านั้นก็มีอย่าง nebula, tinc ฯลฯ เพียงแต่มันมาในช่วงที่ WireGuard กำลังขึ้น และได้แรงส่งจากการโปรโมตขนาดใหญ่รวมถึงเงินทุน VC
    • Iroh เหมาะกับ application layer มากกว่าเยอะ สามารถ multiplex QUIC stream หลายตัวในคอนเน็กชันเดียวตามวัตถุประสงค์ได้ ต้องการแค่การเข้าถึง QUIC จึงไม่จำเป็นต้องมี virtual network interface ด้วย ตัวอย่างที่คล้ายกันคือ gRPC แต่ Iroh เปิดอิสระในการควบคุม byte stream มากกว่า และสามารถแบ่งใช้แบบเรียลไทม์ได้ เช่น stream หนึ่งเป็นการโทรเสียง อีกอันเป็นการส่งไฟล์ และอีกอันเป็น RPC ธรรมดา มันคล้าย WebRTC ที่สุด แต่ให้ตัวเลือกมากกว่า SCTP หรือ RTMP
    • นี่คือสิ่งที่สร้างด้วย iroh โดยมุ่งเป็น low-level framework สำหรับซอฟต์แวร์แบบกระจายศูนย์ นอกจากเครือข่ายแล้ว ยังมี data structure หลายแบบที่จำเป็นต่อการทำ data replication และรักษาความสอดคล้องของข้อมูล
    • การเชื่อมโทรศัพท์ด้วย Tailscale บน mobile/cgnat เป็นประสบการณ์แบบ "อ๋อ เข้าใจแล้ว" ทางซอฟต์แวร์ที่หาได้ยากจริง ๆ
    • ฉันมองว่า tailscale คือ wrapper ที่อยู่บน WireGuard แล้วเพิ่มฟังก์ชัน hole-punch บางส่วนเข้าไป
  • ที่ pico.sh ก็ทำฟังก์ชันส่งไฟล์คล้ายกันโดยใช้ SSH pipe.pico.sh

    • ถ้าเอามา benchmark ตรง ๆ กับ dumbpipe ก็น่าสนใจว่าผลลัพธ์ด้านประสิทธิภาพหรือการใช้งานจะออกมาแบบไหน
  • ถ้าสนใจ ecosystem ของเครื่องมือ tunneling แนวนี้ ก็มี awesome list ที่น่าอ้างอิง awesome-tunneling

  • iroh เป็นเทคโนโลยีที่ยอดเยี่ยมจริง ๆ เมื่อสองสัปดาห์ก่อนฉันไปเข้าร่วมเวิร์กช็อปของ Rüdiger (N0) ที่งาน web3 summit ในเบอร์ลิน และได้รับแรงบันดาลใจอย่างมาก โค้ดสำหรับสร้างบริการลักษณะนี้ก็เปิดเผยอยู่ที่นี่ โค้ด iroh-workshop และแนะนำให้ลองดูสไลด์ด้วย

  • ถ้าอยากได้ pipe ที่ก้าวหน้ากว่านี้ ฉันก็กำลังทำ tunnel manager CLI ที่สร้างบน Iroh รองรับ TCP, UDP และ UNIX socket port forwarding GitLab ของ qtm

  • โซลูชันแบบนี้มีออกมาอย่างน้อยปีละหนึ่งถึงสองครั้ง ถ้าต้องการโอเพนซอร์สที่ดีและเน้นด้าน connection orchestration ขอแนะนำ Spacebrew เอกสารทางการของ Spacebrew

    • ในแง่นั้นก็จริง แต่การทำแบรนด์ของโปรเจกต์นี้โดดเด่นมากจริง ๆ เป็นคอนเซปต์ตัวละครมนุษย์ dumbpipe พร้อมแขนตลก ๆ แบบตามตัวอักษร แถมมันยังใช้งานได้ดีเฉยเลย
    • "ในปี 2023..."
  • ฉันสนใจวิธีนี้เป็นพิเศษมาตลอด GitHub ของ pwnat
    มันไม่ได้ครอบคลุมทุกกรณีและซับซ้อนกว่าเล็กน้อย แต่ข้อดีสูงสุดคือไม่ต้องมีตัวกลาง

    • นี่เป็นโซลูชันที่ค่อนข้างเก่า และทุกวันนี้ก็มีกรณีที่เจอปัญหากับเราเตอร์บางรุ่น ลิงก์ issue
    • GitHub ของ slipstream คือเวอร์ชันใหม่ที่ออกมา
    • เพิ่งรู้จักเครื่องมือแบบนี้เป็นครั้งแรก แต่มันดูใช้งานได้จริงมาก เพียงแต่ด้วยข้อจำกัดของโครงสร้าง NAT วิธีนี้ก็มีข้อเสียตรงที่มัลแวร์อาจเปิดการเชื่อมต่อขาเข้าได้ง่ายโดยไม่สนกฎไฟร์วอลล์
    • เหนือสิ่งอื่นใด Samy เป็นเหมือนฮีโร่สำหรับฉัน