2 つの着信 TCP 接続バインディング

2 つの着信 TCP 接続バインディング

複数のデバイスを接続するクライアントがあります。デバイスごとの毎月の固定IP料金は支払われません。構造を変更する予定です。この新しいアーキテクチャでは、デバイスはサーバーに接続されます。サーバーを作成する代わりに。中間ソリューションを探しています。

現在のアーキテクチャ:

--------------                           ------------
| POLLER APP | ------------------------> | DEVICE 1 |
--------------                           ------------
         |  |
         |  |                            ------------
         |  ---------------------------> | DEVICE 2 |
         |                               ------------
         |
         |                                   ...
         |
         |                               ------------
         ------------------------------> | DEVICE N |
                                         ------------

ポーラーアプリケーションは、固定IPを介して各デバイスに順次接続されます。

解決策1:

--------------                           ------------
|   SERVER   | <------------------------ | DEVICE 1 |
--------------                           ------------
         A  A
         |  |
         |  |                            ------------
         |  ---------------------------  | DEVICE 2 |
         |                               ------------
         |
         |                                   ...
         |
         |                               ------------
         ------------------------------  | DEVICE N |
                                         ------------

(私が好きではない)このソリューションでは、動的IPを持つデバイス用のサーバーアプリケーションを作成する必要があります。

解決策2(私が探しているもの):

                                         ------------
--------------                           |          |               ------------
| POLLER APP | ------------------------> |     X    | <------------ | DEVICE 1 |
--------------                           |          |               ------------
         |  |                            |          |
         |  |                            |          |               ------------
         |  ---------------------------> |          | <------------ | DEVICE 2 |
         |                               |          |               ------------
         |                               |          |
         |                               ------------
         |                               
         |                               ------------
         ------------------------------> | DEVICE S |
                                         ------------

X Box をサーバーとして使用します。リモートデバイスはこのボックスに接続できます。ポーラーアプリケーションローカルまたはUnixドメインソケットを介してサーバーに接続できます。 X Box はローカル接続からリモートデバイスにメッセージを繰り返します。

私の質問は次のとおりですこれを達成するのに役立つ完全なまたは部分的な解決策はありますか?着信2つの接続を直接簡単にバインドできますか?

ベストアンサー1

ポーラーがデバイスに接触する頻度によっては、使用するのに十分な場合があります。動的ドメイン名の解決。動的DNSを使用すると、静的IPアドレスはまったく必要なく、動的DNSをサポートするプロバイダが制御するドメイン名だけが必要です。デバイスが(再)接続されるたびに、DNSプロバイダに接続して新しいIPアドレスを要求します。この方法の欠点は、DNS情報の伝播に数分かかるため、IPアドレスが変更されるたびに数分間デバイスにアクセスできないことです。

静的IPアドレスを持つボックスが必要な場合は、次のようにします。NAT(ネットワークアドレス変換)。アイデアは、ボックスXが特定のポートから着信TCP接続を受信すると、テーブルを参照して接続を転送する(またはそれ自体で接続を取得する)デバイスを決定することです。これはIPパケットとTCP接続レベルで発生するため、ポーラーやデバイスに特別なソフトウェアをインストールする必要はありません。ポーラーは同じIPアドレスを使用するように設定しますが、ポート番号は異なります。

ほとんどすべてのデバイスがNATをサポートしています。たとえば、ホームルータは、インターネットサービスプロバイダが単一のIPアドレスしか提供していない場合でも、複数のデバイス(コンピュータ、電話など)をインターネットに接続できるようにします。この場合、デバイスはSNAT(ソースNAT)を実行します。つまり、ルータはコンピュータの代わりに独自のTCP接続元を変更します(逆に、他の方向のパケット宛先を変更します)。あなたの場合は、クライアント→サーバー方向のパケット宛先とサーバー→クライアント方向のパケットソースを変更するターゲットNAT(DNAT)が必要です。デバイスがインターネット上の他のコンピュータに接続する必要がある場合は、Box XにDNATとSNATの両方を実行させることができます。

Linuxでは、iptablesNATを設定できます。よりネットワークフィルタのしくみまたは、Web上のさまざまなLinux NATチュートリアルの1つを参照してください。

おすすめ記事