21 puan yazan GN⁺ 2025-07-28 | 1 yorum | WhatsApp'ta paylaş
  • Dumbpipe, iki bilgisayar arasında kolayca veri pipe bağlantısı kurmayı sağlayan Unix tarzı bir araçtır
  • Kurulumu ve kullanımı çok basittir; hesap ya da ek yapılandırma gerektirmez
  • Bir bilgisayarda alıcı modunda bekler ve gizli anahtar ile bağlantı komutunu sunar
  • Diğer bilgisayarda ise tek satırlık bir komutla gönderim ve bağlantı kurularak veri aktarılabilir
  • Ağ ortamından bağımsız çalıştığı için konum fark etmeksizin kullanılabilir

Dumbpipe tanıtımı

  • İki bilgisayar arasında Unix pipe'ına benzer şekilde doğrudan veri alışverişi yapmayı sağlayan açık kaynaklı bir araçtır
  • Karmaşık ayarlar olmadan tek satırla kurulup çalıştırılabildiği için pratiktir ve erişilebilirliği yüksektir

Başlıca özellikler

  • Bir bilgisayara kurulduktan sonra ./dumbpipe listen komutuyla bekleme (alma) moduna geçilebilir
    • Çalıştırıldığında otomatik üretilen gizli anahtar ile birlikte, diğer bilgisayardan bağlanmak için kullanılacak özel bağlantı komutu verilir
  • Gönderici, echo "hello" | ./dumbpipe connect ... biçiminde kolayca veri gönderebilir
  • Ayrı bir hesap oluşturmaya gerek yoktur
    • Kayıt, giriş veya üye bilgisi ekleme olmadan hemen kullanılabilir
  • Ek yapılandırma olmadan anında çalışır
    • Ortam değişkeni, yapılandırma dosyası veya güvenlik duvarı ayarı gerektirmeden doğrudan kullanılabilir
  • Dünyanın her yerinden iki cihaz arasında veri gönderip alınabilir
    • Özel ağ, bulut veya yerel ağ gibi ağ ortamı kısıtı olmadan çalışır

Kullanım örneği özeti

  • Alıcı, dumbpipe'ı listen modunda çalıştırıp bağlantı için gereken anahtarları kopyalayarak paylaşır
  • Gönderici, ilgili anahtarı içeren connect komutu ile veriyi akış şeklinde iletir

Kullanım açısından çıkarımlar

  • Yeni kullanıcılar ya da deneyimsiz kişiler bile ağ üzerinden veri aktarım hattını kolayca kurabilir
  • Dosya veya basit mesaj gönderimi, cihazlar arası veri aktarma, geliştirme ve dağıtım otomasyonu gibi çeşitli amaçlarla hızla kullanılabilir
  • Tek komut ve sezgisel iş akışı sayesinde mühendis üretkenliğine katkı sağlar

