Gestione Avanzata del DHCP con Microsoft Windows Server e PowerShell

Statistiche DHCP con Powershell
L’uso del DHCP per assegnare automaticamente gli indirizzi di rete ai dispositivi è molto comodo per varie ragioni.
Il DHCP può essere attivato su diversi prodotti, ma qui ci concentreremo sullo strumento di Microsoft Windows Server per IPv4.
Con il tempo, il numero di indirizzi disponibili può esaurirsi a causa delle mutate condizioni iniziali, impedendo ai dispositivi di accedere alla rete.
Questo evento è tracciabile nei log di Windows, ma abbiamo pensato di creare una procedura, integrabile in un monitor Datto RMM, per ricevere un allarme preventivo in caso di esaurimento imminente degli indirizzi e per generare una statistica sull’uso del DHCP.
Microsoft Windows Server offre un modulo Powershell dedicato alla gestione e all’interrogazione del DHCP. Utilizzando questo modulo, è possibile monitorare e gestire efficacemente gli indirizzi di rete, evitando situazioni di esaurimento.
Tabella dei Contenuti
Scarica direttamente il componente Datto RMM dal nostro cloud ed inizia a monitorare il DHCP dei tuoi server.
Come abbiamo deciso di assegnare gli indirizzi
Nel passato, per comodità di individuazione e raggiungibilità dei dispositivi, assegnavamo gli indirizzi in modo statico, configurando esplicitamente ogni dispositivo. Il DHCP era utilizzato solo per i dispositivi mobili e di passaggio. Con l’evoluzione dei servizi, soprattutto con la gestione in logica MSP, abbiamo affidato l’intera gestione degli indirizzi al DHCP.
È fondamentale che i dispositivi chiave della rete abbiano un indirizzo fisso, un’azione che il DHCP può eseguire autonomamente, assegnando indirizzi specifici in base al tipo di dispositivo. Una volta stabiliti gli indirizzi per i dispositivi chiave, si configura il DHCP per assegnare sempre uno specifico indirizzo IP a un determinato MAC Address, ottenendo lo stesso risultato di una configurazione statica.
Per massimizzare la flessibilità, abbiamo impostato la durata dei lease a un giorno. Questo evita vincoli prolungati per indirizzi usati per poche ore e permette un rapido cambio di classi di indirizzi nella rete.
Tale scelta implica la riserva di un gruppo più ampio di indirizzi per coprire tutte le esigenze dei dispositivi connessi.
Tutto cresce e gli indirizzi finiscono
La crescita del business aziendale e l’uso di dispositivi temporanei possono portare all’esaurimento degli indirizzi assegnati al DHCP. È cruciale essere informati tempestivamente su questo evento per evitare disservizi. L’analisi degli eventi del sistema operativo fornisce un messaggio di warning all’esaurimento degli indirizzi; tuttavia, a quel punto ci si trova già in una situazione di blocco, dove i dispositivi non possono ottenere un indirizzo IP e quindi non possono accedere alla rete aziendale.
Utilizzando il modulo DHCP di Powershell, è possibile creare un monitor che invii un allarme quando la disponibilità di indirizzi scende sotto un valore prestabilito. Questo valore può essere una percentuale del totale, un numero specifico di indirizzi o un’altra combinazione matematica. La raccolta delle informazioni fornite dal modulo permette anche di visualizzare i dati di utilizzo del DHCP, consentendo un intervento rapido e mirato per evitare l’esaurimento degli indirizzi.
Il monitor DHCP con Powershell
Per la realizzazione di un monitor DHCP utilizzeremo due cmdlet del modulo DHCP di Powershell. La combinazione degli output fornisce le informazioni di base necessarie.
I cmdlet impiegati nel nostro monitor sono i seguenti:
- Get-DhcpServerv4Scope: fornisce la configurazione dello scope DHCP.
- Get-DhcpServerv4ScopeStatistics: fornisce le informazioni statistiche associate allo scope ID.
Il codice che permette l’aggregazione delle informazioni è molto semplice e realizzato per fornire un semplice output testuale, visualizzabile da qualsiasi tipo di RMM e procedure di analisi.
$DHCP_Scope_Info = Get-DhcpServerv4Scope
$ENV:ErrorType = "Monitor"
$Output = ""
$Output += "Name DHCP: " + $DHCP_Scope_Info.Name
$Output += "`r`nDHCP Start Range: " + $DHCP_Scope_Info.StartRange
$Output += "`r`nDHCP End Rabge: " + $DHCP_Scope_Info.EndRange
$Output += "`r`nDHCP Lease Duration: " + $DHCP_Scope_Info.LeaseDuration
$DHCP_Scope_Stats = Get-DhcpServerv4ScopeStatistics
$Output += "`r`nDHCP total lease: " + ($DHCP_Scope_Stats.InUse + $DHCP_Scope_Stats.Free)
$Output += "`r`nDHCP Free lease: " + $DHCP_Scope_Stats.Free
$Output += "`r`nDHCP In Use lease: " + $DHCP_Scope_Stats.InUse
$Output += "`r`nDHCP Reserved lease: " + $DHCP_Scope_Stats.Reserved
if ($DHCP_Scope_Stats.PercentageInUse -ge 90) {
Set-DRMMError -FErrorMessage "WARNING - Running out of DHCP address range." -FDiagnostic $Output
}
- Riga 1: Assegna a una variabile l’output del cmdlet Get-DhcpServerv4Scope, contenente la configurazione dello scope DHCP.
- Riga 3: Crea una variabile di ambiente temporanea per definire l’output di errore utilizzato dai nostri moduli.
- Riga 5: Inizializza la variabile che conterrà il testo con le informazioni statistiche.
- Righe 7-10: Creano la struttura di testo con le informazioni di configurazione dello scope DHCP.
- Riga 12: Assegna a una variabile l’output del cmdlet Get-DhcpServerv4ScopeStatistics, che raccoglie i dati statistici dello Scope ID.
- Righe 14-17: Creano la struttura di testo con le informazioni statistiche dello scope DHCP.
- Riga 19: Controlla se la percentuale di indirizzi in uso è superiore o uguale al 90%. In tal caso, genera un allarme o esegue altre azioni previste.
Il componente che alleghiamo è una soluzione monolitica, diversa dalla nostra implementazione interna che utilizza moduli PowerShell distribuiti sui vari sistemi. L’utilizzo dei moduli permette di migliorare la manutenzione del codice e di renderne più efficiente la distribuzione e l’utilizzo. Questa soluzione modulare facilita gli aggiornamenti e consente una gestione più agile delle configurazioni.
È importante sottolineare che questa realizzazione ha finalità didattiche. Di conseguenza, non ci assumiamo la responsabilità per eventuali malfunzionamenti o risultati inattesi che potrebbero derivare dal suo utilizzo. Tuttavia, siamo convinti che questa procedura rappresenti un utile strumento per garantire una gestione ottimale delle configurazioni di rete, contribuendo così alla stabilità e all’efficienza delle infrastrutture IT.
Conclusioni
È evidente che il controllo del superamento della soglia si può eseguire leggendo il valore di percentuale in uso restituito dal cmdlet relativo alle informazioni statistiche. Questa scelta riduce la procedura a tre righe di codice. Tuttavia, avere un quadro informativo più ampio è utile per valutare l’urgenza dell’intervento e se è possibile attendere che la saturazione si risolva autonomamente attraverso i meccanismi di rilascio degli indirizzi inutilizzati.
Analizzando i vari cmdlet disponibili per la gestione del DHCP, è possibile configurare la procedura per eseguire autonomamente azioni sullo scope. Con piccole modifiche, il monitor può essere trasformato in una procedura eseguibile su richiesta per ottenere i dati statistici.
Per maggiori informazioni sull’uso e la realizzazione degli script di automazione leggi questo articolo e contattaci senza impegno.
I componenti distribuiti sono forniti senza alcuna garanzia. Non vi sono garanzie che il software soddisfi le vostre esigenze o sia esente da errori. In nessun caso gli sviluppatori saranno responsabili per eventuali danni.
I componenti proposti sono stati collaudati nel modo più esaustivo possibile e sono utilizzati in modo regolare in ambienti di produzione, durante il loro utilizzo non si sono verificate anomalie di funzionamento.
Articoli recenti
- ShellBag – un viaggio allucinante nei ricordi di Windows
- La donazione di sangue nei cani: importanza, modalità e compatibilità
- Il Manto del Cane: Un Viaggio alla Scoperta della Sua Pelle e del Suo Pelo
- Proteggi il tuo cane dal caldo: prevenzione e riconoscimento della disidratazione
- Monitoraggio e Verifica delle Configurazioni di Rete: Una Soluzione Efficace con PowerShell e Datto RMM
Archivi
Prossimi eventi
Non ci sono eventi imminenti.
