27.5. Configurazione Automatica della Rete (DHCP)

Scritto da Greg Sutter.

27.5.1. Cos'è il DHCP?

DHCP, il Protocollo di Configurazione Host Dinamico, descrive i passi attraverso i quali un sistema si può connettere ad una rete ed ottenere l'informazione necessaria per comunicare attraverso quella rete. Le versioni di FreeBSD prima della 6.0 usano l'implementazione DHCP client (dhclient(8)) dell'ISC (Internet Software Consortium). Le ultime versioni usano il dhclient di OpenBSD preso da OpenBSD 3.7. Tutte le informazioni specifiche all'implementazione di dhclient in questa sede sono riferite all'uso dei client DHCP sia di ISC che di OpenBSD. Il server DHCP è quello incluso nella distribuzione ISC.

27.5.2. Cosa Copre Questa Sezione

Questa sezione descrive sia il lato client del sistema DHCP di ISC e di OpenBSD che il lato server del sistema DHCP ISC. Il programma client, dhclient, è già integrato con FreeBSD, e la parte server è disponibile nel port net/isc-dhcp3-server. Le pagine di manuale dhclient(8), dhcp-options(5), e dhclient.conf(5), oltre ai riferimenti elencati oltre, sono risorse utili.

27.5.3. Come Funziona

