보안 터널에서 다중 데이터 스트림 멀티플렉싱 - AWS IoT Core

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

보안 터널에서 다중 데이터 스트림 멀티플렉싱

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

사용 사례

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

서로 다른 프로토콜을 통해 데이터를 스트리밍하기 위한 소스 디바이스, 프록시 서버 및 대상 디바이스가 있는 IoT 클라우드 아키텍처를 보여주는 다이어그램입니다.

멀티플렉싱 터널을 설정하는 방법

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

  1. (선택 사항) 구성 파일 생성

    구성 파일을 사용하여 소스 및 대상 디바이스를 선택적으로 구성할 수 있습니다. 포트 매핑이 자주 변경될 가능성이 있는 경우 구성 파일을 사용합니다. 를 사용하여 포트 매핑을 명시적으로 지정하려는 경우 CLI또는 지정된 수신 대기 포트에서 로컬 프록시를 시작할 필요가 없는 경우 이 단계를 건너뛸 수 있습니다. 구성 파일 사용 방법에 대한 자세한 내용은 의 --config를 통해 설정된 옵션을 참조하세요 GitHub.

    1. 소스 디바이스의 로컬 프록시가 실행될 폴더에 Config라는 구성 폴더를 생성합니다. 이 폴더 안에 다음 내용으로 SSHSource.ini라는 파일을 만듭니다.

      HTTP1 = 5555 SSH1 = 3333
    2. 대상 디바이스의 로컬 프록시가 실행될 폴더에 Config라는 구성 폴더를 생성합니다. 이 폴더 안에 다음 내용으로 SSHDestination.ini라는 파일을 만듭니다.

      HTTP1 = 80 SSH1 = 22
  2. 터널 열기

    OpenTunnel API 작업 또는 open-tunnel CLI 명령을 사용하여 터널을 엽니다. SSH1 및 를 서비스 HTTP1 및 원격 디바이스에 해당하는 AWS IoT 사물의 이름으로 지정하여 대상을 구성합니다. SSH 및 HTTP 애플리케이션이 이 원격 디바이스에서 실행 중입니다. AWS IoT 레지스트리에서 IoT 사물을 이미 생성했어야 합니다. 자세한 내용은 레지스트리로 사물 관리 단원을 참조하십시오.

    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 }
  3. 로컬 프록시 구성 및 시작

    로컬 프록시를 실행하기 전에 AWS IoT Device Client를 설정하거나 에서 로컬 프록시 소스 코드를 다운로드GitHub하여 원하는 플랫폼에 맞게 빌드합니다. 그런 다음 대상 및 소스 로컬 프록시를 시작하여 보안 터널에 연결할 수 있습니다. 로컬 프록시 구성 및 사용에 대한 자세한 내용은 로컬 프록시 사용 방법 섹션을 참조하세요.

    참고

    소스 디바이스에서 구성 파일을 사용하지 않거나 를 사용하여 포트 매핑을 지정하지 않더라도 동일한 명령을 사용하여 로컬 프록시를 실행할 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 연결의 애플리케이션 데이터를 다중화된 터널을 통해 동시에 전송할 수 있습니다. 아래 맵에서 볼 수 있듯이 서비스 식별자는 소스 디바이스와 대상 디바이스 간에 포트 매핑을 변환하는 읽기 쉬운 형식으로 작동합니다. 이 구성을 사용하면 보안 터널링이 포트에서 들어오는 모든 HTTP 트래픽을 전달합니다.5555 소스 디바이스에서 포트로 80 대상 디바이스 및 포트SSH에서 들어오는 트래픽 3333 포트로 22 대상 디바이스에서.

소스 및 대상 로컬 프록시의 서비스 식별자를 처리 후 번역된 포트 매핑으로 매핑하는 번역 프로세스입니다.