Cómo usar el proxy local - AWS IoT Core

Cómo usar el proxy local

Puede ejecutar el proxy local en los dispositivos de origen y destino para transmitir datos a los puntos de conexión de tunelización seguros. Si sus dispositivos están en una red que utiliza un proxy web, este puede interceptar las conexiones antes de reenviarlas a Internet. En este caso, tendrá que configurar su proxy local para utilizar el proxy web. Para obtener más información, consulte Configure el proxy local para los dispositivos que utilizan el proxy web.

Flujo de trabajo de proxy local

Los siguientes pasos muestran cómo se ejecuta el proxy local en los dispositivos de origen y destino.

  1. Conecta el proxy local a una tunelización segura

    En primer lugar, el proxy local debe establecer una conexión para asegurar el túnel. Al iniciar el proxy local, utilice los siguientes argumentos:

    • El argumento -r para especificar la Región de AWS en la que se abre el túnel.

    • El argumento -t para pasar el token de acceso del cliente de origen o de destino devuelto por el OpenTunnel.

      nota

      Dos proxies locales que utilicen el mismo valor de token de acceso de cliente no se pueden conectar al mismo tiempo.

  2. Realizar acciones de origen o destino

    Una vez establecida la conexión WebSocket, el proxy local realiza acciones en modo origen o en modo destino, en función de su configuración.

    Por defecto, el proxy local intenta volver a conectarse al túnel seguro si se produce algún error de entrada/salida (E/S) o si la conexión WebSocket se cierra inesperadamente. Esto hace que la conexión TCP se cierre. Si se produce algún error de socket TCP, el proxy local envía un mensaje a través del túnel para notificar al otro extremo que cierre su conexión TCP. De forma predeterminada, el proxy local siempre usa la comunicación SSL.

  3. Detener el proxy local

    Después de utilizar el túnel, puede detener el proceso del proxy local sin problemas. Le recomendamos que cierre explícitamente el túnel llamando a CloseTunnel. Es posible que los clientes del túnel activos no se cierren inmediatamente después de llamar a CloseTunnel.

Para obtener más información sobre cómo utilizar la Consola de administración de AWS para abrir un túnel e iniciar una sesión SSH, consulte Abra un túnel e inicie una sesión SSH en el dispositivo remoto.

Mejores prácticas del proxy local

Al ejecutar el proxy local, siga estas prácticas recomendadas:

  • Evite el uso del argumento -t del proxy local para pasar un token de acceso. Se recomienda utilizar la variable de entorno AWSIOT_TUNNEL_ACCESS_TOKEN para establecer el token de acceso del proxy local.

  • Ejecute el ejecutable del proxy local con privilegios mínimos en el sistema operativo o en el entorno.

    • Evite ejecutar el proxy local como administrador en Windows.

    • Evite ejecutar el proxy local como raíz en Linux y macOS.

  • Considere la posibilidad de ejecutar el proxy local en hosts distintos, contenedores, entornos de pruebas, chroot jail o en un entorno virtualizado.

  • Cree el proxy local con indicadores de seguridad relevantes, en función de su cadena de herramientas.

  • En dispositivos con varias interfaces de red, utilice el argumento -b para enlazar el socket TCP a la interfaz de red utilizada para comunicarse con la aplicación de destino.

Comando y salida de ejemplo

A continuación se muestra un ejemplo de comando que se ejecuta y el resultado correspondiente. El ejemplo muestra cómo se puede configurar el proxy local en ambos modos source y destination. El proxy local actualiza el protocolo HTTPS a WebSockets para establecer una conexión duradera y, a continuación, comienza a transmitir datos a través de la conexión a los puntos de conexión del dispositivo de tunelización segura.

Antes de ejecutar estos comandos:

Debe haber abierto un túnel y haber obtenido los tokens de acceso del cliente para el origen y el destino. También debe haber creado el proxy local tal y como se describió anteriormente. Para construir el proxy local, abra el código fuente del proxy local en el repositorio de GitHub y siga las instrucciones para construir e instalar el proxy local.

nota

Los siguientes comandos utilizados en los ejemplos usan la marca verbosity para ilustrar una descripción general de los diferentes pasos descritos anteriormente después de ejecutar el proxy local. Le recomendamos que utilice esta marca sólo con fines de prueba.

Ejecutar el proxy local en modo fuente

En los siguientes comandos se muestra cómo ejecutar el proxy local en modo origen.

Linux/macOS

En Linux o macOS, ejecute los siguientes comandos en el terminal para configurar e iniciar el proxy local en su fuente.

export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token} ./localproxy -s 5555 -v 5 -r us-west-2

Donde:

  • -s es el puerto de escucha de origen, que inicia el proxy local en modo fuente.

  • -v es la verbosidad de la salida, que puede tener un valor entre cero y seis.

  • -r es la región del punto de conexión en la que se abre el túnel.

