私のHTTP接続の1つがダウンロード速度が非常に遅くなったときに、私のPCで同じ外部IPアドレスを共有するエネルギー効率の高いホームサーバーに接続を移動できることを願っていました。
私が想像するように、特定のIPとポートで接続を引き継ぎ、接続の元の所有者が接続を閉じることなく、接続を介してすべての着信データをファイルに転送できるコマンドを実行したいと思います。
すでにこれを行うことができるツールはありますか?
答え1
ほとんどの場合、これは言葉ではありません。ダウンロードを中止してダウンロードしたコンテンツをサーバーにコピーし、それを使用してwget
ダウンロードを再開します。
答え2
NATファイアウォールに加えて、TCP / IP接続の仕組みを介してLAN上の複数のコンピュータ間で外部IPアドレスを共有できるため、これは可能ではないと思います。つまり、どのように機能するかを理解するのに役立つヒント/ヒントがいくつかあります。
ヒント #1 - スクリーン/tmux
通常、ダウンロードする大容量ファイルがある場合は、ssh
ネットワーク上の別のコンピュータに移動してそこからscreen / tmuxを実行します。 screen / tmuxセッションを使用すると、端末で長期実行プログラム(ダウンロードなど)を実行でき、ssh
セカンダリコンピュータから切断してもプログラムは停止しません。
パターンは次のとおりです。
laptop$ ssh remotemachine
...login...
remote$ screen -S mydownload
...now have a screen session called "mydownload"...
remote$ wget http://www.bigfiles.com/somebigfile
...Ctrl+A Ctrl+D.... <--- (disconnect from screensession)
...a little while later...
laptop$ ssh remotemachine
remote$ screen -r mydownload
...wget is still running in here...
ヒント#2 – xdg-open
このプログラムを使用すると、お気に入りのアプリケーションを介してファイルおよび/またはURLを実行できます。たとえば、「magnet://」ハンドラに接続するようにLANのリモートシステムにFirefoxを設定しました。リモートコンピュータでこれを行うと、次のコマンドを実行できます。
ssh remotemachine "DISPLAY=:0.0; xdg-open magnet://url_of_magnet_link...."
私のラップトップでは、リモートコンピュータがFirefoxを介してマグネットリンクのダウンロードを開始するように「トリガ」してから、Magnet://リンク処理に関連するアプリケーションにURLを渡します。この場合、私ビゼコース。
このためにFirefoxを設定する方法が気になる場合は、私がしばらく前に私のブログに書いたことがあります。記事のタイトルは次のとおりです。[1行]:LinuxでMagnet Linkを介してFirefox 10.xでBitTorrentクライアントを起動する方法。
答え3
IP、TCP、NATの観点からは、これは確かに可能です。サーバーがPCのIPアドレスを取得すると想像できます。また、必要なソケットデータ構造とプロトコル制御ブロックを初期化して、接続転送を準備するサーバー上のLinuxカーネルを想像することもできます。実際の接続転送には、2つのLinuxカーネル間の調整が必要です。
一つの有望なアプローチが存在する。TCP接続転送。これは、接続配信用のソケットAPIを拡張するカーネルパッチと、配信開始用のツールセットで構成されています。このアプローチは、アプリケーション層の役割を考慮します。
実際には、TCP接続には、両端が共有するアプリケーションの状態も含まれているということです。両当事者は、相手がこの状態に基づいて行動することを期待しています。したがって、一方の端をデータだけを吸収し、応答しない通常のエンティティに置き換えると、誤動作によって状態(および接続)が損傷する危険があります。これは、説明するシナリオでは問題にならない可能性がありますが、念頭に置いている一般的な接続配信システムの適用性を制限します。いいえ、そのようなものが存在するとは思いません。しかし、TCP接続の転送は良いスタートです。必要に応じてカスタマイズできます。