

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

# ローカルプロキシの使用方法
<a name="how-use-local-proxy"></a>

送信元デバイスおよび宛先デバイスでローカルプロキシを実行して、セキュアトンネリングエンドポイントにデータを送信できます。デバイスが、ウェブプロキシを使用するネットワーク内にある場合、ウェブプロキシは接続をインターネットに転送する前にそれらをインターセプトできます。この場合、ウェブプロキシを使用するようにローカルプロキシを設定する必要があります。詳細については、「[ウェブプロキシを使用するデバイスのローカルプロキシを設定します](configure-local-proxy-web-proxy.md)」を参照してください。

## ローカルプロキシのワークフロー
<a name="local-proxy-workflow"></a>

次の手順は、送信元デバイスおよび宛先デバイスでローカルプロキシがどのように実行されるかを説明します。

1. 

**ローカルプロキシをセキュアトンネリングに接続する**  
まず、ローカルプロキシはセキュアトンネリングへの接続を確立する必要があります。ローカルプロキシを起動するとき、次の引数を使用します。
   + トンネルが開かれる AWS リージョン を指定する`-r`引数。
   + `OpenTunnel` から返された送信元または宛先のクライアントアクセストークンを渡す `-t` 引数。
**注記**  
同じクライアントアクセストークン値を使用する 2 つのローカルプロキシを同時に接続することはできません。

1. 

**送信元または宛先アクションの実行**  
WebSocket 接続が確立されると、ローカルプロキシは、その設定に応じて、送信元モードまたは宛先モードのいずれかのアクションを実行します。

   デフォルトでは、入力/出力 (I/O) エラーが発生した場合、または WebSocket 接続が予期せず閉じられた場合、ローカルプロキシは、セキュアトンネリングに再接続しようとします。これにより、TCP 接続が閉じられます。TCP ソケットエラーが発生した場合、ローカルプロキシはトンネルを経由してメッセージを送信し、相手側に TCP 接続を閉じるように通知します。デフォルトでは、ローカルプロキシは常に SSL 通信を使用します。

1. 

**ローカルプロキシの停止**  
トンネルを使用した後は、ローカルプロキシプロセスを停止しても安全です。`CloseTunnel` を呼び出して、トンネルを明示的に閉じることを推奨します。アクティブなトンネルクライアントは、`CloseTunnel` を呼び出した直後に閉じられないことがあります。

を使用してトンネル AWS マネジメントコンソール を開き、SSH セッションを開始する方法の詳細については、「」を参照してください[トンネルを開き、リモートデバイスへの SSH セッションを開始します](secure-tunneling-tutorial-open-tunnel.md)。

## ローカルプロキシのベストプラクティス
<a name="local-proxy-security"></a>

ローカルプロキシを実行する場合は、以下のベストプラクティスに従ってください。
+ `-t` ローカルプロキシ引数を使用してアクセストークンを渡すことは避けてください。`AWSIOT_TUNNEL_ACCESS_TOKEN` 環境変数を使用して、ローカルプロキシのアクセストークンを設定することをお勧めします。
+ オペレーティングシステムまたは環境で、ローカルプロキシ実行可能ファイルを最小特権で実行します。
  + Windows では、ローカルプロキシを管理者として実行することは避けてください。
  + Linux および macOS の場合は、ローカルプロキシを root として実行することは避けてください。
+ 個別のホスト、コンテナ、サンドボックス、chroot jail、または仮想化環境でローカルプロキシを実行することを検討してください。
+ ツールチェーンに応じて、関連するセキュリティフラグを持つローカルプロキシを構築します。
+ 複数のネットワークインターフェイスを持つデバイスでは、`-b`引数を使用して、送信先アプリケーションとの通信に使用されるネットワークインターフェイスに、TCP ソケットをバインドします。

## コマンドと出力の例
<a name="example-cmd-output-localproxy"></a>

以下は、実行するコマンドと、対応する出力の例です。この例は、ローカルプロキシを `source` および `destination` モードの両方で設定する方法を示しています。ローカルプロキシは HTTPS プロトコルを WebSockets にアップグレードして存続期間が長い接続を確立し、接続を介して安全なトンネリングデバイスエンドポイントへのデータの送信を開始します。