Para obtener más información sobre los parámetros, consulte Opciones configuradas mediante argumentos de línea de comandos.

Windows

En Windows, el proxy local se configura de forma similar a como se hace en Linux o macOS, pero la forma en que se definen las variables de entorno es diferente a la de otras plataformas. Ejecute los siguientes comandos en la ventana cmd para configurar e iniciar el proxy local en su fuente.

set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token} .\localproxy -s 5555 -v 5 -r us-west-2

Donde:

  • -s es el puerto de escucha de origen, que inicia el proxy local en modo fuente.

  • -v es la verbosidad de la salida, que puede tener un valor entre cero y seis.

  • -r es la región del punto de conexión en la que se abre el túnel.

Para obtener más información sobre los parámetros, consulte Opciones configuradas mediante argumentos de línea de comandos.

nota

Al utilizar la última versión del proxy local en modo origen, debe incluir el parámetro --destination-client-type V1 de la AWS CLI en el dispositivo de origen para garantizar la compatibilidad con versiones anteriores. Esto se aplica cuando se conecta a cualquiera de estos modos destino:

  • Cliente de dispositivo de AWS IoT

  • Componente de Túnel seguro de AWS IoT o componente de Túnel seguro de AWS IoT Greengrass Version 2

  • Cualquier código de demostración de Túnel seguro de AWS IoT escrito antes de 2022

  • Versiones 1.X del proxy local

Este parámetro garantiza una comunicación adecuada entre el proxy de origen actualizado y los clientes de destino anteriores. Para obtener más información sobre las versiones de proxy local, consulte AWS IoT Secure Tunneling en GitHub.

A continuación, se muestra un ejemplo de resultado de la ejecución del proxy local en el modo source.

... ... Starting proxy in source mode Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443 Resolved proxy server IP: 10.10.0.11 Connected successfully with proxy server Performing SSL handshake with proxy server Successfully completed SSL handshake with proxy server HTTP/1.1 101 Switching Protocols ... Connection: upgrade channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456 upgrade: websocket ... Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456 Web socket subprotocol selected: aws.iot.securetunneling-2.0 Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443 Setting up web socket pings for every 5000 milliseconds Scheduled next read: ... Starting web socket read loop continue reading... Resolved bind IP: 127.0.0.1 Listening for new connection on port 5555
Ejecutar el proxy local en el modo de destino

En los siguientes comandos se muestra cómo ejecutar el proxy local en el modo destino.

Linux/macOS

En Linux o macOS, ejecute los siguientes comandos en el terminal para configurar e iniciar el proxy local en su destino.

export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token} ./localproxy -d 22 -v 5 -r us-west-2

Donde:

  • -d es la aplicación de destino que inicia el proxy local en modo de destino.

  • -v es la verbosidad de la salida, que puede tener un valor entre cero y seis.

  • -r es la región del punto de conexión en la que se abre el túnel.

Para obtener más información sobre los parámetros, consulte Opciones configuradas mediante argumentos de línea de comandos.

Windows

En Windows, el proxy local se configura de forma similar a como se hace en Linux o macOS, pero la forma en que se definen las variables de entorno es diferente a la de otras plataformas. Ejecute los siguientes comandos en la ventana cmd para configurar e iniciar el proxy local en su destino.

set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token} .\localproxy -d 22 -v 5 -r us-west-2

Donde:

  • -d es la aplicación de destino que inicia el proxy local en modo de destino.

  • -v es la verbosidad de la salida, que puede tener un valor entre cero y seis.

  • -r es la región del punto de conexión en la que se abre el túnel.

Para obtener más información sobre los parámetros, consulte Opciones configuradas mediante argumentos de línea de comandos.

nota

Al utilizar la última versión del proxy local en modo destino, debe incluir el parámetro --destination-client-type V1 de la AWS CLI en el dispositivo de destino para garantizar la compatibilidad con versiones anteriores. Esto se aplica cuando se conecta a cualquiera de estos modos origen:

  • Tunelización segura basada en el navegador desde la consola de AWS.

  • Versiones 1.X del proxy local

Este parámetro garantiza una comunicación adecuada entre el proxy de destino actualizado y los clientes de origen anteriores. Para obtener más información sobre las versiones de proxy local, consulte AWS IoT Secure Tunneling en GitHub.

A continuación, se muestra un ejemplo de resultado de la ejecución del proxy local en el modo destination.

... ... Starting proxy in destination mode Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443 Resolved proxy server IP: 10.10.0.11 Connected successfully with proxy server Performing SSL handshake with proxy server Successfully completed SSL handshake with proxy server HTTP/1.1 101 Switching Protocols ... Connection: upgrade channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456 upgrade: websocket ... Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456 Web socket subprotocol selected: aws.iot.securetunneling-2.0 Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443 Setting up web socket pings for every 5000 milliseconds Scheduled next read: ... Starting web socket read loop continue reading...