Test-NetConnection: Il Tuo Coltello Svizzero per la Diagnosi di Rete in PowerShell!

La connettività di rete è la spina dorsale di qualsiasi sistema informatico moderno. Quando qualcosa non funziona, uno dei primi passi nella risoluzione dei problemi è determinare se i dispositivi possono comunicare tra loro.

Nelle infrastrutture complesse infatti firewall, switch e router potrebbero essere la causa di un malfunzionamento.

In ambiente Windows, ping, telnet e tracert sono stati a lungo gli strumenti di riferimento, ma PowerShell offre un’alternativa molto più potente e versatile:

Test-NetConnection, spesso abbreviato in TNC.


Test-NetConnection

Test-NetConnection è un cmdlet robusto che non si limita a un semplice ping ICMP. Può testare la connettività TCP a porte specifiche, eseguire una traccia di percorso, ottenere informazioni dettagliate sull’interfaccia di rete e molto altro ancora. Questo lo rende uno strumento indispensabile per amministratori di sistema, sviluppatori e chiunque debba diagnosticare problemi di rete.

Sintassi Base

La sintassi di base di Test-NetConnection è abbastanza semplice:

Test-NetConnection [-ComputerName] <String[]> [[-Port] <Int32>] [<CommonParameters>]

Oppure, nella sua forma abbreviata:PowerShell

TNC [-ComputerName] <String[]> [[-Port] <Int32>] [<CommonParameters>]

Sinceramente, preferisco la versione contratta.
Vediamo ora alcuni esempi pratici per illustrarne le capacità.

Esempi di Utilizzo di Test-NetConnection (TNC)

1. Test di Connettività ICMP (Ping)

Il caso d’uso più semplice è verificare se un host è raggiungibile tramite ICMP, proprio come farebbe un ping.PowerShell

Test-NetConnection -ComputerName google.com

Output di esempio:

ComputerName     : google.com
RemoteAddress    : 142.250.186.174
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.1.100
PingSucceeded    : True
PingReplyDetails : System.Net.NetworkInformation.PingReply

Questo output ci mostra l’indirizzo IP remoto, l’interfaccia utilizzata, l’indirizzo IP di origine e, soprattutto, se il ping ha avuto successo (PingSucceeded : True).

2. Test di Connettività TCP a una Porta Specifica

Questa è una delle funzionalità più potenti di TNC. Ti permette di verificare se un servizio su una porta specifica è raggiungibile. Utile per firewall, servizi bloccati o server che non rispondono.

Testare la connettività web (porta 80):

Test-NetConnection -ComputerName example.com -Port 80

Output di esempio:

ComputerName     : example.com
RemoteAddress    : 93.184.216.34
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.1.100
TcpTestSucceeded : True

TcpTestSucceeded : True indica che la connessione alla porta 80 è riuscita. Se fosse False, sapremmo che il problema non è solo la raggiungibilità dell’host, ma specificamente il servizio su quella porta.

Azione Bonus: In assenza di un servizio in ascolto lo si può simulare sulla macchina di destinazione con il seguente CMDlets:

Start-Process powershell.exe -ArgumentList '-NoExit -command $listener = [System.Net.Sockets.TcpListener]80; $Listener.Start()'

In questo caso, stiamo esponendo in ascolto la porta 80

3. Esecuzione di una Traccia di Percorso (Traceroute)

TNC può anche eseguire una traccia di percorso, simile a tracert, ma integrando i risultati con le altre informazioni di connettività.PowerShell

Test-NetConnection -ComputerName google.com -TraceRoute

Output di esempio (parziale):

ComputerName           : google.com
RemoteAddress          : 142.250.180.142
InterfaceAlias         : Ethernet 2
SourceAddress          : 192.168.178.67
PingSucceeded          : True
PingReplyDetails (RTT) : 16 ms
TraceRoute             : 192.168.178.1
                         ***.***.222.1 (censurato per ovvii motivi) 
                         0.0.0.0
                         0.0.0.0
                         185.210.48.43
                         185.210.48.95
                         185.210.48.95
                         192.178.104.191
                         142.250.211.31
                         142.250.180.142

L’array TraceRoute ti mostrerà i vari hop attraverso i quali il traffico passa per raggiungere la destinazione.

4 Testare la Connettività a Più Host

Puoi passare un array di nomi di computer a Test-NetConnection per testare la connettività a più destinazioni contemporaneamente.PowerShell

Test-Connection -Computername madlabs.org, madlabs.cloud, google.it

   Destination: madlabs.org

Ping Source           Address                   Latency BufferSize Status
                                                   (ms)        (B)
---- ------           -------                   ------- ---------- ------
   1 madlabs11        62.149.128.154                  9         32 Success
   2 madlabs11        62.149.128.154                  8         32 Success
   3 madlabs11        62.149.128.154                  8         32 Success
   4 madlabs11        62.149.128.154                  8         32 Success

   Destination: madlabs.cloud

Ping Source           Address                   Latency BufferSize Status
                                                   (ms)        (B)
---- ------           -------                   ------- ---------- ------
   1 madlabs11        34.66.145.254                 138         32 Success
   2 madlabs11        34.66.145.254                 133         32 Success
   3 madlabs11        34.66.145.254                 133         32 Success
   4 madlabs11        34.66.145.254                 133         32 Success

   Destination: google.it

Ping Source           Address                   Latency BufferSize Status
                                                   (ms)        (B)
---- ------           -------                   ------- ---------- ------
   1 madlabs11        216.58.204.131                 18         32 Success
   2 madlabs11        216.58.204.131                 15         32 Success
   3 madlabs11        216.58.204.131                 17         32 Success
   4 madlabs11        216.58.204.131                 15         32 Success

Questo eseguirà il test per ogni host specificato e mostrerà i risultati per ciascuno.

Considerazioni Finali

Test-NetConnection è un cmdlet estremamente potente e flessibile che dovrebbe essere nella cassetta degli attrezzi di ogni professionista IT che lavora con PowerShell. La sua capacità di combinare ping, test di porte e traceroute in un unico comando, insieme all’output strutturato che può essere facilmente elaborato da altri cmdlet PowerShell, lo rende superiore ai tradizionali strumenti da riga di comando per la diagnosi di rete.

Ricorda che i firewall, sia sul sistema locale che sulla destinazione, possono influenzare i risultati di Test-NetConnection. Se un test TCP fallisce, assicurati che la porta non sia bloccata da un firewall o che il servizio non sia in esecuzione sulla destinazione.

Inizia a usare TNC oggi stesso e semplifica la tua diagnosi di rete!

Se ne vuoi sapere di più: https://ss64.com/ps/test-netconnection.html