ISC DHCP: differenze tra le versioni

Riga 257: Riga 257:
application/x-ns-proxy-autoconfig              pac dat
application/x-ns-proxy-autoconfig              pac dat
</pre>
</pre>
== Troubleshooting dhcpd ==
=== isc-dhcp-server non riparte dopo un aggiornamento di sistema ===
Digitare da terminale:
<pre># systemctl status isc-dhcp-server.service</pre>
Se compaiono uno o più dei seguenti errori
<pre>No subnet declaration for ...</pre>
oppure
<pre>No subnet6 declaration for ...</pre>
e voi siete sicuri che la prima o entrambe (se usate anche IPv6) le dichiarazioni sono presenti, allora è necessario controllare il file <code>nano /etc/default/isc-dhcp-server</code> assicurandosi che sia presente (e non commentata) in coda la seguente dichiarazione (valida per IPv4):
<pre>INTERFACESv4="nome_interfacce"</pre>
dove nome_interfaccia è appunto il nome dell'interfaccia di rete su cui dhcpd deve rimanere in ascolto, ad es. "eth0" (NON omettere i doppi apici!). Si noti che è <code>INTERFACESv4</code> e non semplicemente <code>INTERFACES</code> come per le versioni più vecchie.
Prima di riavviare il demone digitare anche:
<pre># journalctl -xe</pre>
Se nel log compaiono sia <code>Failed to start LSB: DHCP server.</code> che <code>Starting ISC DHCPv4 server: dhcpddhcpd service already running (pid file /var/run/dhcpd.pid currenty exists) ... failed!</code> è necessario:
# arrestare il server
# eliminare manualmente il file <code>/var/run/dhcpd.pid</code>
A questo punto riavviare il demone e gli errori dovrebbero scomparire.
==== Impossibile accedere al file rndc.key ====
Può capitare che il demone dhcpd non riesca ad accedere al file <code>/etc/bind/rndc.key</code>, il che costituisce un errore critico (cioè il demone non si avvia) se ''dhcpd'' è stato configurato per aggiornare automaticamente i DNS.<br>
Una semplice soluzione è cambiare il gruppo proprietario del file da ''bind'' a ''dhcpd''
<pre># chown bind:dhcpd /etc/bind/rndc.key</pre>
Assicurarsi anche che i permessi sul file siano sufficienti, ad esempio ''640''.
== Esempi ==
=== Comandi utili ===
Elencare gli indirizzi IP dati in prestito da bind9:
<pre># dhcp-lease-list --lease /var/lib/dhcp/dhcpd.leases</pre>
=== Piccola LAN ===
Per la parte relativa ai DNS si veda [[Bind]].
==== Ipotesi ====
* Una decina di dispositivi con indirizzi statici tra computer (client windows e debian squeeze, un server debian squeeze) e stampanti di rete. Visto il ridotto numero si opta per un inserimento manuale dei relativi record DNS, pur essendo abilitato l'aggiornamento automatico tramite DHCP.
* Un portatile con indirizzo prefissato tramite dhcp, ma DNS inserito manualmente, e un portatile con MAC address conosciuto, ma indirizzo assegnato dinamicamente. In entrambi i casi la connessione può essere si via cavo che senza fili.
* Alcuni utenti saltuari cui si vuole garantire l'accesso a internet, ma non alla propria LAN. Si presume che tali utenti si colleghino via wireless, ma teoricamente potrebero collegarsi anche tramite cavo.
* Si ipotizza l'assenza di utenti malintenzionati, ovvero di utenti che cerchino attivamente di superare con ogni mezzo i limiti imposti.
==== dhcpd.conf ====
<pre>
# Parametri globali
authoritative;
ignore client-updates;
# Parametri per l'aggiornamento automatico di Bind
ddns-updates on;
ddns-update-style interim;
update-static-leases off;
ddns-domainname "small.lan.";
include "/etc/bind/rndc.key";
zone small.lan. {
    primary 192.168.1.100;
    key rndc-key;
}
zone 1.168.192.in-addr.arpa. {
    primary 192.168.1.100;
    key rndc-key;
}
# Fine zona aggiornamento automatico di Bind
# Fine area parametri globali
# Definizione rete
shared-network piccolalan {
    subnet 192.168.1.0 netmask 255.255.255.0 {
        option broadcast-address 192.168.1.255;
        option subnet-mask 255.255.255.0;
        option routers 192.168.1.1;
        option ip-forwarding off;
        option domain-name "small.lan";
        option domain-search "small.lan";
        option domain-name-servers 192.168.1.100;
        default-lease-time 604800;
        max-lease-time 1209600;
    }
    pool {
        deny unknown-clients;
        range 192.168.1.131 192.168.1.140;
    }
    pool {
        deny known-clients;
        range 192.168.1.151 192.168.1.160;
        default-lease-time 14400;
        max-lease-time 28800;
        option domain-name "none";
        option domain-search "none";
        option domain-name-servers 208.67.220.220, 212.216.112.112;
    }
}
# Definizione host noti
host PC7C {
    hardware ethernet XX:XX:XX:XX:XX:XX;
    fixed-address 192.168.1.111;
}
host PC7W {
    hardware ethernet YY:YY:YY:YY:YY:YY;
    fixed-address 192.168.1.111;
}
host PC8C {
    hardware ethernet ZZ:ZZ:ZZ:ZZ:ZZ:ZZ;
    ddns-hostname PC8C;
}
host PC8W {
    hardware ethernet WW:WW:WW:WW:WW:WW;
    ddns-hostname PC8W;
}
</pre>
Con questa configurazione i client che ricevono un indirizzo dinamico e che sono sconosciuti (ovvero per cui non esiste una direttiva ''host'') utilizzeranno direttamente server dns pubblici e non avranno accesso al server dns locale, non potendo così sapere nulla della LAN. Ovviamente tutto ciò non va interpretato come una procedura di sicurezza, ma solo come un artificio per non rendere immediatamente disponibili certe informazioni.<br>
Nella parte finale sono dichiarati quattro host, che in realtà corrispondono ai due portatili citati nella premessa iniziale; in sintesi una dichiarazione host per ogni interfaccia di rete. Sarebbe stato in teoria possibile dichiarare più di un mac address per host, ma pare che tale soluzione renda più lenta di un paio di minuti l'acquisizione/conferma dell'indirizzo IP assegnato da dhcp.<br>
Mentre a PC7 è stato assegnato un indirizzo prefissato (a prescindere dall'interfaccia usata), a PC8 non è stato assegnato alcun IP; questo significa che si vedrà assegnato un indirizzo IP dinamico dal range definito nella subnet, tuttavia per quanto già spiegato avrà comunque accesso al server DNS locale risultando quindi in grado di risolvere correttamente i nomi di ''small.lan''. L'opzione ''ddns-hostname'' fa si che il server DNS associ al suo IP non il nome host della macchina, ma quello qui definito, ovvero "PC8C" o "PC8W" a seconda dell'interfaccia usata per connettersi. Tale scelta è stata fatta a scopo puramente esemplicativo in quanto sarebbe stato molto più semplice associargli direttamente un IP statico ed inserire manulmente i relativi record nei file del server DNS (come fatto per PC7).<br>
In ultimo si fa presente che ogni computer per cui siano definite più dichiarazioni host deve accedere alla LAN con una sola interfaccia per volta, mai con due contemporaneamente (a meno che non siano associate a differenti subnet).


== Approfondimenti ==
== Approfondimenti ==
2 894

contributi