Condividi tramite


Risolvere i problemi di rete

Questo articolo descrive alcuni strumenti che consentono di diagnosticare i problemi di rete di varie complessità. Questi problemi includono scenari che vanno dalla risoluzione di un valore di risposta imprevisto fornito da un servizio all'individuazione della causa di un'eccezione di connessione chiusa.

Per la risoluzione dei problemi lato client, le librerie client di Azure per Java offrono una gestione dei log coerente e affidabile, come indicato in Configura la registrazione nell'Azure SDK per Java. Tuttavia, le librerie client effettuano chiamate di rete su diversi protocolli, che possono causare scenari di risoluzione dei problemi che si estendono all'esterno dell'ambito di risoluzione dei problemi fornito. Quando si verificano questi problemi, la soluzione consiste nell'usare gli strumenti esterni descritti in questo articolo per diagnosticare i problemi di rete.

Violinista

Fiddler è un proxy di debug HTTP che consente di registrare le richieste e le risposte che vengono inoltrate attraverso di esso as-is. Le richieste e le risposte non elaborate acquisite consentono di risolvere gli scenari in cui il servizio riceve una richiesta imprevista o il client riceve una risposta imprevista. Per usare Fiddler, è necessario configurare la libreria client con un proxy HTTP. Se si usa HTTPS, è necessaria una configurazione aggiuntiva per esaminare i corpi di richiesta e risposta decrittografati.

Aggiungere un proxy HTTP

Per aggiungere un proxy HTTP, seguire le indicazioni in Configurare proxy nell'SDK di Azure per Java. Assicurarsi di usare l'indirizzo Fiddler predefinito di localhost sulla porta 8888.

Abilitare la decrittografia HTTPS

Per impostazione predefinita, Fiddler può acquisire solo il traffico HTTP. Se l'applicazione usa HTTPS, è necessario eseguire passaggi aggiuntivi per considerare attendibile il certificato di Fiddler per consentire l'acquisizione del traffico HTTPS. Per altre informazioni, vedere menu HTTPS nella documentazione di Fiddler.

I passaggi seguenti illustrano come usare Java Runtime Environment (JRE) per considerare attendibile il certificato. Se il certificato non è attendibile, una richiesta HTTPS tramite Fiddler potrebbe non riuscire con avvisi di sicurezza.

  1. Esportare il certificato di Fiddler.

  2. Trova il keytool di JRE (in genere in jre/bin).

  3. Trova il certificato cacert del JRE (in genere in jre/lib/security).

  4. Aprire una finestra Bash e usare il comando seguente per importare il certificato:

    sudo keytool -import -file <location-of-Fiddler-certificate> -keystore <location-of-cacert> -alias Fiddler
    
  5. Immettere una password.

  6. Affidati al certificato.

Wireshark

wireshark è un analizzatore del protocollo di rete in grado di acquisire il traffico di rete senza dover apportare modifiche al codice dell'applicazione. Wireshark è altamente configurabile e può acquisire traffico di rete ampio o specifico fino al livello più basso. Questa funzionalità è utile per la risoluzione dei problemi relativi a scenari come la chiusura di una connessione da parte di un host remoto o la chiusura di connessioni durante un'operazione. L'interfaccia utente grafica di Wireshark visualizza le acquisizioni usando una combinazione di colori che identifica casi di acquisizione univoci, ad esempio una ritrasmissione TCP, una RST e così via. È anche possibile filtrare le acquisizioni in fase di acquisizione o durante l'analisi.

Configurare un filtro di acquisizione

I filtri di acquisizione riducono il numero di chiamate di rete acquisite per l'analisi. Senza filtri di acquisizione, Wireshark acquisisce tutto il traffico che passa attraverso un'interfaccia di rete. Questo comportamento può produrre grandi quantità di dati, la maggior parte dei quali può essere considerata irrilevante per l'indagine. L'uso di un filtro di acquisizione consente di delimitare preventivamente il traffico di rete acquisito per facilitare un'indagine. Per ulteriori informazioni, vedere Cattura dei Dati di Rete in Tempo Reale nella documentazione di Wireshark.