1 yorum

 
GN⁺ 2025-07-28
Hacker News görüşü
  • ssh ile socat veya mkfifo kullanarak uzaktan komut alıp vermenin bir yolunu tanıtıyor

    # alıcı
    socat UNIX-RECV:/tmp/foobar - | my-command
    
    # gönderici
    my-command | ssh host socat - UNIX-SENDTO:/tmp/foobar
    

    Eğer hedef güvenlik duvarı veya NAT arkasındaysa, ssh-j.com gibi herkese açık bir SSH sunucusunu röle olarak kullanıp verileri güvenli biçimde gönderip almak mümkün (çift SSH tünelleme kullanarak)

    # alıcı
    ssh top-secret@ssh-j.com -N -R ssh:22:localhost:22
    socat UNIX-RECV:/tmp/foobar - | my command
    
    # gönderici
    my-command | ssh -J top-secret@ssh-j.com ssh socat - UNIX-SENDTO:/tmp/foobar
    

    Bunu ilk olarak beam ile ilgili bir başlıkta paylaşmıştım bağlantı

    • spiped adlı aracı kullanırsanız, ssh'yi önkoşul yapmadan bunu daha basit şekilde gerçekleştirmek mümkün spiped resmi sitesi
    • Bu yaklaşım, dumbpipe'ın anlattığı temel hedefleri karşılamıyor. Örneğin QUIC kullanmıyor, mümkünse röleden kaçınmıyor ve otomatik röle seçimi ya da ağ koşulları değiştikçe bağlantıyı sürdürme özelliği yok. Ayrıca SSH anahtar yönetimini kullanıcının ayrıca yapması gerekiyor; dumbpipe ise rastgele bir ASCII dizesiyle anahtar sağlıyor. WireGuard, dumbpipe'a daha çok benziyor
    • dumbpipe tanıtım bağlantısındaki ilk cümle:
      Dumb pipe punches through NATs, using on-the-fly node identifiers. It even keeps your machines connected as network conditions change.
      
    • İki istemciyi bağlamak için bir wg sunucusu kurarsanız, verileri kendi IP'leri üzerinden iletmek mümkün ama sonuçta merkezi röle veri aktarımını üstleniyor (NAT olsun ya da olmasın)
    • ssh-j.com'u daha yeni öğrendim, epey ilginçmiş
  • İki PC'nin yalnızca bir USB kablosuyla kolayca dosya aktarabilmesinin neden standart olmadığını merak ediyorum. Tüm işletim sistemleri aynı protokolü desteklese, en başından beri sunulması gereken bir özellik gibi geliyor. USB A-A kabloların teoride var olmaması gerektiğini biliyorum ama tam da bu, böyle bir ihtiyacın kanıtı gibi. USB C ile gayet mümkün olmalıydı; Android ile PC arasında bir ölçüde mümkün ama iki dizüstü arasında değil

    • İki cihazı USB-C (USB4/Thunderbolt) ile bağlarsanız bir ağ bağlantısı oluşuyor. Varsayılan olarak yalnızca Link-Local adres alındığı için SSH gibi şeylerde biraz uğraştırıyor ama otomatik ağ keşfi varsa oldukça sorunsuz çalışıyor. Bkz: Thunderbolt Networking on Linux, SuperUser yanıtı
    • Kablosuz, kablosuz ağ olmadan da LAN gerektirmeden çalışan teknoloji Nintendo DS'te bile vardı. Son 40 yılda dosya aktarımı sorunu sayısız farklı yöntemle çözüldü ama bazıları sanki bu sorunun bulut servisleri olmadan asla tamamen çözülmesini istemiyor gibi. dumbpipe ilginç olsa da mevcut pek çok çözümün çarptığı aynı pratik engellere takılabilir. Örneğin bir Linux kullanıcısı 50MB'lık bir dosyayı Windows kullanıcısına vermek istese, Windows tarafında ek bir program kurulmadan bunu almanın yolu yok
    • USB yapısal olarak asimetriktir; host ve device ayrımı vardır. Device, polling tabanlı bir slave olarak çalışır. İki PC arasında kablolu doğrudan bağlantı meselesi, USB'den önce zaten Ethernet ile çözülmüş bir problemdi
    • TCP/IP evrensel standart haline gelmeden önce büyük dosyalar Ethernet crossover kablosuyla aktarılırdı. Bugün birçok PC'de Ethernet portu kaldırılıyor; bu da sahibinin kendi dosyalarını üçüncü taraf internet bilgisayarlarına (buluta) yüklemesini teşvik eden bir bakış açısıyla ilişkili bir değişim. Yıllar içinde dosya aktarım yöntemleri çeşitlendi ama crossover kablo yaklaşımı hâlâ gayet iyi çalışıyor ve sadece bir USB to Ethernet adaptörüyle mümkün. Özel yazılım, yönlendirici, internet ya da üçüncü taraf gerekmiyor. TCP/IP yeterli
    • Linux'ta, mobil cihazlardaki gibi bir MTP endpoint oluşturarak bu mümkün uMTP-Responder
      MS de bunu destekleyen bir araç yayımlamış ama görünüşe göre yalnızca Windows CE için sunmuş MS resmi bağlantısı
  • Bununla ilgili olarak, derlediğim bir dosya aktarım araçları listesi var (çoğunlukla tarayıcı tabanlı + biraz CLI). Uygun durumlar çıktıkça paylaşıyor ve iyi araçlar buldukça ekliyorum araç listem

    • LocalSend'i tercih ediyorum. Aynı sahibin cihazları arasında hızlı aktarım için harika ve tüm işletim sistemlerinde iyi çalışıyor LocalSend GitHub
    • dumbpipe ekibi Sendme'yi de yaptı; bu kullanım amacına çok daha yakın tasarlanmış Sendme GitHub
  • dumbpipe ile Tailscale arasında ne kadar fazla ortak yeniden uygulama olduğunu merak ediyorum. İkisinin de ortak ihtiyaç duyduğu çok şey var gibi görünüyor; NAT geçişi gibi düşük seviyede zaten kullanılabilecek pek çok kütüphane vardır diye düşünüyorum. Ya da belki de bu bu türdeki ilk kütüphanedir

    • Çok sıkı bakarsanız, Tailscale'in kendisi de aynı fikrin 600. uygulaması sayılır. Ondan önce nebula, tinc gibi şeyler vardı. Sadece WireGuard'ın yükseliş anına denk geldi ve üstüne VC parasıyla büyük çaplı pazarlama eklendi
    • Iroh, uygulama katmanı için çok daha uygun. Tek bir bağlantı üzerinde birden fazla QUIC stream'i amaca göre çoklayabiliyorsunuz. Sadece QUIC erişimi gerekiyor; sanal ağ arayüzüne gerek yok. Benzer bir örnek gRPC olabilir ama burada byte stream kontrolü daha serbest ve bir stream sesli görüşme, diğeri dosya aktarımı, bir başkası basit RPC olacak şekilde gerçek zamanlı bölümlendirme yapılabiliyor. En çok WebRTC'ye benziyor ama SCTP ya da RTMP'den daha fazla seçenek sunuyor
    • Bu, iroh ile yapılmış bir şey; amaç dağıtık yazılımlar için düşük seviyeli bir çerçeve olmak. Ağ tarafının yanı sıra veri çoğaltma ve tutarlılığı korumak için gereken çeşitli veri yapıları da içeriyor
    • Mobil/cignat ortamında Tailscale ile telefon bağlamak benim için gerçekten nadir görülen bir yazılım "aha" deneyimiydi
    • tailscale'i, üzerine biraz hole-punch yeteneği eklenmiş WireGuard tabanlı bir sarmalayıcı olarak görüyorum
  • pico.sh üzerinde benzer bir dosya aktarım özelliği SSH kullanılarak uygulanmış pipe.pico.sh

    • Bunu dumbpipe ile doğrudan kıyaslasak performans ya da kullanılabilirlik açısından nasıl sonuçlar çıkardı merak ediyorum
  • Buna benzer tünelleme araçlarının ekosistemiyle ilgileniyorsanız, bakmaya değer bir awesome listesi var awesome-tunneling

  • iroh gerçekten müthiş bir teknoloji. İki hafta önce Berlin'deki web3 summit'te Rüdiger'in (N0) atölyesine katıldım ve çok ilham vericiydi. Buna benzer bir servis kuran kod burada açık iroh-workshop kodu, slaytlara da mutlaka göz atmanızı öneririm

  • Daha gelişmiş bir pipe istiyorsanız, Iroh tabanlı olarak geliştirdiğim bir tünel yöneticisi CLI da var. TCP, UDP ve UNIX socket port forwarding destekliyor qtm GitLab

  • Bu tür çözümler yılda bir iki kez çıkıyor. Bağlantı orkestrasyonuna odaklanan iyi bir açık kaynak olarak Spacebrew'ü önerebilirim Spacebrew resmi dokümantasyonu

    • Bu açıdan doğru ama bu projenin markalaşması gerçekten çok sıra dışı. Kelimenin tam anlamıyla dumbpipe insan karakteri ve komik kollar konsepti var. Üstelik gerçekten de iyi çalışıyor
    • "2023'te..."
  • Bu yöntem bana hep özellikle ilginç gelmiştir pwnat GitHub
    Her durumu kapsamıyor ve biraz daha karmaşık ama aracı bir bileşene ihtiyaç duymaması en büyük avantajı

    • Bu oldukça eski bir çözüm ve bazı modern yönlendiricilerde sorun yaşadığı durumlar var sorun bağlantısı
    • slipstream GitHub bunun daha yeni sürümü
    • Bu tür araçları ilk kez görüyorum ve gerçekten kullanışlı görünüyor. Yine de NAT yapısının sınırları nedeniyle bu yaklaşımın, kötü amaçlı yazılımların güvenlik duvarı kurallarını aşarak kolayca gelen bağlantı açabilmesi gibi bir dezavantajı da var
    • Her şeyden önce, Samy benim için adeta bir kahraman