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