Nell'esempio seguente viene aggiunto un filtro di acquisizione per acquisire il traffico di rete inviato o ricevuto da un host specifico.

In Wireshark, vai a Capture > Capture Filters... e aggiungi un nuovo filtro con il valore host <host-IP-or-hostname>. Questo filtro acquisisce il traffico solo da e verso tale host. Se l'applicazione comunica con più host, è possibile aggiungere più filtri di acquisizione oppure aggiungere l'indirizzo IP dell'host/nome host con l'operatore "OR" per fornire un filtraggio di acquisizione meno rigido.

Acquisizione su disco

Potrebbe essere necessario eseguire un'applicazione per molto tempo per riprodurre un'eccezione di rete imprevista e monitorare il traffico precedente che porta a tale eccezione. Inoltre, potrebbe non essere possibile mantenere tutte le acquisizioni in memoria. Fortunatamente, Wireshark può registrare le acquisizioni su disco in modo che siano disponibili per la post-elaborazione. Questo approccio evita il rischio di esaurimento della memoria durante la riproduzione di un problema. Per altre informazioni, vedere file input, output e stampa nella documentazione di Wireshark.

L'esempio seguente configura Wireshark per salvare permanentemente le acquisizioni su disco con più file, in cui i file vengono suddivisi in base a 100.000 acquisizioni o a dimensioni di 50 MB.

In Wireshark, passare a Opzioni di acquisizione > e individuare la scheda Output, quindi inserire il nome del file da utilizzare. Questa configurazione causa la persistenza delle acquisizioni di Wireshark in un singolo file.

Per abilitare l'acquisizione in più file, selezionare Crea automaticamente un nuovo file e quindi selezionare dopo 100000 pacchetti e dopo 50 megabyte. Questa configurazione configura Wireshark a creare un nuovo file quando uno dei predicati viene soddisfatto. Ogni nuovo file usa lo stesso nome di base del nome file immesso e aggiunge un identificatore univoco.

Per limitare il numero di file che Wireshark può creare, selezionare Usare un buffer circolare con i file X. Questa opzione limita Wireshark alla registrazione solo con il numero specificato di file. Quando viene raggiunto il numero di file, Wireshark inizia a sovrascrivere i file, a partire dal meno recente.

Catture tramite filtro

A volte non è possibile definire un ambito ristretto del traffico acquisito da Wireshark, ad esempio se l'applicazione comunica con più host usando diversi protocolli. In questo scenario, in genere con l'uso dell'acquisizione permanente descritta in precedenza, è più semplice eseguire l'analisi dopo l'acquisizione della rete. Wireshark supporta la sintassi simile a un filtro per l'analisi delle acquisizioni. Per altre informazioni, vedere Uso dei pacchetti acquisiti nella documentazione di Wireshark.

Nell'esempio seguente, viene caricato un file di acquisizione persistente e viene applicato un filtro su ip.src_host==<IP>.

In Wireshark, navigare su File > Apri e caricare un'acquisizione persistente dal percorso del file usato in precedenza. Dopo il caricamento del file sotto la barra dei menu, viene visualizzato un input di filtro. Nell'input del filtro immettere ip.src_host==<IP>. Questo filtro limita la vista di acquisizione in modo che mostri solo le acquisizioni in cui la sorgente provenga dall'host con l'IP <IP>.

Passaggi successivi

Questo articolo ha illustrato l'uso di vari strumenti per diagnosticare i problemi di rete quando si usa Azure SDK per Java. Ora che si ha familiarità con gli scenari di utilizzo di alto livello, è possibile iniziare a esplorare l'SDK stesso. Per altre informazioni sulle API disponibili, vedere le librerie Azure SDK per Java.