Dnsmasq
Dnsmasq è un semplice server DHCP/DNS che può essere utilizzato per reti locali fino a 1000 client. Le sue features chiave sono facilità di configurazione ed un basso impiego di risorse. Supporta anche IPv6.
Installazione
USE flags
L'installazione di dnsmasq è pienamente supportata dal gestore di pacchetti e dall'albero dei portage. Come prima cosa, selezionare le flag USE appropriate.
USE flags for net-dns/dnsmasq Small forwarding DNS server
+dhcp
|
Enable support for acting as a DHCP server. |
+dumpfile
|
Include code to dump packets to a libpcap-format file for debugging |
+inotify
|
Enable inotify filesystem monitoring support |
+loop
|
Include functionality to probe for and remove DNS forwarding loops |
auth-dns
|
Add support for acting as an authorative DNS server. |
conntrack
|
Add support for Linux conntrack connection marking. |
dbus
|
Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) |
dhcp-tools
|
Install extra command line tools for manually managing DHCP leases. |
dnssec
|
Enable support DNSSEC validation and caching. |
id
|
Whether report *.bind CHAOS info to clients, otherwise forward such requests upstream instead |
idn
|
Enable support for Internationalized Domain Names |
ipv6
|
Add support for IP version 6 |
libidn2
|
Enable support for Internationalized Domain Names, via net-dns/libidn2 rather than net-dns/libidn |
lua
|
Enable Lua scripting support |
nettlehash
|
Use hashing functions from dev-libs/nettle |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
script
|
Enable support for calling scripts when leases change. |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
static
|
!!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically |
tftp
|
Enables built in TFTP server for netbooting. |
Emerge
Poi, installare net-dns/dnsmasq ed aggiungerlo al runlevel default nel caso sia necessario avviarlo automaticamente.
root #
emerge --ask net-dns/dnsmasq
Configurazione
Ci sono molteplici risorse che possono essere modificare il comportamento di dnsmasq. Queste includono
- le opzioni a riga di comando passate attraverso /etc/conf.d/dnsmasq
- il file di configurazione principale (/etc/dnsmasq.conf)
Service
OpenRC
Add dnsmasq to the default runlevel if it needs to be started automatically:
root #
rc-update add dnsmasq default
To start the service now:
root #
rc-service dnsmasq start
Configurazione del servizio
In /etc/conf.d/dnsmasq possono essere configurate le opzioni a riga di comando passate al demone dnsmasq in fase di avvio.
DNSMASQ_OPTS="--user=dnsmasq --group=dnsmasq -H /srv/virt/gentoo/hosts --max-cache-ttl=10"
File di configurazione principale
La configurazione di dnsmasq viene effettuata principalmente attraverso il suo file di configurazione, /etc/dnsmasq.conf. Il file ha una sintassi chiave[=valore]
, quello fornito dal pacchetto è ben documentato ed è raccomandata la sua lettura. E'possibile referenziare risorse aggiuntive (come un hosts file DHCP) nel file o attraverso le opzioni a riga di comando.
Di seguito un esempio di configurazione:
# Listen only to this interface
# - Ascolta solo su quest'interfaccia
interface=eth1
# Assign names based on mac address
# - Assegna nomi basati sull'indirizzo MAC
dhcp-host=00:1e:68:c2:ff:ee,endor,192.168.0.54,24h
# Any other DHCP request gets an ip from this range
# - Ogni altra richiesta DHCP riceve un IP in questo intervallo
dhcp-range=eth1,192.168.0.100,192.168.0.120,12h
# Enable the TFTP server and set the root directory for files available via TFTP.
# - Abilita il server TFTP ed imposta la directory root per i files disponibili via TFTP
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=/pxelinux.0
Dopo ogni modifica al fiole di configurazione, il servizio deve essere riavviato. Il reloading è supportato, ma per altre risorse.
root #
/etc/init.d/dnsmasq restart
Hosts file
Dnsmasq utilizza il file /etc/hosts come una delle sorgenti per fornire il servizio DNS, a meno che non sia avviato con l'opzione -h
(--no-hosts
)
Se il file /etc/hosts viene modificato, il servizio dnsmasq deve ricevere un SIGHUP per ricaricare le impostazioni. Questo è fattibile anche utilizzando lo script di init con il comando reload:
root #
/etc/init.d/dnsmasq reload
Questo comportamento può essere disabilitato anche introducendo il parametro no-hosts
nel file di configurazione.
File hosts aggiuntivo
E'possibile far riferimento ad un file hosts (aggiuntivo) come sorgente per le query DNS. Per fare ciò, aggiungere l'opzione -H /path/al/filehosts
(--addn-hosts=/path/al/filehosts
) ai parametri a riga di comando. Indicando una directory, tutti i file al suo interno saranno trattati come file hosts aggiuntivi.
Come per il file hosts standard, un segnale SIGHUP ricarica il file.
Questo comportamento può essere impostato con il parametro addn-hosts
nel file di configurazione
Server DNS upstream
Per default, dnsmasq utilizza i server indicati in /etc/resolv.conf come server DNS upstream.
Un file differente può essere indicato con l'opzione -r
(--resolv-file
)
Questo comportamento può essere impostato con il parametro resolv-file
nel file di configurazione
Features
Dnsmasq supporta i servizi DNS, TFTP, PXE, router advertisements e DHCP services. Per questo, è uno strumento di gestione versatile per reti di piccole e medie dimensioni.
Servizi DNS
In modo da fornire (solamente) servizi DNS, prima identificate il "nameserver upstream" da utilizzare. Se questo è lo stesso server configurato in /etc/resolv.conf non è necessario definire altro. Altrimenti, puntare dnsmasq al file resolv.conf appropriato, utilizzando l'opzione -r
(--resolv-file
). La sintassi di quest'ultimo è la stessa a quella di /etc/resolv.conf, anche se dnsmasq considera soltanto le definizioni dei "nameserver".
Per esempio:
root #
echo "nameserver 208.67.220.220" >> /etc/dnsmasq.conf.resolv
Poi puntare dnsmasq a questo file attraverso il file di configurazione:
resolv-file=/etc/dnsmasq.conf.resolv
Per verificare che il servizio sia attivo (dopo un restart, dato che il file di configurazione è stato modificato), usate il comando dig
(fornito con net-dns/bind-tools), richiedendo al server DNS di risolvere un indirizzo locale o remoto:
user $
dig @localhost +short www.gentoo.org
www-bytemark-v4v6.gentoo.org. 89.16.167.134
DNSSEC
Dnsmasq può validare dati DNSSEC durante il loro passaggio. Questo può essere fatto aggiungendo le seguenti righe al file di configurazione:
# DNSSEC setup
dnssec
trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
dnssec-check-unsigned
- Replies which are not DNSSEC signed may be legitimate, because the domain
- is unsigned, or may be forgeries. Setting this option tells dnsmasq to
- check that an unsigned reply is OK, by finding a secure proof that a DS
- record somewhere between the root and the domain does not exist.
- The cost of setting this is that even queries in unsigned domains will need
- one or more extra DNS queries to verify.
dnssec-check-unsigned }}
La "trusted anchor" può essere trovata sul sito dello IANA.
Servizio DHCP
Per abilitare il servizio DHCP di dnsmasq, è necessario utilizare la configurazione dhcp-range
.
Per esempio, per abilitare la configurazione di indirizzi IPv6 attraverso RA ed IPv4, entrambi con tempo di lease infinito:
dhcp-range=2001:db8:81:e2::,ra-only,infinite
dhcp-range=192.168.100.100,192.168.100.149,infinite
E'possibile utilizzare definizioni statiche per host conosciuti, sia nel il file di configurazione principale che attraverso un file separato. Se viene utilizzato un file separato, aggiungete l'opzione --dhcp-hostsfile
alla riga di comando di dnsmasq. Il vantaggio di quest'ultimo approccio è che basta mandare un segnale SIGHUP al processo per rileggere le entries, mentre ogni modifica del file di configurazione richiede un completo restart del servizio.
Per maggiori informazioni riguardo la sintassi del parametro dhcp-host
fate riferimento alla pagina man o al file di configurazione dato che la sua sintassi è molto ampia.
Utilizzo
Questa sezione illustra diversi scenari (task operativi e di manutenzione) riguardanti il servizio dnsmasq.
Reset delle allocazioni (leases)
I client che effettuano un update dell'interfaccia, ottenendo una modifica del loro indirizzo MAC, potrebbero non ottenere l'indirizzo IP voluto in modo immediato. Questo perchè dnsmasq ha fornito al vecchio MAC address lo stesso indirizzo IP, quindi aspetterà fino alla scadenza della lease prima di riassegnarlo
Il servizio dnsmasq memorizza le sue leases in /var/lib/misc/dnsmasq.leases. Nel caso sia necessaria una rimozione rapida, è sufficiente spegnere il servizio dnsmasq, rimuovere le lease dal file dnsmasq.leases e riavviare nuovamente il servizio
root #
/etc/init.d/dnsmasq stop
root #
nano -w /var/lib/misc/dnsmasq.leases
root #
/etc/init.d/dnsmasq start
Reload delle configurazioni secondarie
Oltre al file dnsmasq.conf, il servizio dnsmasq può utilizzare definizioni esterne per seguenti servizi:
- Entry di configurazione host DHCP (utilizzando l'opzione
--dhcp-hostsfile
) - Opzioni DHCP (utilizzando l'opzione
--dhcp-optsfile
)
Quando questi file sono modificati, è possibile ricaricarli mandando un segnale SIGHUP al processo dnsmasq
I file resolv.conf sono sondati da dnsmasq per default; le modifiche a questi file sono automaticamente assimilate, se non viene utilizzata l'opzione
-n
(--no-poll
) o non viene inserito il parametro no-poll
nella configurazione.