Domande? Problemi?

Iscriviti al Google group:

dnsmasq

Intro

Le caratteristiche che ci hanno portato a scegliere dnsmasq sono molteplici:

  • da solo puo’ sostituire server dns, dhcp e tftp.
  • server dns con supporto a dns-dinamico ed altre caratteristiche utili.
  • server dhcp con supporto ai tag.
  • buon sistema di debug
  • sviluppo attivo.
  • collaborazione con il team di gPXE per ottimizzarne l’interazione.

Installazione

Per installare dnsmasq

aptitude install dnsmasq

Configurare dnsmasq per l’ambiente ISI

file usati da dnsmasq

Oltre che dai suoi propri file di configurazione, dnsmasq prende diverse informazioni anche da altri file di sistema. Questo è un elenco completo di tutti i file utilizzati:

  • /etc/dnsmasq.conf
  • /usr/local/etc/dnsmasq.conf
  • /etc/resolv.conf
  • /etc/hosts
  • /etc/ethers
  • /var/lib/misc/dnsmasq.leases
  • /var/db/dnsmasq.leases
  • /var/run/dnsmasq.pid

Nota

Valorizzando opportunamente alcune direttive nel file di configurazione è possibile impedire l’uso di alcuni file (es. /etc/hosts). Si faccia riferimento alla manpage per ulteriori informazioni.

file di configurazione aggiuntivi per ISI

Per rendere la configurazione del servizio più intuitiva e semplificarne la manipolazione via interfaccia-web, abbiam deciso di spezzettarla in due ulteriori file :

  • /etc/isi/dnsmasq/boot
  • /etc/isi/dnsmasq/hosts.mac

E per ricordare a dnsmasq di leggere anche questi file abbiamo inserito in /etc/dnsmasq/dnsmasq.conf le direttive seguenti

# Configurazione aggiuntiva per isi.
conf-file=/etc/isi/dnsmasq/boot
conf-file=/etc/isi/dnsmasq/hosts.mac

Nota

Ovviamente per dnsmasq avere tutta la configurazione in un file unico o suddivisa in più file non fa alcuna differenza.

Quella a seguire è la configurazione completa del servizio dnsmasq, per un sistema dalle seguenti caratteristiche :

  • il server su cui gira dnsmasq sia srv-ltsp01(192.168.0.251)
  • srv-ltsp01 sia anch’esso un server LTSP
  • il carico LTSP venga distribuito su più server: srv-ltsp01(192.168.0.251), srv-ltsp02(192.168.0.252),srv-ltsp03(192.168.0.253), srv-ltsp04(192.168.0.254)
  • il gateway sia 192.168.0.251
  • il dns esterni primario e seconario siano quelli di opendns: 208.67.222.222, 208.67.220.220

/etc/dnsmasq.conf

# non inoltrare mai ai server dns esterni
# query senza nome dominio
domain-needed

# Tutti i reverse lookup per la subnet privata
# non presenti in /etc/hosts o nei lease dhcp
# ottengono "host not found"
# invece di essere inoltrati ai dns esterni
bogus-priv

# Filtra le ricorrenti richieste SOA, SRV e altre,
# provenienti da macchine windows
# serve in particolare a non attivare
# per sbaglio il link quando si
# hanno connessioni "on demand"
filterwin2k

# server dns esterni di riferimento
# inserire i server dns uno per riga
# usati in questo caso i server di opendns.org
server=208.67.222.222
server=208.67.220.220

# aggiunge sempre il nome dominio al nome host
expand-hosts

# nome del mio dominio
domain=isi.lan

# Se si intende passare ai client un dominio differente
# dhcp-option=option:domain-name,isi.lan

# range dei lease dhcp: indirizzo iniziale, indirizzo finale, netmask, durata del lease
dhcp-range=192.168.0.83,192.168.0.199,255.255.255.0,8h

# esempio di reservation per un client
# MAC address, indirizzo, nome host
#dhcp-host=00:00:0c:29:10:a6:45,192.168.10.201,vm-client-ltsp1
# le associazioni vengono definite esternamente, vedi inclusioni fine file.

#Opzioni del dhcp
# dnsmasq supporta la maggior parte delle
# opzioni dhcp e bootp specificate in
# http://www.faqs.org/rfcs/rfc2132.html
# la sintassi e':
# dhcp-option=[numero relativo all'opzione],parametro

# default gateway (3)
dhcp-option=3,192.168.0.251

# dns da passare ai client (6)
dhcp-option=6,192.168.0.251

# winserver da passare ai client (44)
dhcp-option=44,192.168.0.251

dhcp-authoritative
cache-size=1024

### LOG

# da usare per debug
#log-queries

# Log lots of extra information about DHCP transactions.
#log-dhcp

# Include a another lot of configuration options.
#conf-file=/etc/dnsmasq.more.conf
#conf-dir=/etc/dnsmasq.d

