Magazine Opinioni

Un server DHCP in PHP…why not ?

Creato il 20 maggio 2014 da Michelepinassi @michele_pinassi
Verifica questa notizia !

I puristi si staranno già scandalizzando: “un server DHCP in PHP ?!?!?” sarà la loro prima reazione, con un misto di incredulità e sdegno.

Ma perché no ?

Il PHP, oltre ad essere un meraviglioso linguaggio per la programmazione web, può efficacemente sostituirsi -con tutti i suoi limiti- anche ad altri linguaggi interpretati “shell-based” come Perl o Python. Certo, non mi aspetto prestazioni eccezionali ma ad un server DHCP serve essenzialmente stabilità e, per quanto riguarda ad esempio il contesto VoIP dove vorrei implementarlo, tanta tanta flessibilità.

L’idea nasce, è giusto ammetterlo, da un progetto già avviato da un’altro italiano nel 2009, Angelo DiNardi, che sul suo blog (https://angelo.dinardi.name/2009/09/09/a-dhcp-server-in-php-why-not/) scriveva:

I had planned on making the DHCP server part have a plug in system of changing the storage system backing the server so that it could run off a database and do things that the normal ISC DHCP server can’t be configured to do.

Già, tutte quelle cose che il server DHCP de-facto, ISC DHCPD, non può fare. Una di queste è l’interfacciamento con un DBMS, quale MySQL, anche se l’ISC, attraverso il nuovo progetto KEA, ha risolto questo limite (attualmente è in fase di sviluppo).

DHCP handshaking

DHCP handshaking

Torniamo a noi. Essenzialmente un server DHCP deve rispondere alle richieste DHCPREQUEST, offrire un indirizzo IP disponibile (DHCPOFFER), attendere la risposta da parte del  nuovo dispositivo (DHCPREQUEST) e confermarne la “registrazione” (DHCPACK).

Oltre a questo, ovviamente, c’è tutta la parte strategia di allocazione degli IP, filtro e pre-allocazione sul MAC address, controllo della scadenza dei LEASE, opzioni…

Tutto questo tramite pacchetti UDP sulla porta 67 e 68 perché, lo ricordo, un dispositivo che viene connesso ad una rete e non ha un IP assegnato non può -ovviamente- stabilire connessioni TCP…

Una spiegazione più dettagliata del Dynamic Host Configuration Protocol è disponibile su Wikipedia: http://it.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol mentre se volete farvi una esplorazione del traffico relativo, potete usare “tcpdump -i [interfaccia di rete] -vvv -s 1500 ‘(port 67 or port 68)‘” 

Basandomi sul codice già sviluppato e disponibile su GitHub (https://github.com/adinardi/phpdhcp), ho aggiunto alcune funzionalità e creato un fork su GitHub, da dove potete scaricare il codice: https://github.com/michelep/phpdhcp

In particolare ho aggiunto l’uso di un database MySQL come backend per la configurazione della rete e gestione dei leases, oltre alla possibilità di “demonizzare” il programma (usando PHP System Daemon). Lo schema del DB, contenuto nel file schema.sql, è il seguente:

CREATE TABLE IF NOT EXISTS `DHCPLeases` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `PoolID` int(11) NOT NULL,
 `IP` varchar(16) NOT NULL,
 `ChgDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`ID`),
 KEY `PoolID` (`PoolID`),
 KEY `IP` (`IP`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `DHCPPools` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `IPStart` varchar(16) NOT NULL,
 `IPEnd` varchar(16) NOT NULL,
 `SubnetMask` varchar(16) NOT NULL,
 `Router` varchar(16) NOT NULL,
 `DNSServers` varchar(64) NOT NULL,
 `Domain` varchar(32) NOT NULL,
 `Note` text NOT NULL,
 PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

In fase di configurazione è necessario aggiungere le righe a descrizione del lotto (“pool”) di IP disponibili. Ad esempio:

DHCPPools

La tabella DHCPLeases viene automaticamente popolata man mano che vengono assegnati IP ai dispositivi collegati.

 Considerate che si tratta comunque di un programma a scopo didattico e non è adatto ad ambienti di produzione: USE AT YOUR OWN RISK !
  
      
      
      
      
      
	   
	  

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :

  • Xylella, l'ombra della Monsanto dietro la morte degli ulivi pugliesi

    Xylella, l'ombra della Monsanto dietro morte degli ulivi pugliesi

    Forse la mano della Monsanto dietro la Xylella, il batterio che rischia di decimare gli ulivi salentini? Forse solo congetture ma…Si chiama Xylella Fastidiosa i... Leggere il seguito

    Da  Sguardonero
    OPINIONI, DA CLASSIFICARE
  • Il signore del male

    signore male

    (1987, John Carpenter)Signori, ho trovato un lavoro.Stare a casa disoccupata mi stava logorando su tanti di quei piani che fatico anche solo a spiegarlo.Mi... Leggere il seguito

    Da  Mariparacchini
    CINEMA, CULTURA, HORROR, OPINIONI
  • I barbari sulla BMW X5

    barbari sulla

    Quella che segue, è la sintesi di due testi di Thomasz Konicz, realizzata da "Les Amis de Némésis" con lo scopo di segnalare l'articolo "Il mondo nella guerra... Leggere il seguito

    Da  Francosenia
    CULTURA, OPINIONI, SOCIETÀ
  • DE DIVINA PROPORTIONE di Fra' Luca Pacioli

    DIVINA PROPORTIONE Fra' Luca Pacioli

    DE DIVINA PROPORTIONE Il De Divina Proportione è il trattato di Fra' Luca Pacioli sulle applicazioni della sezione aurea. Fu edito a Venezia nel 1497 e... Leggere il seguito

    Da  Dariosumer
    CURIOSITÀ, OPINIONI
  • Robert fludd

    Robert fludd

    Fludd ‹flḁd› (o Flud), Robert (lat. Robertus de Fluctibus) - Medico e filosofo (Bearsted, Kent, 1574 - Londra 1637), il maggior rappresentante e teorico della... Leggere il seguito

    Da  Dariosumer
    CURIOSITÀ, OPINIONI
  • Le cose morte

    cose morte

    Le nuove relazioni sociali non possono essere create dalle nuove tecnologie - Intervista di IHU On-Line a Robert Kurz, del 24 ottobre 2005 - IHU On-Line: Come... Leggere il seguito

    Da  Francosenia
    CULTURA, OPINIONI, SOCIETÀ