安全隧道中的多路复用数据流 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

安全隧道中的多路复用数据流

您可以使用安全隧道多路复用功能,为每个隧道使用多个数据流。通过多路复用,您可以对使用多个连接或端口的设备进行故障排除(例如,需要发送多个 HTTP 和 SSH 数据流的 Web 浏览器)。您还可以通过取消构建、部署和启动多个本地代理或向同一设备打开多个隧道来减少操作负载。

示例使用案例

如果现场中的设备需要与设备的多个连接才能正确排除故障,则可以使用多路复用功能。例如,您可能需要连接到设备上的 Web 应用程序来更改某些联网参数,同时通过终端发出 shell 命令,以验证设备是否使用新的联网参数正常运行。在这种情况下,您可能需要通过 HTTP 和 SSH 连接到设备,并传输两个并行数据流,以便同时访问 Web 应用程序和终端。通过多路复用功能,这两个独立的流可以同时通过同一隧道传输。

如何设置多路复用隧道

以下流程将指导您如何设置多路复用隧道,以便使用需要连接到多个端口的应用程序对设备进行故障排除。您将设置一个隧道,其中包含两个多路复用流:一个 HTTP 流和一个 SSH 流。

  1. 首先,使用配置文件配置目标设备。如果端口映射不太可能更改,则可以在设备上提供配置文件。在目标设备上,在运行本地代理的同一文件夹中创建名为 config 的目录。然后,在此目录中创建一个名为 SSHSource.ini 的文件。此文件的内容是:

    HTTP1 = 5555 SSH1 = 3333
    注意

    如果您希望通过 CLI 指定端口映射,或者不需要在指定侦听端口上启动本地代理,则可跳过此步骤。

  2. 接下来,使用配置文件配置源设备。在运行本地代理的同一文件夹中,创建一个名为 config 的配置目录并授予本地代理对此目录的读取权限。然后,在此目录中创建一个名为 SSHDestination.ini 的文件。此文件的内容是:

    HTTP1 = 80 SSH1 = 22
    注意

    如果您要通过 CLI 指定端口映射,则可跳过此步骤。如此,则您需要更新隧道代理以使用新参数。

  3. 使用服务标识符 HTTP1SSH1 打开隧道。如果您的设备未注册到 Amazon IoT,则 thingName 是可选的。

    aws iotsecuretunneling open-tunnel \ --destination-config thingName=foo,services=HTTP1,SSH1

    此次调用后,将提供目标和源客户端访问令牌。请注意 destination_client_access_tokensource_client_access_token 以了解后续步骤。该输出值应该类似于以下内容。

    { "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 }
  4. 接下来,启动目标本地代理。您将在令牌交付时连接到安全隧道服务。在目标设备上运行的本地代理以目标模式启动。您有两种选择来实现此目标:

    1. 使用步骤 1 中的配置文件启动目标本地代理。

      ./localproxy -r us-east-1 -m dst -t destination_client_access_token
    2. 使用通过 CLI 指定的映射启动目标本地代理。

      ./localproxy -r us-east-1 -d HTTP1=80,SSH1=22 -t destination_client_access_token
  5. 现在,启动源本地代理。源设备上运行的本地代理以源模式启动。您有三种选择来实现此目标:

    1. 使用步骤 2 中的配置文件启动源本地代理。

      ./localproxy -r us-east-1 -m src -t source_client_access_token
    2. 使用通过 CLI 指定的映射启动源本地代理。

      ./localproxy -r us-east-1 -s HTTP1=5555,SSH1=3333 -t source_client_access_token
    3. 在没有配置文件和 CLI 指定映射的情况下启动源本地代理。本地代理将选取可用端口以使用和管理映射。

      ./localproxy -r us-east-1 -m src -t source_client_access_token
  6. 现在可以通过多路复用隧道同时传输来自 SSH 和 HTTP 连接的应用程序数据。从下面的地图中可以看出,服务标识符充当可读格式,用于转换源设备和目标设备之间的端口映射。通过此配置,安全隧道服务将:

    1. 将源设备上端口 5555 的所有传入 HTTP 流量转发到目标设备上的端口 80。

    2. 将源设备上的端口 3333 的所有传入 SSH 流量转发到目标设备上的端口 22。