# Configurazione aggiuntiva per isi.
conf-file=/etc/isi/dnsmasq/boot
conf-file=/etc/isi/dnsmasq/hosts.mac

Nota

  • Alcune dhcp-option possono essere passate anche usando il nome dell’opzione al posto del valore numerico

    # default gateway (3)
    dhcp-option=option:router,192.168.0.251
  • Qualcuno suggerisce di inserire in /etc/dnsmasq.conf la sola riga

    conf-file=/etc/dnsmasq.intranet.conf

    Per poter così poi tenere la propria configurazione nel file esterno /etc/dnsmasq.intranet.conf per, si dice, agevolare un eventuale upgrade.

  • /etc/isi/dnsmasq/boot:

    # prendo tag PXE (anche se non li stiamo usando per filtrare...)
    dhcp-vendorclass=pxe,PXEClient
    #dhcp-vendorclass=gPXE,gpxe
    #    dhcp-option=vendor:PXEClient,1,0.0.0.0
    
    # server ltsp01
    dhcp-boot=net:ns1_thin,/ltsp/i386/pxelinux.0,srv-ltsp01,192.168.0.251
    dhcp-boot=net:ns1_fat,/ltsp/fati386/pxelinux.0,srv-ltsp01,192.168.0.251
    
    # di seguito si potranno aggiungere eventuali altre direttive per
    # supportare la distribuzione del carico su piu'ltsp server, filtrando per
    # tag
    
    # server ltsp2
    dhcp-boot=net:ns2_thin,/ltsp/i386/pxelinux.0,srv-ltsp02,192.168.0.252
    dhcp-boot=net:ns2_fat,/ltsp/fati386/pxelinux.0,srv-ltsp02,192.168.0.252
    
    # server ltsp3
    dhcp-boot=net:ns3_thin,/ltsp/i386/pxelinux.0,srv-ltsp03,192.168.0.253
    dhcp-boot=net:ns3_fat,/ltsp/fati386/pxelinux.0,srv-ltsp03,192.168.0.253
    
    # server ltsp4
    #dhcp-boot=net:ns4_thin,/ltsp/i386/pxelinux.0,srv-ltsp04,192.168.0.254
    #dhcp-boot=net:ns4_fat,/ltsp/fati386/pxelinux.0,srv-ltsp04,192.168.0.254
    
    # (default) other
    dhcp-boot=/ltsp/i386/pxelinux.0,srv-ltsp03,192.168.0.253

Nota

  • tutti gli hostname specificati (es. srv-ltsp01) devono essere risolvibili. Per renderli risolvibili basta associarli ad un ip nel file /etc/hosts
  • /etc/isi/dnsmasq/hosts.mac

    # ip-reservation per client
    #
    # MAC address, indirizzo, nome host, tag(utile per associare un client ltsp
    # ad un particolare server)
    #
    ###### Laboratorio 1
    dhcp-host=00:0c:29:96:b1:33,192.168.0.150,vm-ltsp1,net:ns1_thin
    dhcp-host=00:0c:29:c1:10:b0,192.168.0.151,vm-ltsp2,net:ns1_thin
    
    ###### Laboratorio 2
    dhcp-host=00:0c:29:96:b1:33,192.168.0.150,vm-ltsp1,net:ns2_fat
    dhcp-host=00:0c:29:c1:10:b0,192.168.0.151,vm-ltsp2,net:ns2_fat
    
    ###### Laboratorio 3
    dhcp-host=00:0c:29:96:b1:33,192.168.0.150,vm-ltsp1,net:ns3_thin
    dhcp-host=00:0c:29:c1:12:b0,192.168.0.151,vm-ltsp2,net:ns3_thin
    
    ###### Laboratorio 4
    dhcp-host=00:0c:29:96:b3:35,192.168.0.150,vm-ltsp1,net:ns4_fat
    dhcp-host=00:0c:29:c1:11:b2,192.168.0.151,vm-ltsp2,net:ns4_fat
    
    
    dhcp-host=00:0c:29:ac:45:29,192.168.0.155,vm-xp
    dhcp-host=00:0c:29:b2:3f:05,192.168.0.156,vm-win2k
    dhcp-host=00:0c:29:94:80:47,192.168.0.157,vm-win98
    dhcp-host=00:0c:29:ba:88:64,192.168.0.158,vm-hardy
  • /etc/resolv.conf di tutte i server

    search isi.lan
    nameserver 192.168.0.251

In breve

  • in file:/etc/dnsmasq.conf definiamo tutte le opzioni classiche di un server dhcp
  • in /etc/isi/dnsmasq/boot definiamo quale next-server passare via dhcp ai client con un determinato tag. Definiamo anche, come ultima opzione, un fallback per tutti i client che non matchano con nessun tag.
  • in /etc/isi/dnsmasq/hosts.mac associamo staticamente i client a determinati tag.