Dnsmasq

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Dnsmasq and the translation is 66% complete.
Outdated translations are marked like this.
Resources
Resources

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.

FILE /etc/conf.d/dnsmasqEsempio di configurazione del servizio dnsmasq
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:

FILE /etc/dnsmasq.conf
# 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:

FILE /etc/dnsmasq.confConfigurare un file resolv custom
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:

FILE /etc/dnsmasq.confAbilitazione DNSSEC
# DNSSEC setup
dnssec
trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
dnssec-check-unsigned
  1. Replies which are not DNSSEC signed may be legitimate, because the domain
  2. is unsigned, or may be forgeries. Setting this option tells dnsmasq to
  3. check that an unsigned reply is OK, by finding a secure proof that a DS
  4. record somewhere between the root and the domain does not exist.
  5. The cost of setting this is that even queries in unsigned domains will need
  6. 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:

FILE /etc/dnsmasq.confAbilitazione leases IPv6 dd IPv4
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

Nota
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.