**次のコマンドを実行する前に:**  
トンネルをオープンし、送信元と送信先のクライアントアクセストークンを取得しておく必要があります。また、前述の説明に従ってローカルプロキシを構築しておく必要もあります。ローカルプロキシを構築するには、GitHub レポジトリで[ローカルプロキシのソースコード](https://github.com/aws-samples/aws-iot-securetunneling-localproxy)を開き、ローカルプロキシを構築、インストールするための手順に従います。

**注記**  
この例で使用される以下のコマンドは、ローカルプロキシを実行した後の異なるステップ (先ほど説明したもの) の概要を説明するために `verbosity` フラグを使用します。このフラグはテストのみに使用することが推奨されます。

**出典モードでのローカルプロキシの実行**  
以下のコマンドは、ローカルプロキシを送信元モードで実行する方法を示しています。

------
#### [ Linux/macOS ]

Linux または macOS では、ターミナルで次のコマンドを実行して、送信元でローカルプロキシを設定および起動します。

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
./localproxy -s 5555 -v 5 -r us-west-2
```

コードの説明は以下のとおりです。
+ `-s` は送信元リッスンポートです。ローカルプロキシを送信元モードで起動します。
+ `-v` は出力の冗長性です。0～6 の値を指定できます。
+ `-r` は、トンネルが開かれるエンドポイントリージョンです。

これらのパラメータの詳細については、「[コマンドライン引数を使用して設定されるオプション](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments)」を参照してください。

------
#### [ Windows ]

Windows では、Linux や macOS の場合と同様にローカルプロキシを設定しますが、環境変数の定義方法は、他のプラットフォームとは異なります。`cmd` ウィンドウで以下のコマンドを実行し、送信元のローカルプロキシを設定して起動します。

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
.\localproxy -s 5555 -v 5 -r us-west-2
```

コードの説明は以下のとおりです。
+ `-s` は送信元リッスンポートです。ローカルプロキシを送信元モードで起動します。
+ `-v` は出力の冗長性です。0～6 の値を指定できます。
+ `-r` は、トンネルが開かれるエンドポイントリージョンです。

これらのパラメータの詳細については、「[コマンドライン引数を使用して設定されるオプション](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments)」を参照してください。

------

**注記**  
ソースモードで最新バージョンのローカルプロキシを使用する場合は、下位互換性のために`--destination-client-type V1`ソースデバイスに AWS CLI パラメータを含める必要があります。これは、次のいずれかの送信先モードに接続する場合に適用されます。  
AWS IoT デバイスクライアント
AWS IoT セキュアトンネリングコンポーネントまたは AWS IoT Greengrass Version 2 セキュアトンネリングコンポーネント
2022 年以前に作成された AWS IoT Secure Tunneling デモコード
ローカルプロキシの 1.X バージョン
このパラメータにより、更新された送信元のプロキシと古い送信先クライアント間の適切な通信が確保されます。ローカルプロキシのバージョンの詳細については、*GitHub* の「[AWS IoT Secure Tunneling](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following)」を参照してください。

以下は、ローカルプロキシを `source` モードで実行した出力の例です。

```
...
...

Starting proxy in source mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved proxy  server IP: 10.10.0.11
Connected successfully with proxy server
Performing SSL handshake with proxy server	
Successfully completed SSL handshake with proxy server
HTTP/1.1 101 Switching Protocols

...

Connection: upgrade
channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
upgrade: websocket

...

Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Setting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
Resolved bind IP: 127.0.0.1
Listening for new connection on port 5555
```

**送信先モードでのローカルプロキシの実行**  
以下のコマンドは、送信先モードでローカルプロキシを実行する方法を示しています。

------
#### [ Linux/macOS ]

Linux または macOS では、ターミナルで次のコマンドを実行して、宛先でローカルプロキシを設定および起動します。

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
./localproxy -d 22 -v 5 -r us-west-2
```

コードの説明は以下のとおりです。
+ `-d` は宛先アプリケーションです。ローカルプロキシを宛先モードで起動します。
+ `-v` は出力の冗長性です。0～6 の値を指定できます。
+ `-r` は、トンネルが開かれるエンドポイントリージョンです。

これらのパラメータの詳細については、「[コマンドライン引数を使用して設定されるオプション](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments)」を参照してください。

------
#### [ Windows ]

Windows では、Linux や macOS の場合と同様にローカルプロキシを設定しますが、環境変数の定義方法は、他のプラットフォームとは異なります。`cmd` ウィンドウで以下のコマンドを実行して、宛先のローカルプロキシを設定して起動します。

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
.\localproxy -d 22 -v 5 -r us-west-2
```

コードの説明は以下のとおりです。
+ `-d` は宛先アプリケーションです。ローカルプロキシを宛先モードで起動します。
+ `-v` は出力の冗長性です。0～6 の値を指定できます。
+ `-r` は、トンネルが開かれるエンドポイントリージョンです。

これらのパラメータの詳細については、「[コマンドライン引数を使用して設定されるオプション](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments)」を参照してください。

------

**注記**  
宛先モードで最新バージョンのローカルプロキシを使用する場合は、下位互換性のために`--destination-client-type V1`宛先デバイスに AWS CLI パラメータを含める必要があります。これは、次のいずれかの送信元モードに接続する場合に適用されます。  
 AWS コンソールからのブラウザベースのセキュアトンネリング。
ローカルプロキシの 1.X バージョン
このパラメータにより、更新された送信先プロキシと古い送信元クライアント間の適切な通信が保証されます。ローカルプロキシのバージョンの詳細については、*GitHub* の「[AWS IoT Secure Tunneling](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following)」を参照してください。

以下は、ローカルプロキシを `destination` モードで実行した出力の例です。

```
...
...

Starting proxy in destination mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved proxy  server IP: 10.10.0.11
Connected successfully with proxy server
Performing SSL handshake with proxy server	
Successfully completed SSL handshake with proxy server
HTTP/1.1 101 Switching Protocols

...

Connection: upgrade
channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
upgrade: websocket

...

Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Setting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
```