DHCP mini-HOWTO

Vladimir Vuksan

               <vuksan@veus.hr>

   Diario delle Revisioni
   Revisione v4.12 22 Ottobre 2000 Revisionato da: vv

   Questo documento tenta di rispondere alle domande fondamentali
   su come configurare una Linux box per servire da server DHCP o
   client DHCP.

   Traduzione italiana a cura di Silvano Sallese email: sva.wally
   (at) libero (punto) it

   Revisione a cura di Gianluca Ciccarelli
     __________________________________________________________

   Sommario
   1. Introduzione

        1.1. Liberatoria standard
        1.2. Nuove versioni di questo documento
        1.3. Feedback
        1.4. Collaboratori
        1.5. Informazioni di copyright

   2. Il protocollo DHCP
   3. Setup del client

        3.1. Scaricare il demone client (dhcpcd)
        3.2. Slackware
        3.3. RedHat 6.x e Mandrake 6.x
        3.4. RedHat 5.x
        3.5. RedHat 4.x e Caldera OpenLinux 1.1/1.2
        3.6. Debian
        3.7. LinuxPPC e MkLinux
        3.8. Comporre il tutto
        3.9. Note varie
        3.10. Risoluzione dei problemi

              3.10.1. La scheda di rete non � correttamente
                      configurata

              3.10.2. Il server DHCP supporta RFC 1541/Il server
                      DHCP � Windows NT

              3.10.3. Durante l'avvio si ha il messaggio di errore
                      "Utilizzo di DHCP per eth0 ... fallito", ma
                      il sistema funziona correttamente.

              3.10.4. La rete funziona per alcuni minuti e poi
                      smette di rispondere

              3.10.5. La scheda ethernet � riconosciuta durante
                      l'avvio, ma appare il messaggio "NO
                      DHCPOFFER" nel log. Inoltre, si d� il caso
                      che io abbia una scheda ethernet PCMCIA.

              3.10.6. Il mio client DHCP invia richieste broadcast
                      ma nessuno risponde (contributo di Peter
                      Amstutz)

              3.10.7. Ho seguito tutti i passasggi, ma la mia
                      macchina non riesce ancora a connettersi

              3.10.8. Ho il servizio MediaOne Express e non riesco
                      a connettermi.

        3.11. Client DHCP alternativo (ISC dhclient)

   4. Setup del server DHCP

        4.1. Server DHCP per UNIX
        4.2. Configurazione del server DHCP
        4.3. Opzioni per DHCPd
        4.4. Avviare il server
        4.5. Altri documenti interessanti

1. Introduzione

1.1. Liberatoria standard

   Non si assumono responsabilit� per il contenuto di questo
   documento. Usare i concetti, gli esempi e il rimanente
   contenuto a proprio rischio. Essendo questa un'edizione nuova
   del documento ci possono essere errori e inesattezze che,
   naturalmente, potrebbero danneggiare il sistema in uso.
   Procedete con cautela e, sebbene questi siano estremamente
   improbabili, l'autore non si assume alcuna responsabilit� per
   eventuali danni.

   Inoltre tenere a mente che queste NON sono informazioni
   ufficiali. La maggior parte dei contenuti di questo documento
   sono ipotesi, che tuttavia sembrano funzionare nella maggior
   parte dei casi. Usare le informazioni a proprio rischio.
     __________________________________________________________

