DHCP (acronimo di Dynamic Host Configuration Protocol) assegna dinamicamente indirizzi IP univoci e altre informazioni ai sistemi client. Alcune delle informazioni assegnate da DHCP includono nome host, nome di dominio, indirizzo IP del gateway predefinito e server DNS, ecc. Risparmia all'amministratore di sistema la seccatura di assegnare manualmente indirizzi IP e informazioni correlate a ciascuno dei sistemi client. Di solito, nella configurazione domestica o di una piccola azienda, i router svolgono il ruolo di server DHCP. Tuttavia, in una configurazione di grandi dimensioni, è necessario configurare un server dedicato che funga da server DHCP. In Linux, puoi facilmente configurare un server DHCP e assegnare indirizzi IP ai client.
In questo tutorial, dimostreremo come configurare DHCP in Linux per assegnare automaticamente gli indirizzi IP ai client.
Come funziona il DHCP
Spieghiamo un po' come funziona DHCP:
Considera uno scenario in cui il client e il server DHCP sono collegati alla stessa rete cablata.
- Quando una macchina client è accesa, invia un messaggio broadcast DHCPDISCOVER a tutti i dispositivi della rete.
- Quando questo messaggio ha raggiunto il server DHCP, restituisce un DHCPOFFER messaggio con un indirizzo IP al client.
- Il client invia quindi un DHCPREQUEST al server DHCP per richiedere questo indirizzo IP.
- Il server DHCP invia quindi DHCPACK per accettare la richiesta e concedere al cliente un indirizzo IP.
Prerequisiti
- Minimo due macchine Linux (per server e client DHCP)
- Utente con privilegi sudo
- IP statico configurato su server DHCP
Nota:
A scopo dimostrativo, abbiamo utilizzato tre macchine Linux che erano sulla stessa LAN. Puoi pensarli come tutti collegati tra loro tramite interruttore.
Server DHCP
Per il server DHCP, abbiamo utilizzato:
- Ubuntu 20.04 LTS con IP statico "192.168.9.1" e nome host "ubuntu"
Cliente DHCP
Per il client DHCP, abbiamo utilizzato due macchine:
- Ubuntu 20.04 con nome host “mypc”
- Nut 20 con nome host "mint"
Installazione del server DHCP
Innanzitutto, aggiorna l'indice del repository di sistema nel tuo sistema. Emetti il comando seguente in Terminale per farlo:
$ sudo apt update
Ora immetti il seguente comando in Terminale per installare il server DHCP:
$ sudo apt-get install isc-dhcp-server -y
Configurazione del server DHCP
Prima di configurare un sistema Linux come server DHCP, assicurarsi che abbia un indirizzo IP statico configurato in modo che i client possano connettersi facilmente ad esso. In caso contrario, sarà difficile per i client trovare a quale server DHCP connettersi.
Nel /etc/default/isc-dhcp-server file, sarà necessario specificare l'interfaccia su cui il server DHCP ascolterà. Emetti il seguente comando in Terminale per modificare questo file:
$ sudo nano /etc/default/isc-dhcp-server
Nelle INTERFACCEv4 e ntry, specifica l'interfaccia che vuoi che il server DHCP ascolti come ens33, eth0, eth1, ecc.
INTERFACESv4="interface_name"
Nel nostro scenario, l'interfaccia è ens33 , quindi la voce cambierebbe in:
INTERFACESv4="ens33"
Dopo aver configurato il file, salvalo e chiudilo.
Ora configureremo il server DHCP utilizzando il suo file di configurazione predefinito che si trova in /etc/dhcp/dhcpd.conf .
Modifica /etc/dhcp/dhcpd.conf file come segue:
$ sudo nano /etc/dhcp/dhcpd.conf
Decommenta la riga seguente rimuovendo il # simbolo prima di esso.
authoritative;
Inoltre, aggiungi le seguenti righe nel file:
default-lease-time 600; max-lease-time 7200; # subnet subnet 192.168.9.0 netmask 255.255.255.0 { # range of subnet range 192.168.9.5 192.168.9.15; # gateway address option routers 192.168.9.1; # DNS server address option domain-name-servers 8.8.8.8, 8.8.4.4; }
Dopo aver configurato il file, salvalo e chiudilo.
Assegna un indirizzo IP statico ai client dal server DHCP
Il server DHCP invia indirizzi IP dinamici ai client per impostazione predefinita. Tuttavia, puoi anche configurarlo per assegnare un indirizzo IP fisso o statico ai client. Gli indirizzi fissi sono necessari per alcuni dispositivi di rete come stampanti, router o quando è necessario connettere in remoto un dispositivo dall'esterno. Per assegnare un indirizzo IP statico a una macchina specifica, avrai bisogno del suo indirizzo MAC.
Supponiamo di voler assegnare un client con indirizzo MAC 00:0c:29:c1:d5:d4 un IP fisso 192.168.1.13 ogni volta.
Modifica /etc/dhcp/dhcpd.conf file e aggiungi la voce host contenente l'indirizzo MAC del client e l'indirizzo IP fisso che desideri assegnare al client:
host mint { hardware ethernet 00:0c:29:c1:d5:d4; fixed-address 192.168.9.13; }
Nota: L'indirizzo IP fisso non deve essere compreso nell'intervallo dell'IP dinamico.
Ora, ogni volta che il client con l'indirizzo MAC corrispondente (00:0c:29:c1:d5:d4) invia un messaggio DHCPDISCOVER al server DHCP, riceverà lo stesso indirizzo IP 192.168.9.13.
Riavvia il servizio DHCP
Una volta terminate le configurazioni, riavviare il servizio del server DHCP. Emetti il comando seguente in Terminale per farlo:
$ sudo systemctl restart isc-dhcp-server.service
Ora verifica lo stato del server DHCP usando il comando seguente:
$ sudo systemctl status isc-dhcp-server.service
L'output seguente mostra che il servizio DHCP è attivo e funziona correttamente senza errori.
Configurazione client DHCP
Ora configureremo due macchine client. A un client verrà assegnato un IP casuale dall'intervallo di sottorete definito nel file di configurazione. All'altro client verrà assegnato l'IP statico.
Per impostazione predefinita, l'indirizzamento IP dinamico è configurato nel sistema operativo Ubuntu. Tuttavia, se utilizza l'indirizzo IP statico, puoi configurarlo per ottenere un indirizzo IP dal server DHCP.
Client 1- Ottieni l'indirizzo IP dinamico dal server DHCP
Innanzitutto, trova il nome dell'interfaccia di rete utilizzando il seguente comando:
$ ifconfig
Una volta trovato il nome dell'interfaccia, immetti il seguente comando in Terminale per configurare l'interfaccia di rete:
$ sudo nano /etc/network/interfaces
Inserisci le seguenti righe nel file:
auto <interface_name> iface <interface_name>inet dhcp
Nel nostro caso, sarebbe:
auto ens33 iface ens33 inet dhcp
Salva e chiudi il file e riavvia il servizio di gestione della rete utilizzando il seguente comando in Terminale:
$ sudo systemctl restart network-manager.service
Ora esegui il comando ifconfig per verificare l'indirizzo IP del tuo client.
$ ifconfig
Puoi vedere nel seguente output che il client ha ricevuto l'indirizzo IP 192.168.9.5 che appartiene all'intervallo di sottorete definito nella configurazione del server DHCP.
Per trovare l'indirizzo IP del server DHCP, emettere il seguente comando in Terminale:
$ sudo grep -R “DHCPOFFER” /var/sys/log
Dall'output, puoi verificare che l'indirizzo IP sia assegnato da 192.168.9.1 che è l'indirizzo IP del nostro server DHCP.
Nel caso non ci sia un indirizzo IP ottenuto dalla macchina client dal server DHCP, utilizzare i seguenti comandi per rilasciare/rinnovare l'indirizzo IP:
$ sudo dhclient -r
$ sudo dhclient -v
Ora esegui ifconfig comando per verificare l'indirizzo IP del client. Questa volta si spera che il client riceva l'indirizzo IP dal server DHCP.
Client 2- Ottieni un indirizzo IP statico dal server DHCP
Per la nostra seconda macchina client, abbiamo aggiunto la voce dell'indirizzo IP statico/fisso nel file di configurazione del server DHCP. Sul computer client, configurare prima l'interfaccia per acquisire l'indirizzo IP dal server DHCP.
Trova il nome della tua interfaccia di rete usando il seguente comando:
$ ifconfig
Una volta trovato il nome dell'interfaccia, immetti il seguente comando in Terminale per configurare l'interfaccia di rete:
$ sudo nano /etc/network/interfaces
Inserisci le seguenti righe nel file:
auto <interface_name>
iface <interface_name>inet dhcp
Nel nostro caso, sarebbe:
auto ens33
iface ens33 inet dhcp
Ora salva e chiudi il file e riavvia il servizio di gestione della rete utilizzando il seguente comando in Terminale:
$ sudo systemctl restart network-manager.service
Ora esegui il comando ifconfig per verificare l'indirizzo IP del tuo client.
$ ifconfig
È possibile vedere nel seguente output che il client ha ricevuto l'indirizzo IP fisso 192.168.9.13 dal server DHCP. Questo è lo stesso indirizzo IP fisso che abbiamo aggiunto nel file di configurazione DHCP.
Per trovare l'indirizzo IP del server DHCP, emettere il seguente comando in Terminale:
$ sudo grep -R “DHCPOFFER” /var/sys/log
Dall'output, puoi verificare che gli indirizzi IP siano assegnati da 192.168.9.1 che è il nostro server DHCP.
Nel caso non ci sia un indirizzo IP ottenuto dalla macchina client dal server DHCP, utilizzare i seguenti comandi per rilasciare/rinnovare l'indirizzo IP:
$ sudo dhclient –r -v
$ sudo dhclient -v
Ora esegui ifconfig comando per verificare l'indirizzo IP del client. Questa volta si spera che il client riceva l'indirizzo IP dal server DHCP.
Visualizza gli indirizzi IP assegnati dal server DHCP
Dal server DHCP, puoi anche verificare gli indirizzi dinamici da esso assegnati ai client.
Nella macchina del server DHCP, eseguire il comando seguente in Terminale per elencare gli indirizzi assegnati dal server DHCP:
$ dhcp-lease-list
Nell'output seguente, vedrai solo gli indirizzi IP assegnati dinamicamente dal server DHCP a un client. Ricorda, non elencherà gli indirizzi IP statici emessi dal server DHCP.
In questo articolo hai imparato come installare e configurare il server DHCP nel sistema Linux e assegnare indirizzi IP dinamici e fissi ai client. Bastano pochi semplici passaggi per configurare il server DHCP in una macchina Linux. Una volta configurato, assegnerà automaticamente gli indirizzi IP di assegnazione e le relative informazioni a ciascuna macchina della rete.