Quando dhclient, il client DHCP, viene eseguito sulla macchina client, inizia a fare broadcasting di richieste per informazioni di configurazione. Di default queste richieste sono sulla porta UDP 68. Il server risponde sulla porta UDP 67, dando al client un indirizzo IP ed altre informazioni rilevanti di rete come la netmask, il router ed il DNS server. Tutte queste informazioni arrivano sotto forma di un «rilascio» DHCP e sono valide sono per un certo periodo di tempo (configurato dall'amministratore del server DHCP). In questo modo, gli indirizzi IP bloccati da client che non sono più connessi alla rete possono essere riutilizzati automaticamente.

I client DHCP possono ottenere molti tipi di informazione dal server. Una lista esauriente può essere trovata in dhcp-options(5).

27.5.4. L'Integrazione con FreeBSD

FreeBSD integra completamente il client DHCP ISC o OpenBSD, dhclient (a seconda della versione di FreeBSD utilizzata). Viene fornito supporto al client DHCP sia con l'installazione sia con il sistema base, rendendo inutile il bisogno di una conoscenza dettagliata della configurazione di rete su ogni rete che abbia un server DHCP. dhclient è stato incluso in tutte le distribuzioni FreeBSD a partire dalla 3.2.

DHCP è supportato da sysinstall. Quando configuri una interfaccia di rete con sysinstall, la seconda domanda che ti pone è: « Vuoi provare a configurare l'interfaccia via DHCP?». Una risposta affermativa eseguirà dhclient, e, se ha successo, riempirà le informazioni di configurazione della rete in automatico.

Ci sono due cose che devi fare per far sì che il tuo sistema usi il DHCP all'avvio:

  • Accertati che il device bpf sia compilato nel tuo kernel. Per fare ciò, aggiungi device bpf al tuo file di configurazione del kernel, e ricompilalo. Per maggiori informazioni su come ricompilare i kernel, vedi Capitolo 8, Configurazione del Kernel di FreeBSD.

    Il device bpf è già parte del kernel GENERIC che è fornito con FreeBSD, così se non hai un kernel custom, non dovresti aver bisogno di crearne uno al fine di far funzionare il DHCP.

    Nota:

    Quelli di voi che sono particolarmente attenti alla sicurezza, dovrebbero sapere che il device bpf è anche il device che permette agli sniffer di pacchetti di funzionare correttamente (anche se devono sempre essere eseguiti come root). bpf è richiesto per l'uso del DHCP, ma se siete molto attenti alla sicurezza, non dovreste probabilmente aggiungere bpf al vostro kernel in previsione di un uso futuro del DHCP.

  • Edita il tuo /etc/rc.conf per includere la seguente linea:

    ifconfig_fxp0="DHCP"

    Nota:

    Accertati di sostituire fxp0 con il nome dell'interfaccia che intendi configurare dinamicamente, come descritto in .

    Se stai usando una locazione diversa per dhclient, o se desideri passare flags addizionali a dhclient includi anche le linee seguenti (editandole come necessario):

    dhcp_program="/sbin/dhclient"
    dhcp_flags=""

Il server DHCP, dhcpd, è incluso come parte del port net/isc-dhcp3-server nella collezione dei ports. Questo port contiene il server DHCP ISC e la documentazione.

27.5.5. Files

  • /etc/dhclient.conf

    dhclient richiede un file di configurazione, /etc/dhclient.conf. Tipicamente il file contiene solo commenti, essendo i default ragionevolmente corretti. Questo file di configurazione è descritto dalla pagina di manuale dhclient.conf(5).

  • /sbin/dhclient

    dhclient è linkato staticamente e risiede in /sbin. Le pagine di manuale di dhclient(8) danno maggiori informazioni su dhclient.

  • /sbin/dhclient-script

    dhclient-script è lo script di configurazione del client DHCP specifico di FreeBSD. Viene descritto in dhclient-script(8) ma non dovrebbe aver bisogno di nessuna modifica utente per funzionare correttamente.

  • /var/db/dhclient.leases

    Il client DHCP mantiene un database di validi rilasci in questo file, che viene scritto come un log. dhclient.leases(5) ne dàuna descrizione leggermente più estesa.

27.5.6. Ulteriori Letture

Il protocollo DHCP è descritto in maniera estesa in RFC 2131. Informazioni aggiuntive sono presenti a questo URL: http://www.dhcp.org/.

27.5.7. Installare e Configurare un Server DHCP

27.5.7.1. Cosa Copre Questa Sezione

Questa sezione fornisce informazioni su come configurare un sistema FreeBSD che funzioni come un server DHCP usando l'implementazione del server DHCP dell'ISC (Internet Software Consortium).

Il server non viene fornito come parte di FreeBSD, così dovrai installare il port net/isc-dhcp3-server per fornire questo servizio. Vedi Capitolo 4, Installazione delle Applicazioni: Port e Package per più informazioni su come usare la Collezione dei Port.

27.5.7.2. Installazione del DHCP Server

Per configurare il tuo sistema FreeBSD come un server DHCP, assicurati che il device bpf(4) sia compilato nel kernel. Per farlo, aggiungi device bpf al file di configurazione del kernel, e ricompilalo. Per maggiori informazioni su come compilare un kernel, vedi Capitolo 8, Configurazione del Kernel di FreeBSD.

Il device bpf è già parte del kernel GENERIC che viene fornito con FreeBSD, così non hai bisogno di creare un kernel custom per far funzionare il DHCP.

Nota:

Quelli di voi che sono particolarmente attenti alla sicurezza, dovrebbero notare che bpf è anche il device che permette agli sniffer di pacchetti di funzionare correttamente (anche se tali programmi hanno bisogno di accesso privilegiato). bpf è richiesto per il funzionamento del DHCP, ma se siete molto attenti alla sicurezza, probabilmente non dovreste includere bpf nel vostro kernel semplicemente perchè vi aspettate di usare il DHCP in qualche momento.

La prossima cosa che devi fare è editare il file dhcpd.conf che è stato installato dal port net/isc-dhcp3-server. Di default, questo sarà /usr/local/etc/dhcpd.conf.sample e dovresti copiare questo file in /usr/local/etc/dhcpd.conf prima di procedere con i cambiamenti.

27.5.7.3. Configurare il Server DHCP

dhcpd.conf è composto di dichiarazioni riguardanti sottoreti ed host, e forse lo si spiega meglio con un esempio:

option domain-name "example.com";1
option domain-name-servers 192.168.4.100;2
option subnet-mask 255.255.255.0;3

default-lease-time 3600;4
max-lease-time 86400;5
ddns-update-style none;6

subnet 192.168.4.0 netmask 255.255.255.0 {
  range 192.168.4.129 192.168.4.254;7
  option routers 192.168.4.1;8
}

host mailhost {
  hardware ethernet 02:03:04:05:06:07;9
  fixed-address mailhost.example.com;10
}

1

Questa opzione specifica il dominio che verrà servito ai client come il dominio di default di ricerca. Si veda resolv.conf(5) per più informazioni.

2

Questa opzione specifica una lista di server DNS separata da virgole, che i client dovrebbero usare.

3

La netmask che sarà fornita ai client.

4

Un client potrebbe richiedere una lunghezza di tempo specifica per la quale il rilascio sarà valido. Altrimenti il server assegnerà un tempo di rilascio con questa durata (in secondi).

5

Questa è la lunghezza massima di tempo per la quale un server effettuerà un rilascio. Se un client dovesse richiedere un rilascio più lungo, sarà effettuato un rilascio, anche se sarà valido solo per max-lease-time secondi.

6

Questa opzione specifica se il server DHCP dovrà cercare di modificare il DNS quando un rilascio è accettato o liberato. Nella implementazione ISC questa opzione è richiesta.

7

Questo identifica quale indirizzo IP dovrà essere usato nel pool riservato per l'allocazione ad i client. Gli indirizzi IP fra, ed inclusi, quelli dichiarati sono assegnabili agli utenti.

8

Dichiara il default gateway che sarà assegnato ad i client.

9

L'indirizzo hardware MAC di un host (cosicchè il server DHCP possa riconoscere un host quando fa una richiesta).

10

Specifica che all'host dovrebbe sempre essere fornito lo stesso indirizzo IP. Nota che usare un hostname è corretto in questo caso, dato che il DHCP server risolverà l'hostname stesso prima di restituire l'informazione sul rilascio.

Una volta che hai finito di scrivere il tuo dhcpd.conf, puoi abilitare il server DHCP in /etc/rc.conf, aggiungendo:

dhcpd_enable="YES"
dhcpd_ifaces="dc0"

Sostituisci il nome dell'interfaccia dc0 con l'interfaccia (o le interfacce, separate da spazi) su cui il tuo server DHCP dovrebbe stare in ascolto per le richieste DHCP dei client.

Quindi, puoi procedere ad avviare il server con il seguente comando:

# /usr/local/etc/rc.d/isc-dhcpd.sh start

Se hai bisogno di fare altri cambiamenti alla configurazione del server in futuro, è importante notare che l'invio di un segnale SIGHUP a dhcpd non fa sì che il file di configurazione sia ricaricato, come avviene con la maggior parte dei demoni. Dovrai inviare un segnale SIGTERM per fermare il processo, e poi riavviarlo usando il comando sopracitato.

27.5.7.4. Files

  • /usr/local/sbin/dhcpd

    dhcpd è linkato staticamente e risiede in /usr/local/sbin . La pagina di manuale di dhcpd(8) installata con il port dà più informazioni su dhcpd.

  • /usr/local/etc/dhcpd.conf

    dhcpd richiede un file di configurazione, /usr/local/etc/dhcpd.conf , prima che possa iniziare a fornire il servizio ai client. Questo file deve contenere tutte le informazioni che devono essere fornite ai client che sono serviti, oltre alle informazioni riguardanti le operazioni del server. Questo file di configurazione è descritto dalla pagina di manuale dhcpd.conf(5) installata dal port.

  • /var/db/dhcpd.leases

    Il server DHCP mantiene un database dei rilasci che ha effettuato in questo file, che viene scritto come un log. La pagina di manuale dhcpd.leases(5), installata dal port ne dà una descrizione leggermente pi` lunga.

  • /usr/local/sbin/dhcrelay

    dhcrelay è usata in ambienti avanzati dove un server DHCP reinvia le richieste da un client ad un altro server DHCP su una rete separata. Se hai bisogno di questa funzionalità, installa il port net/isc-dhcp3-relay. La pagina di manuale dhcrelay(8) fornita col port contiene più dettagli.

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.

Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.