

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Come utilizzare il proxy locale
<a name="how-use-local-proxy"></a>

Puoi eseguire il proxy locale sui dispositivi di origine e di destinazione per trasmettere i dati agli endpoint di tunneling sicuro. Se i tuoi dispositivi si trovano in una rete che utilizza un proxy web, il proxy web può intercettare le connessioni prima di inoltrarle a Internet. In questo caso, dovrai configurare il proxy locale per utilizzare il proxy Web. Per ulteriori informazioni, consulta [Configurare il proxy locale per i dispositivi che utilizzano il proxy web](configure-local-proxy-web-proxy.md). 

## Flusso di lavoro del proxy locale
<a name="local-proxy-workflow"></a>

I passaggi seguenti mostrano come avviene l'esecuzione del proxy locale sui dispositivi di origine e destinazione.

1. 

**Connessione del proxy locale al tunneling sicuro**  
Il proxy locale stabilisce innanzitutto una connessione al tunneling sicuro. Quando avvii il proxy locale, utilizza i seguenti argomenti:
   + L'`-r`argomento per specificare il modo Regione AWS in cui viene aperto il tunnel.
   + L'argomento `-t` per passare il token di accesso client di origine o di destinazione restituito da `OpenTunnel`.
**Nota**  
Non è possibile connettere contemporaneamente due proxy locali che utilizzano lo stesso valore del token di accesso client.

1. 

**Esecuzione di operazioni di origine o destinazione**  
Una volta stabilita la WebSocket connessione, il proxy locale esegue azioni in modalità di origine o in modalità destinazione, a seconda della configurazione.

   Per impostazione predefinita, il proxy locale tenta di riconnettersi al tunneling sicuro in caso di errori input/output (I/O) o se la WebSocket connessione viene chiusa in modo imprevisto. Ciò causa la chiusura della connessione TCP. Se si verificano errori di socket TCP, il proxy locale invia un messaggio attraverso il tunnel per notificare all'altro lato di chiudere la connessione TCP. Per impostazione predefinita, il proxy locale utilizza sempre la comunicazione SSL.

1. 

**Arresto del proxy locale**  
Dopo aver utilizzato il tunnel, è possibile terminare il processo proxy locale in modo sicuro. Si consiglia di chiudere esplicitamente il tunnel chiamando `CloseTunnel`. I client di tunnel attivi potrebbero non essere chiusi subito dopo la chiamata. `CloseTunnel`

Per ulteriori informazioni su come utilizzare per Console di gestione AWS aprire un tunnel e avviare una sessione SSH, vedere[Apertura di un tunnel e avvio di una sessione SSH su un dispositivo remoto](secure-tunneling-tutorial-open-tunnel.md).

## Best practice per i proxy locali
<a name="local-proxy-security"></a>

Quando esegui un proxy locale, attieniti alle best practice seguenti:
+ Evitare l'uso dell'argomento proxy `-t` locale per passare un token di accesso. Si consiglia di utilizzare la variabile di ambiente `AWSIOT_TUNNEL_ACCESS_TOKEN` per impostare il token di accesso per il proxy locale.
+ Eseguire l'eseguibile del proxy locale con privilegi minimi nel sistema operativo o nell'ambiente.
  + Evitare di eseguire il proxy locale come amministratore in Windows.
  + Evitare di eseguire il proxy locale come root su Linux e macOS.
+ Si consiglia di eseguire il proxy locale su host separati, container, sandbox, chroot jail o un ambiente virtualizzato.
+ Creare il proxy locale con i flag di sicurezza pertinenti, a seconda della toolchain.
+ Nei dispositivi con più interfacce di rete, utilizzare l'argomento `-b` per associare il socket TCP all'interfaccia di rete utilizzata per comunicare con l'applicazione di destinazione. 

## Esempio di comando e output
<a name="example-cmd-output-localproxy"></a>

Di seguito viene illustrato un esempio di comando eseguito su sistema operativo Linux e l'output corrispondente. L'esempio mostra come il proxy locale può essere configurato in entrambe le modalità `source` e `destination`. Il proxy locale aggiorna il protocollo HTTPS per stabilire una connessione di lunga durata, quindi inizia WebSockets a trasmettere i dati attraverso la connessione agli endpoint sicuri del dispositivo di tunneling.

