本地代理 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本地代理

本地代理是一个进程,它充当传入 TCP 连接的接收者或发送者。它借助 WebSocket 安全连接通过安全隧道服务传输设备应用程序发送的数据。您可以从 GitHub 下载本地代理源。本地代理可以在两种模式下运行:sourcedestination。在源模式下,本地代理与启动 TCP 连接的客户端应用程序在同一设备或网络上运行。在目标模式下,本地代理与目标应用程序一起在远程设备上运行。目前,单个隧道一次只能支持一个 TCP 连接。

本地代理首先建立与安全隧道服务的连接。启动本地代理时,请使用 -r 参数指定打开隧道的 AWS 区域。使用 -t 参数传递从 OpenTunnel 返回的源客户端访问令牌或目标客户端访问令牌。不能同时连接两个使用相同客户端访问令牌值的本地代理。

建立 WebSocket 连接后,本地代理会根据其配置执行源模式行为或目标模式行为。

默认情况下,如果出现任何 I/O 错误或 WebSocket 连接意外关闭,本地代理会尝试重新连接到安全隧道服务。这会导致 TCP 连接关闭。如果出现任何 TCP 套接字错误,本地代理将通过隧道发送一条消息,通知对方关闭其 TCP 连接。默认情况下,本地代理始终使用 SSL 通信。

当您使用隧道后,终止本地代理进程是安全的。我们建议您通过调用 CloseTunnel 显式关闭隧道。调用 CloseTunnel 后可能不会立即关闭活动隧道客户端。

本地代理安全最佳实践

运行本地代理时,请遵循以下安全最佳实践:

  • 避免使用本地代理参数 -t 传入访问令牌。我们建议您使用 AWSIOT_TUNNEL_ACCESS_TOKEN 环境变量设置本地代理的访问令牌。

  • 在操作系统或环境中以最少权限运行本地代理可执行文件。

    • 避免以管理员身份在 Windows 上运行本地代理。

    • 避免以 root 身份在 Linux 和 macOS 上运行本地代理。

  • 考虑在单独的主机、容器、沙盒、chroot jail 或虚拟化环境上运行本地代理。

  • 使用相关安全标志构建本地代理,具体取决于您的工具链。

  • 在具有多个网络接口的设备上,使用 -b 参数将 TCP 套接字绑定到用于与目标应用程序通信的网络接口。