ISC DHCP: differenze tra le versioni
Wtf (discussione | contributi) m (→Configurazione) |
Wtf (discussione | contributi) |
||
Riga 59: | Riga 59: | ||
A questo punto, far partire (o ripartire) il demone isc-dhcp-server per attivare la configurazione: | A questo punto, far partire (o ripartire) il demone isc-dhcp-server per attivare la configurazione: | ||
<pre># systemctl start isc-dhcp-server</pre> | <pre># systemctl start isc-dhcp-server</pre> | ||
=== Aggiornamento dinamico DNS === | |||
Giunti fin qui, rimangono da configurare gli aggiornamenti dinamici del server DNS. In questo caso, come già esposto, sarà il server DHCP ad aggiornare dinamicamente il server DNS, al quale dovremo dire che sono consentiti gli aggiornamenti dinamici solamente da parte degli host coinvolti nel processo. In questo caso, ipotizzando che DNS e DHCP siano sulla stessa macchina, abiliteremo solamente localhost all'aggiornamento dinamico del server DNS, e come ulteriore misura di sicurezza, specificheremo che l'aggiornamento delle zone coinvolte avverrà solamente utilizzando una chiave segreta che viene creata automaticamente all'installazione di Bind ed il cui nome file è /etc/bind/rndc.key. Il primo passaggio consiste nel modificare il file <code>/etc/bind/named.conf.local</code> per indicare che il server DNS accetta aggiornamenti dinamici solamente da localhost utilizzando la chiave segreta: | |||
<pre> | |||
include "/etc/bind/rndc.key"; | |||
controls { | |||
inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; }; | |||
}; | |||
</pre> | |||
Un'ulteriore modifica da fare al file <code>/etc/bind/named.conf.local</code> è relativa alle zone create in precedenza, poiché anche in esse è necessario indicare che è possibile l'aggiornamento solamente tramite l'utilizzo della chiave segreta: | |||
<pre> | |||
zone "test.lan" { | |||
type master; | |||
file "/etc/bind/db.test"; | |||
allow-update { key rndc-key; }; | |||
}; | |||
zone "1.168.192.in-addr.arpa" { | |||
type master; | |||
file "/etc/bind/db.192.168.1"; | |||
allow-update { key rndc-key; }; | |||
}; | |||
</pre> | |||
Il file completo, dopo l'aggiunta delle ACL per la gestione del traffico interno e esterno, dovrebbe avere questo contenuto: | |||
<pre> | |||
acl internals { | |||
127.0.0.0/8; | |||
192.168.1.0/24; | |||
}; | |||
include "/etc/bind/rndc.key"; | |||
controls { | |||
inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; }; | |||
}; | |||
view "internal" { | |||
match-clients { internals; }; | |||
recursion yes; | |||
zone "test.lan" { | |||
type master; | |||
file "/etc/bind/db.test"; | |||
journal "/var/cache/bind/db.test.jnl"; | |||
allow-update { key rndc-key; }; | |||
}; | |||
zone "1.168.192.in-addr.arpa" { | |||
type master; | |||
file "/etc/bind/db.192.168.1"; | |||
journal "/var/cache/bind/db.192.168.1.jnl"; | |||
allow-update { key rndc-key; }; | |||
}; | |||
}; | |||
</pre> | |||
Poichè nel file <code>/etc/bind/named.conf.local</code> abbiamo utilizzato la direttiva <code>view</code>, è necessario che tutte le zone di Bind siano configurate all'interno di una propria <code>view</code>. Perciò dobbiamo modificare anche il file <code>/etc/bind/named.conf.default-zones</code> aggiungendo all'inizio del file le righe: | |||
<pre> | |||
view "external" { | |||
match-clients { any; }; | |||
recursion yes; | |||
</pre> | |||
e alla fine del file la corrispondente chiusura di istruzione: | |||
<pre> | |||
}; | |||
</pre> | |||
Fatto questo, far ripartire il demone bind9.<br/> | |||
Ora, rimane da configurare il server DHCP, il quale sarà incaricato di effettuare gli aggiornamenti sul server DNS, e che quindi dovrà obbligatoriamente "autenticarsi" su Bind utilizzando la chiave segreta <code>/etc/bind/rndc.key</code>. Ciò si traduce nell'aggiunta delle seguenti opzioni nel file di configurazione /etc/dhcp3/dhcpd.conf (/etc/dhcp/dhcpd.conf da Squeeze): | |||
<pre> | |||
ddns-updates on; | |||
update-static-leases on; # i client con ip statico sono compresi negli aggiornamenti | |||
ddns-update-style interim; | |||
ddns-domainname "test.lan."; | |||
ddns-rev-domainname "in-addr.arpa."; | |||
include "/etc/bind/rndc.key"; | |||
zone test.lan. { | |||
primary 192.168.1.1; | |||
key rndc-key; | |||
} | |||
zone 1.168.192.in-addr.arpa. { | |||
primary 192.168.1.1; | |||
key rndc-key; | |||
} | |||
</pre> | |||
L'ultimo passaggio consiste nel rendere la directory /etc/bind scrivibile anche per l'utente bind, in modo tale che Bind possa creare i file di zona con estensione .jnl che contengono i record DNS generati dinamicamente tramite l'aggiornamento di Bind da parte del server DHCP: | |||
<pre># chmod 775 /etc/bind</pre> | |||
Verificare che anche i file <code>db.test</code> e <code>db.192.168.1</code> siano scrivibili da bind (potrebbe succedere che uno o entrambi i file abbiano come proprietario <code>root:bind</code> e che i permessi di gruppo siano di sola lettura).<br /> | |||
Ora, un riavvio del demone dhcp3-server (isc-dhcp-server da Squeeze) completerà l'opera, ed avremo una rete con i PC che prendono la configurazione IP da un server DHCP, il quale aggiorna dinamicamente il server DNS in modo tale che tutte le operazioni di risoluzione dei nomi host avvengano correttamente sull'intera rete locale. Il vantaggio di questa soluzione è l'elevata automatizzazione dei processi descritti, che comporta un intervento dell'amministratore di sistema che si limita alla configurazione iniziale ed alla normale manutenzione del server, senza dover svolgere noiosi, inutili e ripetitivi aggiornamenti manuali. | |||
== Approfondimenti == | == Approfondimenti == |
Versione delle 19:26, 10 mag 2019
Versioni Compatibili Tutte le versioni supportate di Debian |
Gateway-Router |
Sommario |
Info Questa guida è essenzialmente la parte dedicata a isc-dhcp-server della vecchia guida "Un server DNS e DHCP su Debian", ma privata delle istruzioni relative a Lenny e dei riferimenti a Squeeze |
Introduzione
Definizione di DHCP tratta da wikipedia:
DHCP
- Il Dynamic Host Configuration Protocol (DHCP) (protocollo di configurazione IP dinamica) è un Protocollo Applicativo (Ausiliario) che permette ai dispositivi o terminali di una certa rete locale di ricevere automaticamente ad ogni richiesta di accesso, da una rete IP (quale una LAN), la configurazione IP necessaria per stabilire una connessione[...]
In poche parole un server DHCP è quell'applicativo che si occupa di assegnare in automatico gli indirizzi IP a tutti i dispositivi di una rete. Per quanto riguarda questa guida le reti di interesse sono quelle di tipo locale (LAN).
Installazione
Da terminale digitare:
# apt-get install isc-dhcp-server
Configurazione
Fare una copia di salvataggio del file di configurazione di esempio, crearne uno nuovo vuoto ed editarlo:
# mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.old # nano /etc/dhcp/dhcpd.conf
Ora, aggiungere un ambito DHCP con le opzioni del caso che ci permetta di distribuire i parametri della configurazione TCP/IP ai client della LAN, operazioni che si traducono nel seguente contenuto del file dhcpd.conf:
authoritative; server-identifier 192.168.1.1; ignore client-updates; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.150; range 192.168.1.200 192.168.1.250; option subnet-mask 255.255.255.0; default-lease-time 604800; # cioè una settimana max-lease-time 2592000; # cioè 30 giorni option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1; option domain-name "test.lan"; option netbios-name-servers 192.168.1.1; option netbios-node-type 8; } # Assegnare un IP fisso ad un particolare client host pc_fisso { hardware ethernet 00:0D:87:B3:AE:A6; fixed-address 192.168.1.150; }
- Authoritative, obbligatorio se si tratta dell'unico server dhcp (a tal fine contano anche quelli di router e simili).
- server-identifier, utile se la propria interfaccia di rete possiede più di un indirizzo IP.
- ignore client-updates, nega eventuali richieste da parte dei client di aggiornare autonomamente i record DNS.
- subnet... netmask, dichiarazione obbligatoria per ogni subnet che il server dhcp andrà a servire.
- range, parametro obbligatorio se si intende assegnare degli indirizzi dinamici; è possibile specificare più di un intervallo come in quest'esempio, oppure anche nessuno se non si prevede di assegnare indirizzi dinamici. È buona pratica evitare di dichiarare intervalli in cui figurino IP statici e/o staticamente assegnati dal server DHCP.
- default-lease-time, la durata predefinita dell'assegnazione di un indirizzo IP ai client, ovvero quanti secondi devono passare prima che il server rinegozi nuovamente l'IP col client. Si noti che i client possono richiedere durate di assegnazione differente.
- max-lease-time, la massima durata dell'assegnazione di un indirizzo IP che il server può concedere; in poche parole un client può chiedere che un certo indirizzo IP gli sia assegnato per un numero di secondi compreso tra 1 e max-lease-time.
A questo punto, far partire (o ripartire) il demone isc-dhcp-server per attivare la configurazione:
# systemctl start isc-dhcp-server
Aggiornamento dinamico DNS
Giunti fin qui, rimangono da configurare gli aggiornamenti dinamici del server DNS. In questo caso, come già esposto, sarà il server DHCP ad aggiornare dinamicamente il server DNS, al quale dovremo dire che sono consentiti gli aggiornamenti dinamici solamente da parte degli host coinvolti nel processo. In questo caso, ipotizzando che DNS e DHCP siano sulla stessa macchina, abiliteremo solamente localhost all'aggiornamento dinamico del server DNS, e come ulteriore misura di sicurezza, specificheremo che l'aggiornamento delle zone coinvolte avverrà solamente utilizzando una chiave segreta che viene creata automaticamente all'installazione di Bind ed il cui nome file è /etc/bind/rndc.key. Il primo passaggio consiste nel modificare il file /etc/bind/named.conf.local
per indicare che il server DNS accetta aggiornamenti dinamici solamente da localhost utilizzando la chiave segreta:
include "/etc/bind/rndc.key"; controls { inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; }; };
Un'ulteriore modifica da fare al file /etc/bind/named.conf.local
è relativa alle zone create in precedenza, poiché anche in esse è necessario indicare che è possibile l'aggiornamento solamente tramite l'utilizzo della chiave segreta:
zone "test.lan" { type master; file "/etc/bind/db.test"; allow-update { key rndc-key; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.1"; allow-update { key rndc-key; }; };
Il file completo, dopo l'aggiunta delle ACL per la gestione del traffico interno e esterno, dovrebbe avere questo contenuto:
acl internals { 127.0.0.0/8; 192.168.1.0/24; }; include "/etc/bind/rndc.key"; controls { inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; }; }; view "internal" { match-clients { internals; }; recursion yes; zone "test.lan" { type master; file "/etc/bind/db.test"; journal "/var/cache/bind/db.test.jnl"; allow-update { key rndc-key; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.1"; journal "/var/cache/bind/db.192.168.1.jnl"; allow-update { key rndc-key; }; }; };
Poichè nel file /etc/bind/named.conf.local
abbiamo utilizzato la direttiva view
, è necessario che tutte le zone di Bind siano configurate all'interno di una propria view
. Perciò dobbiamo modificare anche il file /etc/bind/named.conf.default-zones
aggiungendo all'inizio del file le righe:
view "external" { match-clients { any; }; recursion yes;
e alla fine del file la corrispondente chiusura di istruzione:
};
Fatto questo, far ripartire il demone bind9.
Ora, rimane da configurare il server DHCP, il quale sarà incaricato di effettuare gli aggiornamenti sul server DNS, e che quindi dovrà obbligatoriamente "autenticarsi" su Bind utilizzando la chiave segreta /etc/bind/rndc.key
. Ciò si traduce nell'aggiunta delle seguenti opzioni nel file di configurazione /etc/dhcp3/dhcpd.conf (/etc/dhcp/dhcpd.conf da Squeeze):
ddns-updates on; update-static-leases on; # i client con ip statico sono compresi negli aggiornamenti ddns-update-style interim; ddns-domainname "test.lan."; ddns-rev-domainname "in-addr.arpa."; include "/etc/bind/rndc.key"; zone test.lan. { primary 192.168.1.1; key rndc-key; } zone 1.168.192.in-addr.arpa. { primary 192.168.1.1; key rndc-key; }
L'ultimo passaggio consiste nel rendere la directory /etc/bind scrivibile anche per l'utente bind, in modo tale che Bind possa creare i file di zona con estensione .jnl che contengono i record DNS generati dinamicamente tramite l'aggiornamento di Bind da parte del server DHCP:
# chmod 775 /etc/bind
Verificare che anche i file db.test
e db.192.168.1
siano scrivibili da bind (potrebbe succedere che uno o entrambi i file abbiano come proprietario root:bind
e che i permessi di gruppo siano di sola lettura).
Ora, un riavvio del demone dhcp3-server (isc-dhcp-server da Squeeze) completerà l'opera, ed avremo una rete con i PC che prendono la configurazione IP da un server DHCP, il quale aggiorna dinamicamente il server DNS in modo tale che tutte le operazioni di risoluzione dei nomi host avvengano correttamente sull'intera rete locale. Il vantaggio di questa soluzione è l'elevata automatizzazione dei processi descritti, che comporta un intervento dell'amministratore di sistema che si limita alla configurazione iniziale ed alla normale manutenzione del server, senza dover svolgere noiosi, inutili e ripetitivi aggiornamenti manuali.
Approfondimenti
Manpages
man dhcpd
man dhcpd.conf
Sitografia
Guida scritta da: Wtf 22:14, 8 mag 2019 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |