21 ポイント 投稿者 GN⁺ 2025-07-28 | 1件のコメント | WhatsAppで共有
  • Dumbpipeは、2台のコンピュータ間で手軽にデータのパイプ接続を可能にするUnixスタイルのツール
  • インストールと利用が非常に簡単で、アカウントや追加設定が不要
  • 一方のコンピュータでは受信側モードで待機し、秘密鍵と接続コマンドを提供する
  • もう一方のコンピュータでは1行のコマンドで送信・接続してデータを渡せる
  • ネットワーク環境に関係なく動作するため、場所を問わず活用できる

Dumbpipe 紹介

  • 2台のコンピュータ間でUnixパイプのように直接データをやり取りできるオープンソースツール
  • 複雑な設定なしで1行でインストール・実行でき、実用的で導入しやすい

主な特徴

  • 1台のコンピュータにインストール後、./dumbpipe listen コマンドで待機(受信)モードに入れる
    • 実行時に自動生成された秘密鍵とともに、別のコンピュータから接続できる専用の接続コマンドが提供される
  • 送信側は echo "hello" | ./dumbpipe connect ... の形で手軽にデータを送信できる
  • 別途アカウント作成は不要
    • 登録、ログイン、会員情報の入力なしですぐに利用できる
  • 追加設定なしですぐに動作
    • 環境変数、設定ファイル、ファイアウォール設定なしでそのまま使える
  • 世界中どこからでも2台のデバイス間でデータを送受信
    • プライベートネットワーク、クラウド、ローカルネットワークなどネットワーク環境の制約なく動作する

使用例の要約

  • 受信側は dumbpipe をlisten モードで実行し、接続に必要なキーなどをコピーして共有する
  • 送信側はそのキーを含むconnect コマンドを使って、データをストリームとして送信する

