

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 보안 터널에서 다중 데이터 스트림 멀티플렉싱
<a name="multiplexing-multiple-streams"></a>

다중 연결 또는 포트를 사용하는 디바이스에 멀티플렉싱 기능을 사용할 수 있습니다. 문제 해결을 위해 원격 디바이스에 여러 번 연결해야 하는 경우에도 멀티플렉싱을 사용할 수 있습니다. 예를 들어 여러 HTTP 및 SSH 데이터 스트림을 전송해야 하는 웹 브라우저의 경우 멀티플렉싱을 사용할 수 있습니다. 두 스트림의 애플리케이션 데이터는 멀티플렉싱된 터널을 통해 디바이스로 동시에 전송됩니다.

## 사용 사례
<a name="multiplexing-use-case"></a>

예를 들어 디바이스 내 웹 애플리케이션에 연결하여 일부 네트워킹 파라미터를 변경하고 터미널을 통해 셸 명령을 실행하여 디바이스가 새 네트워킹 파라미터로 제대로 작동하는지 확인해야 할 수 있습니다. 이 시나리오에서는 웹 애플리케이션 및 터미널에 동시에 액세스하기 위해 HTTP 및 SSH 모두를 통해 디바이스에 연결하고 두 개의 병렬 데이터 스트림을 전송해야 할 수 있습니다. 멀티플렉싱 기능을 사용하면 이러한 두 개의 독립 스트림을 동일한 터널을 통해 동시에 전송할 수 있습니다.

![\[서로 다른 프로토콜을 통해 데이터를 스트리밍하기 위한 소스 디바이스, 프록시 서버 및 대상 디바이스가 있는 IoT 클라우드 아키텍처를 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/images/tunnel-multiplexing.png)


## 멀티플렉싱 터널을 설정하는 방법
<a name="multiplexing-tutorial"></a>

다음 절차에서는 여러 포트에 연결해야 하는 애플리케이션을 사용하여 디바이스 문제를 해결하기 위해 멀티플렉싱 터널을 설정하는 방법을 설명합니다. 하나의 HTTP 스트림과 하나의 SSH 스트림이라는 두 개의 멀티플렉싱된 스트림으로 하나의 터널을 설정합니다.

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/ko_kr/iot/latest/developerguide/images/multiplexing-post-mapping-translation.png)
