

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# セキュアトンネル内の複数のデータストリームを多重化する
<a name="multiplexing-multiple-streams"></a>

多重化機能は、複数の接続またはポートを使用するデバイスに使用できます。多重化は、問題のトラブルシューティングのためにリモートデバイスへの複数の接続が必要な場合にも使用できます。例えば、複数の HTTP および SSH データストリーミングを送信する必要があるウェブブラウザの場合、多重化を使用できます。両方のストリームからのアプリケーションデータが、多重化されたトンネルを介して同時にデバイスに送信されます。

## ユースケースの例
<a name="multiplexing-use-case"></a>

例えば、デバイス上のウェブアプリケーションに接続して、一部のネットワーキングパラメータを変更すると同時に、ターミナルからシェルコマンドを発行して、デバイスが新しいネットワーキングパラメータで正常に動作していることを確認する必要がある場合があります。このシナリオでは、ウェブアプリケーションとターミナルに同時にアクセスするために、HTTP と SSH の両方を介してデバイスに接続し、2 つの並列データストリームを転送する必要がある場合があります。多重化機能を使用すると、これらの 2 つの独立したストリーミングを同時に同じトンネルを介して転送できます。

![さまざまなプロトコルでデータをストリーミングするための送信元デバイス、プロキシサーバー、送信先デバイスを備えた IoT クラウドアーキテクチャを示す図。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/tunnel-multiplexing.png)


## 多重化トンネルの設定方法
<a name="multiplexing-tutorial"></a>

次の手順では、複数のポートへの接続を必要とするアプリケーションを使用してデバイスをトラブルシューティングするための多重化トンネルを設定する方法について説明します。HTTP ストリーミングと SSH ストリーミングの 2 つの多重化されたストリーミングを持つ 1 つのトンネルを設定します。

1. 

**オプションの設定ファイル**

   設定ファイルを使用して送信元および送信先デバイスを設定できます。ポートマッピングが頻繁に変更される可能性がある場合は、設定ファイルを使用します。CLI を使用して明示的にポートマッピングを指定する場合、または指定されたリスニングポートでローカルプロキシを開始する必要がない場合は、このステップを省略できます。設定ファイルの使用方法の詳細については、GitHub の「[ Options set via --config](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via---config)」(–-config を介して設定されるオプション) を参照してください。

   1. 送信元デバイスでローカルプロキシを実行するフォルダに、`Config` という設定フォルダを作成します。このフォルダ内で、次の内容を含む `SSHSource.ini` というファイルを作成します。

      ```
      HTTP1 = {{5555}}
      SSH1 = {{3333}}
      ```

   1. 送信先デバイスのローカルプロキシを実行するフォルダに、`Config` という設定フォルダを作成します。このフォルダ内で、次の内容を含む `SSHDestination.ini` というファイルを作成します。

      ```
      HTTP1 = {{80}}
      SSH1 = {{22}}
      ```

1. 

**トンネルを開く**

   `OpenTunnel` API オペレーションまたは `open-tunnel` CLI コマンドを使用してトンネルを開きます。`SSH1` および をサービス`HTTP1`として指定し、リモートデバイスに対応する AWS IoT モノの名前を指定して、送信先を設定します。SSH アプリケーションと HTTP アプリケーションはこのリモートデバイスで実行されています。 AWS IoT レジストリに IoT モノがすでに作成されている必要があります。詳細については、「[レジストリを使用したモノの管理](thing-registry.md)」を参照してください。

   ```
   aws iotsecuretunneling open-tunnel \
   	--destination-config thingName={{RemoteDevice1}},services=HTTP1,SSH1
   ```

   このコマンドを実行すると、ローカルプロキシの実行に使用する送信元と送信先のアクセストークンが生成されます。

   ```
   {
   	"tunnelId": "{{b2de92a3-b8ff-46c0-b0f2-afa28b00cecd}}",
   	"tunnelArn": "arn:aws:iot:{{us-west-2}}:{{431600097591}}:tunnel/{{b2de92a3-b8ff-46c0-b0f2-afa28b00cecd}}",
   	"sourceAccessToken": {{source_client_access_token}},
   	"destinationAccessToken": {{destination_client_access_token}}
   }
   ```

1. 

**ローカルプロキシを設定、起動します**

   ローカルプロキシを実行する前に、 AWS IoT Device Client を設定するか、[GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) からローカルプロキシソースコードをダウンロードして、任意のプラットフォーム用に構築します。その後、送信先と送信元のローカルプロキシを起動して、セキュアトンネルに接続できます。ローカルプロキシの設定と使用の詳細については、「[ローカルプロキシの使用方法](how-use-local-proxy.md)」を参照してください。
**注記**  
送信元デバイスでは、設定ファイルを使用しないか、CLI を使用してポートマッピングを指定しない場合でも、同じコマンドを使用してローカルプロキシを実行できます。ソースモードのローカルプロキシは、自動的に使用可能なポートを選択して、マッピングを使用します。

------
#### [ Start local proxy using configuration files ]

   次のコマンドを実行し、設定ファイルを使用して送信元モードと送信先モードでローカルプロキシを実行します。

   ```
   // ----------------- Start the destination local proxy -----------------------
   ./localproxy -r {{us-east-1}} -m dst -t {{destination_client_access_token}}
   
   // ----------------- Start the source local proxy ----------------------------
   // You also run the same command below if you want the local proxy to
   // choose the mappings for you instead of using configuration files.
   ./localproxy -r {{us-east-1}} -m src -t {{source_client_access_token}}
   ```

------
#### [ Start local proxy using CLI port mapping ]

   次のコマンドを実行し、CLI を使用してポートマッピングを明示的に指定することにより、送信元モードと送信先モードでローカルプロキシを実行します。

   ```
   // ----------------- Start the destination local proxy -----------------------------------
   ./localproxy -r {{us-east-1}} -d HTTP1={{80}},SSH1={{22}} -t {{destination_client_access_token}}
   
   // ----------------- Start the source local proxy ----------------------------------------
   ./localproxy -r {{us-east-1}} -s HTTP1={{5555}},SSH1={{33}} -t {{source_client_access_token}}
   ```

------

SSH および HTTP 接続からのアプリケーションデータを、多重化されたトンネルを介して同時に転送できるようになりました。以下のマップからわかるように、サービス識別子は、送信元デバイスと送信先デバイス間のポートマッピングを変換する読み取り可能な形式として機能します。この設定では、安全なトンネリングは、送信元デバイスのポート {{5555}} からのすべての着信 HTTP トラフィックを送信先デバイスのポート {{80}} に転送し、ポート {{3333}} からのすべての着信 SSH トラフィックを送信先デバイスのポート {{22}} に転送します。

![処理後に、送信元および送信先のローカルプロキシから翻訳されたポートマッピングにサービス識別子をマッピングするための翻訳プロセス。](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/images/multiplexing-post-mapping-translation.png)
