Introduzione al DHCP Server su Linux
DHCP su Linux: Guida ISC DHCP e Kea Server. Il protocollo DHCP (Dynamic Host Configuration Protocol) è uno dei pilastri fondamentali dell’infrastruttura di rete moderna. Permette l’assegnazione automatica di indirizzi IP, gateway, DNS e altri parametri di rete ai client che si connettono a una rete. Su sistemi Linux, le due soluzioni più diffuse per implementare un server DHCP sono ISC DHCP (storico e ampiamente adottato) e Kea (il suo successore moderno sviluppato da ISC).
ISC DHCP, noto anche come dhcpd, è stato per decenni lo standard de facto. Tuttavia, dal 2022 ISC ha dichiarato la fine del supporto attivo per ISC DHCP, spingendo la comunità verso Kea DHCP, una piattaforma più flessibile, modulare e dotata di API REST. In questo articolo analizzeremo entrambe le soluzioni, fornendo istruzioni dettagliate per l’installazione, la configurazione e il troubleshooting.
Prerequisiti
Prima di procedere, assicurati di disporre di:
- Un sistema Linux (SysLinuxOS 13, Ubuntu 22.04 LTS o Debian 13 consigliati)
- Accesso root o privilegi sudo
- Almeno un’interfaccia di rete con IP statico configurato
- Conoscenza base del networking TCP/IP (subnet, gateway, CIDR)
- Connessione Internet per il download dei pacchetti
Verifica l’interfaccia di rete disponibile con il comando:
ip addr show ip link show
Supponiamo che l’interfaccia server sia eth0 con IP statico 192.168.1.1/24.
Parte 1: ISC DHCP Server
Installazione di ISC DHCP
Su sistemi Debian/Ubuntu, installa il pacchetto con:
sudo apt update sudo apt install isc-dhcp-server -y
Su sistemi RHEL/CentOS/Rocky Linux:
sudo dnf install dhcp-server -y
Configurazione dell’interfaccia
Specifica su quale interfaccia il server DHCP deve essere in ascolto modificando il file /etc/default/isc-dhcp-server:
# Debian/Ubuntu INTERFACESv4="eth0" INTERFACESv6=""
Configurazione del file dhcpd.conf
Il file principale di configurazione è /etc/dhcp/dhcpd.conf. Effettua un backup prima di modificarlo:
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup
Ecco un esempio di configurazione completo per una rete 192.168.1.0/24:
# Parametri globali
default-lease-time 86400;
max-lease-time 172800;
authoritative;
log-facility local7;
# Subnet declaration
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "homelab.local";
option broadcast-address 192.168.1.255;
}
# Host con IP statico (prenotazione)
host server-web {
hardware ethernet AA:BB:CC:DD:EE:FF;
fixed-address 192.168.1.50;
option host-name "server-web";
}
Avvio e gestione del servizio
Abilita e avvia il servizio con systemd:
sudo systemctl enable isc-dhcp-server sudo systemctl start isc-dhcp-server sudo systemctl status isc-dhcp-server
Per verificare la sintassi della configurazione senza riavviare:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
Visualizzare i lease attivi
I lease assegnati sono registrati nel file /var/lib/dhcp/dhcpd.leases:
cat /var/lib/dhcp/dhcpd.leases
# Output di esempio:
lease 192.168.1.101 {
starts 2 2024/01/16 10:00:00;
ends 3 2024/01/17 10:00:00;
hardware ethernet 00:11:22:33:44:55;
client-hostname "laptop-mario";
}
Parte 2: Kea DHCP Server
Perché scegliere Kea?
Kea rappresenta l’evoluzione moderna del DHCP su Linux. I vantaggi principali includono:
- API REST per la gestione remota e l’automazione
- Supporto nativo per DHCPv4 e DHCPv6 come daemon separati
- Backend di storage multipli: memfile, MySQL, PostgreSQL, Cassandra
- Hook library per estensibilità avanzata
- Alta disponibilità (HA) nativa
- Configurazione in formato JSON
Installazione di Kea
Su Ubuntu 22.04, Kea è disponibile nei repository ufficiali:
sudo apt update sudo apt install kea-dhcp4-server kea-ctrl-agent -y
Per installare da repository ISC (versione più aggiornata):
curl -1sLf 'https://dl.cloudsmith.io/public/isc/kea-2-4/setup.deb.sh' | sudo bash sudo apt install isc-kea-dhcp4-server isc-kea-ctrl-agent -y
Configurazione di Kea DHCPv4
Il file di configurazione principale è /etc/kea/kea-dhcp4.conf in formato JSON. Ecco una configurazione equivalente all’esempio ISC DHCP precedente:
{
"Dhcp4": {
"interfaces-config": {
"interfaces": ["eth0"]
},
"lease-database": {
"type": "memfile",
"lfc-interval": 3600
},
"valid-lifetime": 86400,
"max-valid-lifetime": 172800,
"subnet4": [
{
"id": 1,
"subnet": "192.168.1.0/24",
"pools": [
{ "pool": "192.168.1.100 - 192.168.1.200" }
],
"option-data": [
{
"name": "routers",
"data": "192.168.1.1"
},
{
"name": "domain-name-servers",
"data": "8.8.8.8, 8.8.4.4"
},
{
"name": "domain-name",
"data": "homelab.local"
}
],
"reservations": [
{
"hw-address": "aa:bb:cc:dd:ee:ff",
"ip-address": "192.168.1.50",
"hostname": "server-web"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{ "output": "/var/log/kea/kea-dhcp4.log" }
],
"severity": "INFO"
}
]
}
}
Validazione e avvio di Kea
Verifica la configurazione prima di avviare il servizio:
sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
Avvia il servizio:
sudo systemctl enable kea-dhcp4-server sudo systemctl start kea-dhcp4-server sudo systemctl status kea-dhcp4-server
Utilizzo dell’API REST di Kea
Una delle funzionalità più potenti di Kea è la sua Control Agent API. Dopo aver configurato /etc/kea/kea-ctrl-agent.conf, puoi interrogare il server via HTTP:
# Recuperare le statistiche del server
curl -s -X POST http://localhost:8000/
-H 'Content-Type: application/json'
-d '{"command": "statistic-get-all", "service": ["dhcp4"]}'
# Elencare tutti i lease attivi
curl -s -X POST http://localhost:8000/
-H 'Content-Type: application/json'
-d '{"command": "lease4-get-all", "service": ["dhcp4"], "arguments": {"subnets": [1]}}'
Configurazione Avanzata: DHCP con VLAN Multiple
In ambienti enterprise è comune gestire pool DHCP per VLAN diverse. Con Kea, aggiungi semplicemente più subnet nella configurazione:
"subnet4": [
{
"id": 1,
"subnet": "192.168.10.0/24",
"interface": "eth0.10",
"pools": [{"pool": "192.168.10.50 - 192.168.10.254"}],
"option-data": [{"name": "routers", "data": "192.168.10.1"}]
},
{
"id": 2,
"subnet": "192.168.20.0/24",
"interface": "eth0.20",
"pools": [{"pool": "192.168.20.50 - 192.168.20.254"}],
"option-data": [{"name": "routers", "data": "192.168.20.1"}]
}
]
Troubleshooting
Problemi comuni con ISC DHCP
- Il servizio non si avvia: Controlla i log con
journalctl -u isc-dhcp-server -n 50e verifica che l’interfaccia specificata esista. - “No subnet declaration for interface”: L’IP statico dell’interfaccia deve rientrare in una subnet dichiarata nel file
dhcpd.conf. - Lease non assegnati: Verifica che il firewall non blocchi le porte UDP 67 (server) e 68 (client):
sudo ufw allow 67/udp. - Conflitti di IP: Controlla il file dei lease e rimuovi entry obsolete:
sudo systemctl stop isc-dhcp-server && sudo truncate -s 0 /var/lib/dhcp/dhcpd.leases.
Problemi comuni con Kea
- Errore di parsing JSON: Usa
python3 -m json.tool /etc/kea/kea-dhcp4.confper validare la sintassi JSON prima di avviare il servizio. - L’API REST non risponde: Verifica che
kea-ctrl-agentsia in esecuzione e che la porta 8000 non sia filtrata. - Database di lease corrotto: Con backend memfile, il file si trova in
/var/lib/kea/kea-leases4.csv. Puoi eseguire un LFC manuale. - Permessi insufficienti: Assicurati che l’utente
_keaabbia accesso in scrittura alla directory/var/lib/kea/.
Comandi di diagnostica utili
# Monitorare i log in tempo reale sudo journalctl -u kea-dhcp4-server -f # Verificare le porte in ascolto sudo ss -ulnp | grep 67 # Testare la risposta DHCP con dhcping sudo apt install dhcping sudo dhcping -s 192.168.1.1 -r -v # Catturare traffico DHCP con tcpdump sudo tcpdump -i eth0 -n port 67 or port 68
Conclusione
Sia ISC DHCP che Kea sono soluzioni robuste per gestire l’assegnazione dinamica degli indirizzi IP su Linux. ISC DHCP rimane un’opzione valida per ambienti legacy o semplici, grazie alla sua configurazione diretta e alla vasta documentazione disponibile. Tuttavia, per nuove implementazioni è fortemente consigliato adottare Kea DHCP, che offre un’architettura moderna, supporto per la gestione via API, alta disponibilità e integrazione con database relazionali.
La scelta tra i due dipende dalle esigenze specifiche: se stai costruendo un’infrastruttura scalabile, automatizzata e pronta per il futuro, Kea è la scelta corretta. Se hai bisogno di manutenere un sistema esistente basato su ISC DHCP, la migrazione a Kea è comunque raccomandata nel medio termine, seguendo la roadmap ufficiale di ISC.
DHCP su Linux: Guida ISC DHCP e Kea Server
enjoy 😉