**Prima di eseguire questi comandi:**  
Prima di poter eseguire questi comandi, è necessario aver già aperto un tunnel e aver ottenuto i token di accesso del client per l'origine e la destinazione. Inoltre, devi avere creato il proxy locale come descritto in precedenza. Per creare il proxy locale, apri il [codice sorgente del proxy locale](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) nel GitHub repository e segui le istruzioni per la creazione e l'installazione del proxy locale.

**Nota**  
I seguenti comandi utilizzati negli esempi utilizzano il flag `verbosity` per illustrare una panoramica dei diversi passaggi descritti in precedenza dopo l'esecuzione del proxy locale. È consigliabile utilizzare questo flag solo per effettuare dei test.

**Esecuzione di proxy locale in modalità di origine**  
I seguenti comandi mostrano come eseguire il proxy locale in modalità sorgente.

------
#### [ Linux/macOS ]

Su Linux o macOS, esegui i seguenti comandi nel terminale per configurare e avviare il proxy locale sull'origine.

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

Dove:
+ `-s` è la porta di ascolto dell'origine che avvia il proxy locale nella modalità di origine.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------
#### [ Windows ]

Su Windows, si configura il proxy locale in modo simile a quello che si esegue per Linux o macOS, ma il modo in cui si definiscono le variabili di ambiente è diverso dalle altre piattaforme. Esegui i seguenti comandi nella finestra `cmd` per configurare e avviare il proxy locale sull'origine.

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

Dove:
+ `-s` è la porta di ascolto dell'origine che avvia il proxy locale nella modalità di origine.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Nota**  
Quando si utilizza la versione più recente del proxy locale in modalità sorgente, è necessario includere il AWS CLI parametro `--destination-client-type V1` sul dispositivo di origine per garantire la compatibilità con le versioni precedenti. Questo vale quando ci si connette a una di queste modalità di destinazione:  
AWS IoT Client del dispositivo
AWS IoT Componente di tunneling sicuro o componente di tunneling AWS IoT Greengrass Version 2 sicuro
Qualsiasi codice dimostrativo di AWS IoT Secure Tunneling scritto prima del 2022
Versioni 1.X del proxy locale
Questo parametro garantisce una comunicazione corretta tra il proxy di origine aggiornato e i client di destinazione precedenti. Per ulteriori informazioni sulle versioni proxy locali, vedere [AWS IoT Secure Tunneling on](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following). *GitHub*

Di seguito è riportato un esempio di output dell'esecuzione del proxy locale in `source` modalità.

```
...
...

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
```

**Esecuzione del proxy locale nella modalità di destinazione**  
I comandi seguenti mostrano come eseguire il proxy locale in modalità destinazione.

------
#### [ Linux/macOS ]

Su Linux o macOS, esegui i seguenti comandi nel terminale per configurare e avviare il proxy locale sulla destinazione.

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

Dove:
+ `-d` è l'applicazione di destinazione che avvia il proxy locale nella modalità di destinazione.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------
#### [ Windows ]

Su Windows, si configura il proxy locale in modo simile a quello che si esegue per Linux o macOS, ma il modo in cui si definiscono le variabili di ambiente è diverso dalle altre piattaforme. Esegui i seguenti comandi nella finestra `cmd` per configurare e avviare il proxy locale sulla destinazione.

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

Dove:
+ `-d` è l'applicazione di destinazione che avvia il proxy locale nella modalità di destinazione.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Nota**  
Quando si utilizza la versione più recente del proxy locale in modalità di destinazione, è necessario includere il AWS CLI parametro `--destination-client-type V1` sul dispositivo di destinazione per garantire la compatibilità con le versioni precedenti. Questo vale quando ci si connette a una di queste modalità di origine:  
Tunneling sicuro basato su browser dalla console. AWS 
Versioni 1.X del proxy locale
Questo parametro garantisce una comunicazione corretta tra il proxy di destinazione aggiornato e i client di origine precedenti. Per ulteriori informazioni sulle versioni proxy locali, vedere [AWS IoT Secure Tunneling on](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following). *GitHub*

Di seguito è riportato un esempio di output dell'esecuzione del proxy locale in `destination` modalità.

```
...
...

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...
```