1.2. Nuove versioni di questo documento

   Nuove versioni di questo documento sono disponibili presso:

   http://www.oswg.org/oswg-nightly/DHCP.html

   Sono disponibili le seguenti traduzioni del DHCP mini-HOWTO:

     * Cinese - http://www.linux.org.tw/CLDP/mini/DHCP.html
     * Giapponese - http://www.linux.or.jp/JF/JFdocs/DHCP.html
     * Spagnolo -
       ftp://cuates.pue.upaep.mx/pub/linux/LuCAS/DHCP-mini-Como/

   Chiunque puo` tradurre questo documento nella propria lingua.
   Si richiede soltanto che venga fornito un collegamento al
   documento originale e si comunichi all'autore un URL della
   traduzione, cos� da poter includere un link ad essa.
     __________________________________________________________

1.3. Feedback

   Sono senz'altro bene accetti tutti i riscontri a questo
   documento. Senza aggiunte e consigli degli utenti, questo
   documento non potrebbe esistere. Si mandino pure commenti,
   aggiunte e critiche, a <vuksan-feedback@veus.hr>.
     __________________________________________________________

1.4. Collaboratori

   La versione originale di questo documento � stata modificata da
   Paul Makeev.

   Le seguenti persone hanno dato un contribuito a questo
   mini-HOWTO.

     * Heiko Schlittermann
     * Jonathan Smith
     * Dan Khabaza
     * Hal Sadofsky
     * Henrik Stoerner
     * Paul Rossington
     * molti altri
     __________________________________________________________

1.5. Informazioni di copyright

   This document is copyrighted (c) 1998 Vladimir Vuksan and
   distributed under the terms of the OpenContent License (OPL).
   Full text of the license can be found at

   http://www.opencontent.org/opl.shtml
     __________________________________________________________

2. Il protocollo DHCP

   DHCP sta per Dynamic Host Configuration Protocol. Esso �
   utilizzato per controllare i parametri di rete essenziali degli
   host (i client in esecuzione) con l'aiuto di un server. DHCP �
   retrocompatibile con BOOTP. Per maggiori informazioni vedere la
   RFC 2131 (versione precedente RFC 1541) e successive. (Vedere
   nella sezione Risorse Internet alla fine del documento). In
   aggiunta si pu� leggere
   http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html.

   Questo mini-HOWTO tratta sia il demone DHCP _SERVER_ che il
   demone DHCP _CLIENT_. La maggior parte delle persone ha bisogno
   del demone client, utilizzato dalle workstation per ottenere
   informazioni di rete da un server remoto. Il demone server
   viene utilizzato dagli amministratori di sistema per
   distribuire le informazioni di rete ai client, pertanto ad un
   normale utente serve il demone _CLIENT_.
     __________________________________________________________

3. Setup del client

   Attualmente ci sono tre diversi programmi client DHCP per
   Linux: dhcpcd, pump e dhclient. Questo mini-HOWTO tratta
   principalmente dhcpcd.
     __________________________________________________________

3.1. Scaricare il demone client (dhcpcd)

   A seconda della vostra distribuzione, potreste dover scaricare
   il demone del client DHCP. Nel caso lo si voglia compilare da
   codice sorgente, il pacchetto di cui si ha bisogno si chiama
   dhcpcd e la versione corrente � 1.3.18. � mantenuto da Sergei
   Viznyuk <sergei@phystech.com> ed attualmente sono disponibili i
   pacchetti binari per la maggior parte delle distribuzioni.

   Il codice sorgente di dhcpcd si pu� scaricare dai seguenti
   siti:

     * ftp://ftp.phystech.com/pub/ (sito principale)
     * http://www.cps.msu.edu/~dunham/out/

   Successivamente, seguire le istruzioni qui sotto. Dovrebbero
   essere tra loro equivalenti.
     __________________________________________________________

3.2. Slackware

   � possibile scaricare l'ultima copia del DHCPcd da qualsiasi
   mirror Metalab oppure dai siti:

     * ftp://metalab.unc.edu/pub/Linux/system/network/daemons
     * ftp://ftp.phystech.com/pub/ (sito principale)

   Scaricare l'ultima versione di dhcpcd.tar.gz.

     * Scompattarlo con il comando
       tar -zxvf dhcpcd-1.3.18pl1.tar.gz
     * Portarsi nella directory ed eseguire make
       cd dhcpcd-1.3.18pl1
       make
     * Installarlo (si deve eseguire il seguente comando come
       root)
       make install

   Questo creer� la directory /etc/dhcpc dove DHCPcd memorizzer�
   le informazioni DHCP e il file dhcpcd sar� copiato all'interno
   di /usr/sbin.

   Affinch� l'inizializzazione del DHCP avvenga durante l'avvio
   del sistema, digitare:

   cd /etc/rc.d

   mv rc.inet1 rc.inet1.OLD

   Questo sposter� il vecchio script di inizializzazione della
   rete in rc.inet1.OLD. Ora � necessario creare il nuovo script
   rc.inet1.Tutto ci� che serve � il seguente codice:
#!/bin/sh
#
# rc.inet1      Questo script shell avvia il sistema base INET.

HOSTNAME=`cat /etc/HOSTNAME` #Questo probabilmente non � necessario, ma
                             #� comunque consigliabile lasciarlo.

# Aggiunge il dispositivo di loopback.
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

# SE SI DISPONE DI UNA CONNESSIONE ETHERNET, usare le seguenti linee per

# configurare l'interfaccia eth0. Se si sta utilizzando solo il loopback
 o SLIP,
# non includere il resto delle linee di questo file.

/usr/sbin/dhcpcd

   Salvare lo script e riavviare il computer.

   Quando si � terminato, andare all'ultimo passaggio.
     __________________________________________________________

3.3. RedHat 6.x e Mandrake 6.x

   La configurazione di DHCPcd in RedHat 6.0+ � veramente
   semplice. Quello che si deve fare � avviare il Pannello di
   Controllo digitando control-panel.

     * Selezionare "Configurazione di rete"
     * Cliccare su "Interfacce"
     * Cliccare su "Aggiungi"
     * Selezionare "Ethernet"
     * In "Modifica interfaccia Ethernet/Bus" selezionare
       "Attivare l'interfaccia all'avvio" e selezionare anche
       "DHCP" come "Protocollo di configurazione interfaccia"

   Si noti che RedHat 6.x include un client DHCP chiamato "pump"
   anzich� il gi� menzionato dhcpcd. Il CD-ROM include l'RPM di
   dhcpcd, per cui, se non si ha fortuna con pump, tentare con
   dhcpcd. Una volta installato dhcpcd (ad esempio con rpm -i
   dhcpcd-1.3.17pl2-1.i386.rpm) sar� necessario apportare alcune
   modifiche.

   Note aggiuntive di Alexander Stevenson
   <alexander.stevenson@home.com>:

   Non ho avuto fortuna con DHCPcd. Ci� che alla fine ha
   funzionato � "pump", che � preinstallato nella Linux Mandrake
   6.0 (e dunque penso sia incluso anche nella RedHat). Il comando
   che ho utilizzato �

   pump -i eth0 -h hostname

   Non ho idea di cosa sia il parametro "hostname", ma senza di
   esso il server non risponde.

   Successivamente, ho modificato la riga nel mio script
   /sbin/ifup affinch� rispecchi il cambiamento; la versione di
   default non ha l'opzione -h, e cos� nel mio caso non funziona.

   Fondamentalmente, se si utilizza linuxconf, e dopo aver
   impostato l'adattatore su "DHCP" esso continua a non
   funzionare, provare aggiungendo "-h hostname" alla riga di pump
   nello script /sbin/ifup. Il mio script ora ha quest'aspetto:
...
if [ -n "$PUMP" ]; then
    echo -n "Rilevazione informazioni IP per $DEVICE..."
    if /sbin/pump -i $DEVICE -h hostname; then
        echo " fatto."
    else
        echo " fallito."
        exit 1
    fi
else ...

   Un modo pi� elegante per aggiungere il campo hostname viene
   suggerito da Aad van der Klaauw:

   Attualmente sto configurando un systema gateway casalingo, ho
   dovuto impostare l'indirizzo MAC e usare il trucco '-h
   hostname'. Cos� ho deciso di *non* cambiare lo script ma di
   usare il file di configurazione. Nel mio
   /etc/sysconfig/network-scripts/ifcfg-eth0 ho aggiunto ci� che
   segue:
DEVICE="eth0"
MACADDR="00:11:22:33:44:55"
DHCP_HOSTNAME="trigger_for_terayon"

   che non ha bisogno di essere cambiato insieme agli
   aggiornamenti ed � a mio modesto avviso un metodo pi� "pulito".

   Questo � quanto. Riavviare la macchina o digitare /sbin/ifup
   eth0 alla riga di comando.
     __________________________________________________________

3.4. RedHat 5.x

   La configurazione di DHCPcd in RedHat 5.0+ � molto semplice.
   Tutto ci� di cui si ha bisogno � avviare il Pannello di
   controllo digitando control-panel.

     * Selezionare "Configurazione di rete"
     * Cliccare su "Interfacce"
     * Cliccare su "Aggiungi"
     * Selezionare "Ethernet"
     * In "Modifica interfaccia Ethernet/Bus" selezionare
       "Attivare interfaccia all'avvio" e selezionare anche "DHCP"
       come "Protocollo di configurazione interfaccia".

   Una volta terminato, andare all'ultimo passaggio.
     __________________________________________________________

3.5. RedHat 4.x e Caldera OpenLinux 1.1/1.2

   DHCPcd � incluso nella distribuzione RedHat standard come RPM e
   lo si pu� trovare nel CD-ROM della distribuzione nella
   directory RPMS, oppure � possibile scaricarlo da:

   ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhc
   pcd-0.6-2.i386.rpm

   Installarlo con rpm -i dhcpcd-0.6-2.i386.rpm.

   In alternativa, � possibile compilare la propria versione
   seguendo i passaggi descritti nel Slackware.

   Le seguenti informazioni sono state fornite all'autore da
   nothing <nothing@cc.gatech.edu>.

     Ho rimosso il mio ip statico ed il mio nome da
     /etc/resolv.conf, ma ho lasciato nella riga di ricerca le
     righe relative ai miei due server dei nomi (per qualche
     motivo il mio dhcpcd non ha mai creato un
     /etc/dhcpc/resolv.conf, per cui devo utilizzare un
     /etc/resolv.conf statico).

     In /etc/sysconfig/network ho rimosso le due voci HOSTNAME e
     GATEWAY. Ho lasciato l'ordine delle voci dell'elenco cos�
     com'erano (NETWORKING, DOMAINNAME, GATEWAYDEV).

     In /etc/sysconfig/network-scripts/ifcfg-eth0 ho rimosso le
     righe IPADDR, NETMASK, NETWORK, e BROADCAST. Ho lasciato
     DEVICE e ONBOOT com'erano. Ho cambiato la riga BOOTPROTO in
     BOOTPROTO=dhcp.

     Salvare il file. Riavviare il computer.

   Quando si sia terminato, andare all'ultimo passaggio.
     __________________________________________________________

3.6. Debian

   Esiste un pacchetto deb di DHCPcd (assicurarsi che cominci con
   dhcpcd) su:

   http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/

   In alternativa, seguire le Slackware istruzioni di
   installazione.

   Per scompattare il pacchetto deb digitare dpkg -i
   /where/ever/your/debian/packages/are/dhcpcd*deb.

   Sembra che non sia necessaria alcuna configurazione di DHCPcd
   perch�:


     Il pacchetto dhcpcd installa il suo script d'avvio, come
     consueto per i pacchetti debian, in /etc/init.d/package_name,
     come /etc/init.d/dhcpcd, e lo collega alle varie cartelle
     /etc/rc?.d/.

           --Da: Heiko Schlittermann <heiko@os.inf.tu-dresden.de>

   Il contenuto delle cartelle /etc/rc?.d/ viene poi eseguito
   all'avvio.

   Se non viene fatto il riavvio dopo l'installazione, si pu�
   pensare di far partire il demone manualmente:
   /etc/init.d/dhcpcd start.

   Quando terminato andare all'ultimo passaggio.
     __________________________________________________________

3.7. LinuxPPC e MkLinux

   La seguente sezione � stata scritta da R. Shapiro

   Dalla distribuzione "1999" (R5), Linuxppc � ora quasi
   completamente compatibile con RedHat 6, con un unico
   accorgimento (vedere di seguito). In generale, le istruzioni
   sono esattamente le stesse necessarie per la distribuzione
   corrente di RedHat 6.x e Mandrake 6.x.

   Resta il problema che RedHat 6 utilizza il client 'pump' per
   dhcp come predefinito e 'pump' non funziona in modo affidabile
   in Linuxppc. Per aggirare questo problema, si pu� installare
   l'ultimo dhcpcd di Sergei Viznyuk e, successivamente,
   modificare /sbin/ifup per utilizzare dhcpcd al posto di pump.

   Cambiare
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
     PUMP=true
 fi

 if [ -n "$PUMP" ]; then

   con
 if [  "$BOOTPROTO" = bootp ]; then
       echo " fatto."
     else
       echo " fallito."
       exit 1
     fi
 elif [ "$BOOTPROTO" = dhcp ]; then
     echo -n "Rilevazione informazioni IP per $DEVICE..."
     if /sbin/dhcpcd -d $DEVICE ; then
       if [ -f /etc/dhcpc/dhcpcd-${DEVICE}.exe ]; then
           /etc/dhcpc/dhcpcd-${DEVICE}.exe
       fi

   e apportare una modifica corrispondente per ifdown. Sostituire
if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = dhcp ]; then
....
fi

   con
if [ "$BOOTPROTO" = bootp ]; then
fi

if [ "$BOOTPROTO" = dhcp ]; then
      if [ -f /var/run/dhcpcd-${DEVICE}.pid ]; then
              kill `cat /var/run/dhcpcd-${DEVICE}.pid`
              rm -f /var/run/dhcpcd-${DEVICE}.pid
      fi
fi

   Un rpm di dhcpcd funzionante per ppc � incluso nel cd di
   Linuxppc 1999; un rpm leggermente pi� recente � disponibile
   nella cartella contrib su ftp://ftp.linuxppc.org/. I sorgenti,
   per una compilazione "out of the box" in Linuxppc 1999, sono
   disponibili presso
   ftp://ftp.phystech.com/pub/dhcpcd-1.3.17-pl9.tar.gz.
     __________________________________________________________

3.8. Comporre il tutto

   Una volta riavviata la macchina, l'interfaccia di rete dovrebbe
   essere configurata. Digitare: ifconfig.

   Dovrebbe comparire qualcosa di simile a questo:
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0

eth0      Link encap:Ethernet  HWaddr 00:20:AF:EE:05:45
          inet addr:24.128.53.102  Bcast:24.128.53.255  Mask:255.255.254
.0
          ^^^^^^^^^^^^^^^^^^^^^^^
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
          TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:
96
          Interrupt:10 Base address:0x300

   Se compaiono numeri normali sotto inet addr tutto � andato a
   buon fine. Se � visualizzato 0.0.0.0 niente paura, �
   un'impostazione temporanea prima che dhcpcd acquisisca
   l'indirizzo IP. Se dopo pochi minuti continua ad apparire
   0.0.0.0, dare una occhiata a Risoluzione dei problemi. DHCPcd �
   un demone e rimarr� in esecuziione per tutto il tempo che la
   macchina rimarr� accesa. Ogni tre ore contatter� il server DHCP
   e tenter� di rinnovare l'indirizzo IP. Registrer� tutti i
   messaggi nel syslog (in Slackware /var/adm/syslog,
   RedHat/OpenLinux /var/log/syslog).

   Un'ultima cosa. � necessario specificare i nameserver. Esistono
   due modi per farlo, chiedendo al proprio provider di fornire
   gli indirizzi del nameserver e, successivamente, inserire
   questi nel file /etc/resolv.conf, oppure DHCPcd otterr� la
   lista dal server DHCP e creer� un resolv.conf in /etc/dhcpc.

   L'autore del presente howto ha deciso di utilizzare il
   resolv.conf di DHCPcd facendo come segue:

   Fare una copia di sicurezza del vecchio /etc/resolv.conf: mv
   /etc/resolv.conf /etc/resolv.conf.OLD

   Se la cartella /etc/dhcpc non esiste, crearla: mkdir /etc/dhcpc

   Creare un collegamento da /etc/dhcpc/resolv.conf a
   /etc/resolv.conf: ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf

   Se non funziona, provare questo (correzione suggerita da
   <nothing@cc.gatech.edu> con una piccola correzione di Henrik
   Stoerner):

   Quest'ultimo passaggio � stato fatto solo perch� il dhcpcd
   dell'autore non ha creato un /etc/dhcpc/resolv.conf. In
   /etc/sysconfig/network-scripts/ifup l'autore ha effettuato le
   seguenti modifiche (non sono di livello avanzato, ma
   funzionano):
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
    echo -n "Utilizzo di DHCP per ${DEVICE}... "
    /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE
}
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" |
sh

    if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
        ^^^^
        echo "fallito."
        exit 1

   Cambiato in:
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
    echo -n "Utilizzo di DHCP per ${DEVICE}... "
    /sbin/dhcpcd
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" |
sh

    if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
        ^^^^^^
       echo "fallito."
       exit 1

   Nota

        Osservare il ! (punto esclamativo) in if [ ! -f
        /var/run/dhcp-wait-${DEVICE}.pid ];

   Ora ci si pu� sedere e divertirsi :-).
     __________________________________________________________

3.9. Note varie

   I seguenti passaggi non sono necessari, ma potrebbero essere
   utili in alcuni casi:

    a. Se si necessita della connessione di rete solo
       occasionalmente � possibile avviare dhcpcd dalla linea di
       comando (� necessario essere root per fare questo) con:
       /usr/sbin/dhcpcd.
       Quando occorre disabilitare la rete, digitare
       /usr/sbin/dhcpcd -k.
     __________________________________________________________

3.10. Risoluzione dei problemi

   Se sono stati seguiti i passaggi delineati in precedenza e non
   � possibile accedere alla rete, ci sono diverse possibili
   spiegazioni:
     __________________________________________________________

3.10.1. La scheda di rete non � correttamente configurata

   Durante il processo d'avvio, Linux verifica la scheda di rete e
   comunica qualcosa del tipo:
eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IR
Q 10.
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

   Se un messaggio come questo non appare, il sistema Linux non
   riesce a riconoscere la scheda ethernet.Se si possiede una
   generica scheda ethernet (un clone NE2000) si dovrebbe essere
   in possesso di un disco con strumenti DOS che � possibile
   utilizzare per configurare la scheda. Fare dei tentativi con
   gli IRQ finch� Linux riconosce la scheda (IRQ 9,10,12
   solitamente vanno bene).
     __________________________________________________________

3.10.2. Il server DHCP supporta RFC 1541/Il server DHCP � Windows NT

   Tentare l'esecuzione di dhcpcd digitando dhcpcd -r.

   Utilizzare ifconfig per controllare se l'interfaccia di rete �
   configurata (attendere alcuni secondi per il processo di
   configurazione, inizialmente sar� Inet.addr=0.0.0.0)

   Se questo risolve i problemi aggiungere l'opzione "-r" agli
   script d'avvio, ad esempio: al posto di /sbin/dhcpcd si avr�
   /sbin/dhcpcd -r.

   Ad esempio, in RedHat modificare lo script
   /etc/sysconfig/network-scripts/ifup e cambiare quanto segue:
        IFNAME=$[ {DEVICE} \
        "/sbin/dhcpcd -r -c /etc/"- etc etc.
     __________________________________________________________

3.10.3. Durante l'avvio si ha il messaggio di errore "Utilizzo di
DHCP per eth0 ... fallito", ma il sistema funziona correttamente.

   Molto probabilmente si sta usando RedHat e le istruzioni non
   sono state seguite con attenzione :-). Si sta dimenticando il !
   (punto esclamativo) in uno dei passaggi. Tornare qui e
   controllare come sistemare la questione.
     __________________________________________________________

3.10.4. La rete funziona per alcuni minuti e poi smette di rispondere

   Ci sono alcuni report di gated (demone gateway) che
   compromettono il routing su piattaforme Linux, portando al
   problema sopra descritto. Controllare se gated � in esecuzione
   con: ps -auxww | grep gate.

   Se lo �, tentare di rimuoverlo con il gestore RPM di RedHat o
   rimuovendone la riga in /etc/rc.d/.
     __________________________________________________________

3.10.5. La scheda ethernet � riconosciuta durante l'avvio, ma appare
il messaggio "NO DHCPOFFER" nel log. Inoltre, si d� il caso che io
abbia una scheda ethernet PCMCIA.

   Assicurarsi che la porta 10BaseT (attacco "phone") sulla scheda
   di rete sia attivato. Il miglior modo per verificarlo �
   controllare per quale tipo di connettore la scheda � stata
   configurata durante l'avvio, ad esempio
eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IR
Q 10.
                            ^^^^^^^^^^^^
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

   Sono pervenute segnalazioni di utenti di computer portatili che
   hanno questo tipo di problemi dovuto alle utility PCMCIA (nello
   specifico, ifport) che imposta il tipo di connettore su 10Base2
   (thinnet). Bisogna assicurarsi che si stia usando 10BaseT per
   la connessione. In caso contrario, riconfigurare la scheda e
   riavviare il computer.
     __________________________________________________________

3.10.6. Il mio client DHCP invia richieste broadcast ma nessuno
risponde (contributo di Peter Amstutz)

   Su alcuni sistemi � necessario includere un qualche hostname
   per la macchina come parte della richiesta. Con dhcpcd, farlo
   con dhcpcd -h foohost Probabilmente l'hostname richiesto sar�
   lo username dell'account sulla rete.
     __________________________________________________________

3.10.7. Ho seguito tutti i passasggi, ma la mia macchina non riesce
ancora a connettersi

   Il modem solitamente memorizza l'indirizzo ethernet della
   scheda di rete, cos� se si connette un nuovo computer o si
   cambia scheda di rete, in qualche modo si dovr� istruire il
   modem per il riconoscimento del nuovo computer o della nuova
   scheda. Solitamente, � possibile spegnere il modem e
   riaccenderlo mentre il computer � acceso; oppure sar�
   necessario chiamare il supporto tecnico e dirgli che � stata
   cambiata la scheda di rete nel computer.

   Alcune regole del firewall (regole ipfwadm) bloccano il
   traffico delle porte 67/68 usate dal DHCP per trasmettere le
   informazioni di configurazione. Controllare attentamente le
   regole del firewall.
     __________________________________________________________

3.10.8. Ho il servizio MediaOne Express e non riesco a connettermi.

   Sembra che MediaOne aggiunga alcune cose al DHCP che non vi
   dovrebbero essere. In teoria questo non � pi� un problema, ma
   se si presentano disservizi controllare queste cose. Se si ha
   la (s)fortuna di avere una macchina con Windows NT, nel
   "Visualizzatore di Eventi" si nota un messaggio di avvertimento
   come questo:
DHCP ha ricevuto una opzione 067 sconosciuta di lunghezza 005.
I dati grezzi sono forniti di seguito.

0000: 62 61 73 69 63            basic

   Se il problema � questo, andare su ftp://vanbuer.ddns.org/pub/
   e scaricare un eseguibile o prelevare il sorgente per risolvere
   il problema.
     __________________________________________________________

3.11. Client DHCP alternativo (ISC dhclient)

   Se non si � avuto successo nel far funzionare la connessione in
   Linux con dhcpcd, si pu� provare ISC dhclient. Il client
   dhclient � fornito con la distribuzione DHCP di ISC, che
   include sia un client che un server DHCP. Istruzioni su come
   ottenere e compilare la distribuzione DHCP possono essere
   trovate qui. Una volta pronti, rileggere questa sezione per
   configurare il client.

   Nota

        La seguente informazione � stata fornita da Ted Lemon
        <mellon@isc.org> uno degli autori del dhclient.

   Con la corrente versione del client DHCP, non � necessario un
   file dhclient.conf. � sufficiente invocare dhclient, ad
   esempio: /sbin/dhclient.

   Questo configurer� tutte le interfacce broadcast. Se non
   funziona oppure si vuole specificare solo una interfaccia,
   creare un file /etc/dhclient.conf con questa configurazione di
   esempio.
interface "eth0" {
  send dhcp-client-identifier 1:xx:xx:xx:xx:xx:xx;
  send dhcp-lease-time 86400;
}

   Qui si assume che l'interfaccia ethernet sia eth0. Se non lo �,
   cambiare di conseguenza. Inoltre va sostituito xx:xx:xx:xx:xx
   con l'indirizzo ethernet. Questo dhclient.conf fa s� che il
   client appaia pi� simile ad un client Win95.
     __________________________________________________________

4. Setup del server DHCP

4.1. Server DHCP per UNIX

   Esistono molti server DHCP disponibili per sistemi operativi
   U*X-like, sia commerciali che liberi. Uno dei pi� popolari
   server DHCP liberi � Paul Vixie/ISC DHCPd. Attualmente l'ultima
   versione � la 2.0 (suggerito per la maggior parte degli
   utenti), ma la 3.0 � in beta testing. Si possono ottenere da

   ftp://ftp.isc.org/isc/dhcp/

   Alcune distribuzioni forniscono i pacchetti binari per dhcpd,
   per cui se � gi� installato in questo modo saltare la seguente
   sezione.

   Dopo averlo scaricato, scompattarlo. Una volta fatto, tramite
   il comando cd portarsi all'interno della directory della
   distribuzione e digitare ./configure

   Ci vorr� un p� di tempo per configurare le impostazioni. Quando
   terminato, digitare: make e make install.
     __________________________________________________________

4.2. Configurazione del server DHCP

   Terminata l'installazione, digitare ifconfig -a. Si vedr�
   qualcosa di simile a quanto segue:
eth0      Link encap:10Mbps Ethernet  HWaddr 00:C0:4F:D3:C4:62
          inet addr:183.217.19.43  Bcast:183.217.19.255  Mask:255.255.25
5.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2875542 errors:0 dropped:0 overruns:0
          TX packets:218647 errors:0 dropped:0 overruns:0
          Interrupt:11 Base address:0x210

   Se non compare MULTICAST si dovr� riconfigurare il kernel e
   aggiungere il supporto per il multicast. Sulla maggior parte
   dei sistemi non � necessario farlo.

   Il passo successivo � aggiungere il percorso per
   255.255.255.255. Citazione dal file README di DHCPd:

     "Affinch� dhcpd lavori correttamente con fastidiosi client
     DHCP (ad esempio Windows 95), deve essere capace di inviare
     pacchetti con un indirizzo IP di destinazione
     255.255.255.255. Sfortunatamente, Linux insiste nel cambiare
     255.255.255.255 con l'indirizzo di broadcast della subnet
     locale (qui � 192.5.5.223). Il risultato di tutto ci� � una
     violazione del protocollo DHCP, e, mentre molti client DHCP
     non risentono del problema, alcuni (ad esempio, tutti i
     client DHCP Microsoft) lo fanno. I client che risentono di
     questo problema sembra non riconoscano i messaggi DHCPOFFER
     provenienti dal server."

   Digitare: route add -host 255.255.255.255 dev eth0

   Se appare un messaggio "255.255.255.255: Unknown host", provare
   aggiungendo le seguenti righe al file /etc/hosts:
255.255.255.255 all-ones

   Quindi provare:
route add -host all-ones dev eth0

   oppure
route add 255.255.255.0 dev eth0

   eth0 � ovviamente il nome del dispositivo di rete in uso. Se il
   proprio dispositivo ha un nome diverso, cambiare i comandi in
   maniera appropriata.
     __________________________________________________________

4.3. Opzioni per DHCPd

   Ora � necessario configurare DHCPd. Per fare questo bisogna
   creare o modificare /etc/dhcpd.conf. C'� una interfaccia
   grafica per la configurazione di dhcpd in KDE (
   http://www.kde.org/ ) chiamata kcmdhcpd che � molto simile
   all'interfaccia di configurazione DHCP di Windows NT. Quando
   uscir� KDE 2.0, avr� in dotazione kcmdhcpd; in alternativa �
   possibile ottenerlo direttamente da:

   ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/

   Se lo si vuole configurare manualmente, seguire le istruzioni
   che seguono.

   Quello che si vuole fare nella maggior parte dei casi �
   assegnare l'indirizzo IP casualmente. Questo pu� essere fatto
   con le seguenti impostazioni:
# Esempio /etc/dhcpd.conf
# (aggiungere qui i propri commenti)
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
   range 192.168.1.150 192.168.1.200;
}

   In questo modo il server DHCP assegner� al client un indirizzo
   IP compreso nell'intervallo 192.168.1.10-192.168.1.100 oppure
   192.168.1.150-192.168.1.200. Conceder� l'uso di un indirizzo IP
   per 600 secondi, se il client non richiede uno specifico
   intervallo di tempo. In quest'ultimo caso, il periodo massimo
   (concesso) sar� di 7200 secondi. Il server, inoltre, "avviser�"
   il client di usare 255.255.255.0 come maschera di sottorete,
   192.168.1.255 come indirizzo di broadcast, 192.168.1.254 come
   router/gateway e 192.168.1.1 e 192.168.1.2 come server DNS.

   Se � necessario specificare un server WINS per i client
   Windows, bisogner� includere l'opzione netbios-name-servers, ad
   esempio
option netbios-name-servers 192.168.1.1;

   � inoltre possibile assegnare specifici indirizzi IP basati su
   indirizzi ethernet dei client, ad esempio
host haagen {
   hardware ethernet 08:00:2b:4c:59:23;
   fixed-address 192.168.1.222;
}

   Questo assegner� l'indirizzo IP 192.168.1.222 ad un client con
   indirizzo ethernet 08:00:2b:4c:59:23.

   � inoltre possibile mescolare e mettere insieme i pezzi, ad
   esempio alcuni client ottengono indirizzi IP "statici" (ad
   esempio i server) e ad altri sono assegnati IP dinamici (ad
   esempio, utenti mobili con portatili). Esistono numerose altre
   opzioni, ad esempio indirizzi di server nis, indirizzi di time
   server, ecc.; se si ha bisogno di una qualsiasi di queste
   opzioni, leggere la pagina di manuale del dhcpd.conf.
     __________________________________________________________

4.4. Avviare il server

   C'� solo una cosa da fare prima di avviare il server. Nella
   maggioranza dei casi l'installazione di DHCP non crea un file
   dhcpd.leases. Questo file � usato da DHCPd per memorizzare
   informazioni riguardo le assegnazioni temporanee correnti. Esso
   � in formato testo semplice, cos� si pu� ispezionare durante il
   funzionamento di DHCPd. Per creare dhcpd.leases digitare:
touch /var/state/dhcp/dhcpd.leases

   Questo creer� un file vuoto (dimensione file = 0). Alcune
   vecchie versioni di dhcpd 2.0 posizionano il file in
   /etc/dhcpd.leases. Non sono necessari cambiamenti al file delle
   assegnazioni temporanee, esso sar� manipolato dal dhcpd. Se �
   visualizzato un messaggio che dice che il file esiste,
   semplicemente ignorarlo e andare al punto successivo.

   � ora possibile invocare il server DHCP. Semplicemente digitare
   (o includere tra gli script d'avvio)
/usr/sbin/dhcpd

   Questo invocher� dhcpd sul dispositivo eth0. Se lo si vuole
   invocare su un altro dispositivo, semplicemente sostituirlo
   nella linea di comando, ad esempio
/usr/sbin/dhcpd eth1

   Per verificare che tutto stia funzionando correttamente,
   bisogna prima entrare in modalit� debugging e mettere il server
   in primo piano. Si pu� fare digitando
/usr/sbin/dhcpd -d -f

   Successivamente avviare uno dei client e controllare la console
   del server. Dovrebbero apparire un numero di messaggi di debug.
   Se tutto funziona correttamente, avete fatto :-). Uscire da
   dhcpd e avviarlo senza -d -f e argomenti. Se si desidera che
   dhcp si avvii all'avvio di sistema, si pu� ad esempio includere
   dhcpd in
/etc/rc.d/rc.local
     __________________________________________________________

4.5. Altri documenti interessanti

   Nel numero di Aprile di Linux Magazine c'� un articolo molto
   buono chiamato Network Nirvana: How to make Network
   Configuration as easy as DHCP che tratta la configurazione del
   DHCP.