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

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

您可以对使用多个连接或端口的设备使用多路复用功能。当您需要与远程设备建立多个连接以解决任何问题时,也可以使用多路复用功能。例如,对于需要发送多个 HTTP 和 SSH 数据流的 Web 浏览器,可以使用此功能。通过多路复用隧道将来自两个数据流的应用程序数据同时发送到设备。

示例使用案例

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

如何设置多路复用隧道

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

  1. (可选)创建配置文件

    您可以选择使用配置文件来配置源和目标设备。如果您的端口映射可能会经常发生更改,请使用配置文件。如果您希望使用 CLI 显式指定端口映射,或者如果您不需要在指定侦听端口上启动本地代理,则可跳过此步骤。有关如何使用配置文件的更多信息,请参阅 GitHub 中的通过 --config 设置的选项

    1. 在源设备上,在将运行本地代理的文件夹中,创建一个名为 Config 的配置文件夹。在此文件夹中,使用以下内容创建一个名为 SSHSource.ini 的文件:

      HTTP1 = 5555 SSH1 = 3333
    2. 在目标设备上,在将运行本地代理的文件夹中,创建一个名为 Config 的配置文件夹。在此文件夹中,使用以下内容创建一个名为 SSHDestination.ini 的文件:

      HTTP1 = 80 SSH1 = 22
  2. 打开隧道

    使用 OpenTunnel API 操作或 open-tunnel CLI 命令打开隧道。通过将 SSH1HTTP1 指定为与远程设备对应的 Amazon IoT 事物的服务和名称来配置目标。您的 SSH 和 HTTP 应用程序正在此远程设备上运行。您必须已在 Amazon 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. 配置和启动本地代理

    必须先设置 Amazon IoT 设备客户端,或者从 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 连接的应用程序数据。如下面的地图中所示,服务标识符充当可读格式,用于转换源设备和目标设备之间的端口映射。利用此配置,安全隧道将来自源设备上的端口 5555 的所有传入 HTTP 流量转发到目标设备上的端口 80,并将来自端口 3333 的所有传入 SSH 流量转发到目标设备上的端口 22