活用の示唆

  • 新規ユーザーや非熟練者でも簡単にネットワークデータ転送パイプラインを構成できるようになる
  • ファイルや簡単なメッセージの送信、デバイス間のデータ中継、開発・デプロイ自動化など、さまざまな用途にすばやく活用できる
  • 単一コマンドと直感的なワークフローでエンジニアの生産性向上に貢献する

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 に遮られているなら、ssh-j.com のようなパブリック SSH サーバーをリレーとして使い、安全にデータを送受信できる(二重 SSH トンネリングを活用)

    # 수신자
    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 キー管理はユーザーが別途行う必要があり、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 サーバーを構築して 2 つのクライアントを接続すれば、それぞれの IP にデータを届けられるが、結局は中央リレーがデータ中継の役割を担う(NAT の有無に関係なく)
    • ssh-j.com を今になって知ったが、かなり興味深い
  • 2 台の PC が USB ケーブルだけで簡単にファイルをやり取りすることが標準になっていない理由が気になる。すべての OS が同じプロトコルだけをサポートすれば、最初から提供されていてよかった機能に思える。USB A-A ケーブルが理論上存在しないのはわかるが、そういう点こそ必要性の根拠になる。USB C なら十分可能なはずで、Android と PC の間ではある程度できるが、2 台のノート PC 同士ではできない

    • USB-C (USB4/Thunderbolt) で 2 台の機器をつなぐとネットワーク接続が作られる。デフォルトでは Link-Local アドレスしか割り当てられないので SSH などを使うには少し面倒だが、自動ネットワーク検出機能があればかなりスムーズに動く。参考: Thunderbolt Networking on Linux, SuperUser の回答
    • 無線で、ケーブルなしでも LAN なしでも可能だった技術はすでに Nintendo DS にも実装されていた。過去 40 年でファイル転送の問題は数え切れないほど多様な方法で解決されてきたが、一部の人たちはクラウドサービスなしにこの問題が永久に解決されるのを望んでいないようにも感じる。dumbpipe は興味深いが、既存の多くのソリューションと同じ現実的な壁にぶつかる可能性がある。たとえば 50MB のファイルを Linux ユーザーが Windows ユーザーに渡したくても、Windows 側で別のプログラムをインストールしない限り受け取る方法がない
    • USB は構造的に非対称なので、ホストとデバイスに分かれる。デバイスはポーリング方式のスレーブとして動作する。2 台の PC 間の有線直結は、すでに USB 以前にイーサネットで解決されていた問題だ
    • TCP/IP が汎用標準になる前は、イーサネットのクロスオーバーケーブルで大きなファイルを転送していた。最近は多くの PC からイーサネットポートがなくなりつつあるが、これは所有者に自分のファイルを第三者のインターネット上のコンピューター(クラウド)へアップロードさせようとする観点と関係する変化だ。時代とともにファイル転送方法は多様化したが、クロスオーバーケーブル方式はいまでも十分使え、USB to Ethernet アダプターさえあれば可能だ。特別なソフトウェアも、ルーターも、インターネットも、第三者も不要。TCP/IP だけで十分だ
    • Linux では、モバイルデバイスのように MTP エンドポイントを生成すれば可能 uMTP-Responder
      MS もこれをサポートするツールを出していたが、Windows CE でしか提供されていなかったようだ MS 公式リンク
  • 関連して、私がまとめたファイル転送ツールの一覧(主にブラウザベース + 少しの CLI)がある。状況が来るたびに共有していて、良いツールをさらに探している 私のツール一覧

    • LocalSend を好んで使っている。自分の機器間での高速転送に優れていて、どの OS でもうまく動く LocalSend GitHub
    • dumbpipe を作ったチームは Sendme も作っていて、こちらの方がこの用途にはずっと近い設計になっている Sendme GitHub
  • dumbpipe と Tailscale の間で、どれくらい実装の重複があるのか気になる。共通して必要な機能がかなり多そうで、NAT 通過のような低レベル部分ではすでに使えるライブラリがいろいろありそうだ。あるいはこれが最初のそうしたライブラリなのかもしれない

    • 厳密に言えば、Tailscale 自体も同じアイデアの 600 番目くらいの実装だ。その前にも nebula や tinc などがあった。単に WireGuard が台頭するタイミングで登場し、大規模な宣伝に VC 資金が加わった効果だ
    • Iroh はアプリケーション層にはるかに適している。複数の QUIC ストリームを 1 つの接続上で用途別に多重化できる。必要なのは QUIC へのアクセスだけで、仮想ネットワークインターフェースも不要だ。似た例として gRPC はあるが、byte stream の制御がより自由で、1 つのストリームは音声通話、別のストリームはファイル転送、さらに別のストリームは単純な RPC などとしてリアルタイムに分割して使える。WebRTC に最も近いが、SCTP や RTMP より多くの選択肢を提供する
    • これは iroh で作られたもので、分散ソフトウェア向けの低レベルフレームワークを目指している。ネットワーキング以外にも、データ複製や一貫性維持に必要なさまざまなデータ構造を含んでいる
    • モバイル/cignat 環境で Tailscale でスマホを接続してみたときは、本当に珍しいソフトウェアの「アハ体験」だった
    • tailscale は WireGuard ベースに一部 hole-punch 機能を加えたラッパーだと考えている
  • pico.sh では似たようなファイル転送機能を SSH を使って実装していた pipe.pico.sh

    • dumbpipe と直接ベンチマークしたら、性能や使い勝手でどんな結果になるのか気になる
  • こうした類のトンネリングツールのエコシステムに興味があるなら、参考になる awesome リストがある awesome-tunneling

  • iroh は本当に素晴らしい技術だ。2 週間前にベルリンの web3 summit で Rüdiger(N0)のワークショップに参加したが、ものすごく刺激を受けた。似たようなサービスを作るコードがここで公開されている iroh-workshop コード スライドもぜひ見てほしい

  • もう少し進んだ pipe が欲しいなら、私が Iroh ベースで開発中のトンネルマネージャー CLI もある。TCP、UDP、UNIX ソケットのポートフォワーディングをサポート qtm GitLab

  • この種のソリューションは年に 1、2 回は登場する。接続オーケストレーションに特化した良いオープンソースとして Spacebrew を勧めたい Spacebrew 公式ドキュメント

    • そういう意味ではその通りだが、このプロジェクトのブランディングは本当に独特だ。文字通りダムパイプの人型キャラクターにおかしな腕というコンセプトだ。それに、単純にちゃんと動く
    • 「2023年には...」
  • この方法はいつも特に興味深かった pwnat GitHub
    すべてのケースをカバーできるわけではなく、少し複雑ではあるが、中間の媒介が不要という最大の利点がある

    • これはかなり古いソリューションで、最近の一部のルーターでは問題が出ることもある イシューへのリンク
    • slipstream GitHub が新しく出たバージョンだ
    • こういうツールを初めて知ったが、本当に使えそうだ。ただし NAT 構造の限界により、このアプローチにはファイアウォール規則を無視して悪意あるプログラムがインバウンド接続を簡単に開けてしまう欠点もある
    • 何より Samy は私にとって英雄のような存在だ