Netsh: come amministrare le reti in Windows
Chi si occupa in modo più o meno intenso della configurazione di reti con Windows, si imbatterà prima o poi in Network Shell (Netsh). Dietro questo termine si nasconde un’interfaccia tra utente e sistema operativo che permette di amministrare e configurare reti locali o distanti tra loro.
Lo spettro di possibilità va dalle impostazioni per il firewall di Windows all'amministrazione di LAN e WLAN fino alla configurazione IP e di server. Inoltre, è possibile proteggere da attacchi esterni le infrastrutture collegate da una rete. Questa utilità della riga di comando permette di diagnosticare problemi e svolgere riparazioni nella rete. Un grande vantaggio di Netsh: Lo svolgimento dei compiti di gestione relativi alla rete è un processo particolarmente rapido e pratico e può essere automatizzato con l’uso di script.
Eseguire i comandi di Netsh: avviare il prompt dei comandi
Per poter utilizzare Netsh, è necessario spostarsi al prompt dei comandi che si apre attraverso il menu “Esegui” (run) come indicato di seguito:
- Premere la combinazione di tasti [Windows] + [R].
- Digitare “cmd” (1) nel box di ricerca.
- Premere il pulsante “OK” (2).
Infine si aprirà la finestra del prompt dei comandi. Il programma si avvia digitando “netsh” e confermando con il tasto [Invio]:
In caso di mancata esecuzione dei comandi e degli script di Netsh o se avete in programma interventi più profondi sulla configurazione della rete, è necessario avviare Network Shell con diritti da amministratore. Con Windows 10 bisogna completare i seguenti passaggi:
- Cliccare con il tasto destro del mouse sull’icona di Windows nella barra delle applicazioni oppure premere la combinazione di tasti [Windows] + [X].
- Nel menu contestuale selezionare la voce “Windows PowerShell (amministratore)”:
Una componente di Netsh è il file eseguibile netsh.exe, che si trova nella cartella di sistema di Windows (%windir%\system32). Con l’apertura diretta, accorcerete i tempi impiegati per l’inserimento dei comandi di Netsh. Potete digitare il path C:\Windows\System32\netsh.exe nella barra degli indirizzi di Windows Explorer e premere su [Invio]. Nel box di ricerca che si apre potete inserire i comandi di Netsh.
Si può accelerare il processo creando un collegamento. Dopo averlo impostato, in futuro vi basterà un solo clic del mouse per digitare il comando, effettuando le seguenti azioni:
- cliccate con il tasto destro del mouse sul desktop di Windows. Ora fate clic sulla voce “Nuovo” (1) e poi su “Collegamento” (2) nel menu contestuale che si aprirà:
- Nella procedura guidata per il collegamento potete inserire il path C:\Windows\System32\netsh.exe (1) e cliccare su “Avanti”.
- Si consiglia di dare un nome appropriato al collegamento (1) che troverete sul vostro desktop dopo aver cliccato su “Fine” (2).
Come è strutturato Netsh
Netsh è un’utilità di scripting che mette a disposizione numerose sintassi per i comandi. Chi vuole svolgere compiti precisi in modo mirato, deve prendere dimestichezza con la struttura specifica della Network Shell. La struttura di questa utility si basa su contesti che rappresentano diversi livelli di gestione. Ciascun contesto ricopre una funzionalità precisa della rete (per esempio configurazione IP, LAN o del firewall). Questa utility utilizza i file della Dynamic-Link Library (DDL) per interagire in modo contestuale con le componenti di Windows. Netsch si serve del Dhcpmon.dll per modificare e gestire le impostazioni del DHCP.
Per utilizzare un contesto, bisogna commutarlo nel Windows PowerShell. Nel contesto di “gestione di LAN”, ad esempio, si arriva come segue:
- Digitare “netsh” nel prompt dei comandi e confermare con [Invio].
- Digitare “lan” e confermare con [Invio].
- Il prompt dei comandi mostrerà la commutazione di contesto: netsh lan>
Una volta effettuata la commutazione nel contesto “LAN”, avrete a disposizione comandi del contesto e contesti aggiuntivi. Tra i comandi del contesto troviamo ad esempio “set” (configura impostazioni sulle interfacce). Un esempio di comando base di Netsch su contesti aggiuntivi è il comando help “/?”, che mostra un elenco di sottocontesti e comandi disponibili in ogni contesto. Dopo il suo invio, nel contesto “LAN” verrà mostrato il seguente elenco con tutti i comandi del contesto e dei contesti aggiuntivi:
Passando ad esempio al contesto di Firewall, la referenza dei comandi corrispondente appare come segue:
La struttura contestuale non rappresenta l’unica particolarità d’uso. Netsh permette un utilizzo in modalità non interattiva oppure in modalità interattiva. Nella modalità non interattiva alcune importanti impostazioni di rete vengono esportate in un file di testo e poi reimportate per un ripristino successivo.
Nella modalità interattiva si possono ad esempio avviare richieste dirette. Digitando “interfaccia netsh mostra indirizzo ip”, verrà mostrato l’attuale indirizzo IP del computer. La modalità interattiva può essere utilizzata online oppure offline. Nel primo caso si applicano le operazioni in modo diretto, nel secondo vengono salvate ed eseguite successivamente. Per attivare le operazioni salvate è necessario inserire al momento desiderato il comando Netsh “commit”.
I comandi di Netsh e i loro contesti
Abbiamo raggruppato nella sintesi seguente i comandi Netsh più importanti con una breve spiegazione dei contesti. Se si tratta di un comando generale di un contesto aggiuntivo, vi saranno altre spiegazioni nella colonna destra. I comandi a disposizione possono variare puntualmente in base alla versione del sistema operativo e al ruolo nella rete (client o server). L'esecuzione di un comando in un computer con un Datacenter di Windows Server 2016 è:
Comando | Funzione | Gestisce contesto di Netsh |
---|---|---|
.. | Raggiunge un livello di contesto più alto | |
? | Mostra un elenco di comandi | |
abort | Ignora qualsiasi modifica effettuata in modalità offline | |
add | Aggiunge una voce di configurazione a un elenco di voci | |
advfirewall | Passa al contesto “netsh advfirewall” | Firewall (linee guida e configurazione) |
alias | Aggiunge un alias | |
branchcache | Passa al contesto “netsh branchcache” | Impostazioni del branchcache |
bridge | Passa al contesto “netsh bridge” | Bridge di rete |
bye | Chiude il programma | |
commit | Apporta le modifiche effettuate in modalità offline | |
delete | Elimina una voce di configurazione da un elenco di voci | |
dhcpclient | Passa al contesto “netsh dhcpclient” | Client DHCP |
dnsclient | Passa al contesto “netsh dnsclient” | Impostazioni del client DNS |
dump | Visualizza uno script di configurazione | |
exec | Esegue un file di script | |
exit | Chiude il programma | |
firewall | Passa al contesto “netsh firewall” | Firewall (linee guida e configurazione) |
help | Mostra un elenco di comandi | |
http | Passa al contesto “netsh http” | Server web http (http.sys) |
interface | Passa al contesto “netsh interface” | Configurazione IP (v4, v6) |
ipsec | Passa al contesto “netsh ipsec” | Linee guida IPSec |
ipsecdosprotection | Passa al contesto “netsh ipsecdosprotection” | Protezione da attacchi del tipo IPSEC Denial of Service |
lan | Passa al contesto “netsh lan” | Interfacce di rete collegate |
namespace | Passa al contesto “netsh namespace” | Linee guida del client DNS |
netio | Passa al contesto “netsh netio” | Filtri di binding |
offline | Imposta offline come modalità corrente | |
online | Imposta la modalità attuale su online | |
popd | Estrae un contesto dallo stack | |
pushd | Inserisce un contesto corrente sullo stack | |
quit | Chiude il programma | |
ras | Passa al contesto “netsh ras” | Server di accesso remoto |
rpc | Passa al contesto “netsh rpc” | Configurazione del servizio RPC |
set | Impostazioni di configurazione correnti | |
show | Visualizza informazioni | |
trace | Passa al contesto “netsh trace” | |
unalias | Elimina un alias | |
wfp | Passa al contesto “netsh wfp” | Piattaforma di filtraggio di Windows |
winhttp | Passa al contesto “netsh winhttp” | Impostazioni proxy e tracking del client http di Windows |
winsock | Passa al contesto “netsh winsock” | Configurazione di Winsock |
wlan | Passa al contesto “netsh wlan” | Interfaccia rete senza fili |
Parametri di sintassi di Netsh: cosa significano?
Per avviare azioni e compiti concreti, i comandi netsh possono essere utilizzati anche con parametri facoltativi. Lo schema di sintassi per la combinazione di comandi e parametri Netsh è:
netsh [-a AliasFile] [-c Context] [-r RemoteComputer] [-u [DomainName\]UserName] [-p Password | *] [NetshCommand | -f ScriptFile]
I seguenti parametri sono tutti facoltativi, e possono quindi essere utilizzati e integrati in base alle esigenze:
-a | Specifica che dopo l'esecuzione di AliasFile verrà visualizzato nuovamente il prompt netsh. |
---|---|
AliasFile (ita: FileAlias) | Specifica il nome del file di testo che contiene uno o più comandi netsh. |
-c | Specifica che Netsh immette il contesto netsh specificato. |
Context (ita: Contesto) | Carattere per il contesto netsh da immettere (per es. WLAN) |
-r | Specifica che il comando deve essere eseguito in un computer remoto (Remotecomputer) dove bisogna eseguire il registro di sistema remoto. |
Remotecomputer (ita.: Computer remoto) | Nome del computer remoto che verrà configurato |
-u | Specifica di eseguire il comando netsh con un account utente. |
DomainName\ (ita: NomeDiDominio\) | Specifica il dominio in cui si trova l'account utente (il valore predefinito è il dominio locale se non si specifica il DomainName) |
UserName (ita: Nome utente) | Nome dell'account utente |
-p | Specifica che verrà fornita una password per l'account utente. |
Password | Specifica la password per l'account utente indicato con -u UserName |
NetshCommand (ita: ComandoNetsh) | Specifica il comando netsh da eseguire |
-f | Chiude netsh dopo l'esecuzione dello script designato con ScriptFile |
ScriptFile (ita: FileScript) | Specifica lo script da eseguire |
Ripristinare TCP/IP utilizzando l'utilità NetShell
Uno tra gli utilizzi più comuni dei comandi netsh è il ripristino TCP/IP che permette lo scambio di pacchetti di dati nelle reti. Questa misura si rivela particolarmente utile in caso di problemi di connessione o di rete, per es. di protocolli TCP/IP impostati in modo difettoso o scorretto. Con il seguente comando di riparazione viene effettuato un reset con conseguente reinstallazione di TCP/IPv4.
netsh int ip reset
Può essere inoltre predisposto un file di protocollo che documenta le modifiche avvenute con successo.
netsh int ip reset c:\tcpipreset.txt
Dopo il reset è necessario riavviare il computer.
I comandi di netsh possono essere utilizzati anche con file batch (*.bat) per automatizzare i compiti di routine. Potete scoprirne di più nella nostra guida “creare file batch”.
Importazione ed esportazione delle configurazioni della rete
Netsh vi permette anche di esportare in un file di testo semplice le configurazioni attuali della rete. In caso di problemi di rete sarà semplice ripristinare una configurazione funzionante e corretta.
Nel primo passaggio (esportazione) si legge la configurazione della rete, si scrive in un file di testo (netcnfig.txt) e salva in una cartella esempio chiamata “ConfigurazioneDellaRete” nel drive C:\ . Prima della prima esportazione, dovrete spostare manualmente la cartella “ConfigurazioneDellaRete” nel drive di destinazione (con netsh non viene fatto automaticamente). Poi aprite il prompt dei comandi e digitate il seguente codice:
netsh -c interface dump>c:\ConfigurazioneDellaRete\netcnfig.txt
Per la successiva importazione delle impostazioni, è necessario inserire il seguente comando:
netsh -f c:\ConfigurazioneDellaRete\netcnfig.txt
Windows 10 supporta la funzione copia e incolla anche nel prompt dei comandi. Questo vi permette di copiare in modo semplice la sintassi del comando da questo articolo e inserirla infine nel box di ricerca.
Configurazione IP con netsh
Un altro noto caso d’uso di netsh è la modifica delle configurazioni IP. Se a un computer non viene assegnato un indirizzo IP statico, ma automatico, si applica il Dynamic Host Configuration Protocol Questo protocollo di comunicazione permette ai client all’interno di una rete di assegnare automaticamente indirizzi IP e altri dati di configurazione necessari. Per questo processo sono necessari diversi passaggi:
Per prima cosa bisogna aprire le impostazioni correnti e i nomi delle schede di rete disponibili:
netsh interface ipv4 show interface
Ecco che verrà mostrata una scheda LAN precisa (in questo esempio: Ethernet) definita come ricevitore dell'assegnazione IP attraverso il DHCP:
netsh interface ipv4 set address name="Ethernet" source=dhcp
Il DHCP si assumerà la gestione dinamica delle configurazioni della rete che riguardano la scheda Ethernet.
Attivare e disattivare il firewall di Windows
Per attivare o disattivare il firewall di Windows, basta una semplice sintassi di comando netsh: Potete attivare il firewall come indicato di seguito:
netsh firewall set opmode enable
Il firewall verrà disattivato con la seguente riga di comando:
netsh firewall set opmode disable
In alcuni contesti Windows consiglia alternative all’amministrazione di rete con netsh. Viene nominato sempre più spesso Windows PowerShell di cui troverete un’introduzione nel nostro articolo dedicato.