web-dev-qa-db-ja.com

ファイアウォールの背後から2台のコンピューターを接続する

最近のBitTorrentSyncの登場により、インターネットに接続された2台のコンピューター間で信頼性の高いピアツーピア接続を実現する方法に興味を持ちました。

私の限られた理解と研究の範囲内で、少なくとも一方の端に開いている着信ポートがないと、コンピューターはポートトンネリングに接続できないことを理解しています。これは本当ですか?その場合、それは同期トラッカーがトンネルとしても動作することを意味しますか?それは、途方もない量のトラフィックがサーバーに到達していることを意味しませんか?

または、これを達成する別の方法はありますか?私はこの質問( 2台のコンピューターを背後にSSHで接続する方法NATとファイアウォール、3台目のコンピューターなし ))を見つけましたが、トンネリングなしでは完全に信頼できる解決策はありませんでした。

2
Jonah

NATとファイアウォールを混同していると思います

最悪のシナリオから始めましょう。ファイアウォールが適切に構成されており、必須ポートを除くすべてすべてが双方向でロックされています。これらのポートの1つを使用していない限り(そして誰も使用していない場合)、ファイアウォールの反対側にある2つのシステムを接続できるようにする方法はありません。これは iodine のようなツールが役立つところです。

ほとんどのホームファイアウォールはそれほど制限的ではありません-それらは多くの着信ポートを許可しませんが、ほとんどの外部ポートを許可します。そのため、ネットワーク内から接続を開始すると、任意のリソースに接続できます。多くのトンネリングメソッドはこれに依存しています。たとえば、「クラシック」リバースssh実装です。

NATはファイアウォールではありません。 Allは、ローカルIPアドレス範囲を持つ複数のシステムを単一の外部IPアドレスに接続できるようにします。ちなみに、これはほとんどの場合ファイアウォールとペアになっており、ポートのブロックや転送などを実行できます。 NATの場合、ポートを転送するか(または、最近流行していない場合でもupnpを使用する)、ホームファイアウォールが使用するメカニズムの多くを使用することができます。

システムからすべてを取得したので、おそらく見ているプロセスは ' ホールパンチング 'であり、ほとんどの場合、 TCPホールパンチング のフレーバーです。 (UDPはオプションであり、同期が別のトランスポートメカニズムを使用していることを示すものは見当たらないため)、upnpを介したポートマッピングのオプションもあります。これは経験上より高速です。トレントはポートが転送されないことを許容できますが、そのようにはうまく機能しません。同様に、最悪のシナリオのシステムでは、まったく機能しません。トレントは魔法ではありません。

トレントトラッカーが行う可能性はallです(従来のトラッカーと同じように)、必要なファイルが特定のクライアントにあることを知らせ、両方に伝えます話をし、邪魔にならないようにします。

5
Journeyman Geek