DnsMasq

Questa e` una configurazione "media" commentata per Dnsmasq di Debian 8, con funzione di dns proxy e di dhcp server.

Se si usa il ppp per connettersi, e` possibile indicare come resolv-file il file /etc/ppp/resolv.conf che contiene i DNS passati dal provider al momento della connessione.

Il file e` /etc/dnsmasq.conf

# Configuration file for dnsmasq.


# Non servire questa interfaccia, ma tutte le altre si.
# Se non si imposta questa opzione in Debian 8 dnsmasq non risponde
# alle query non locali alla LAN (vedi il paramentro local-service
# che si trova dentro a /etc/init.d/dnsmasq.
except-interface=eth1



# Never forward plain names (with a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv

# imposto un TTL per i record locali serviti dal dns ai client (vengono da /etc/hosts)
local-ttl=5

# block win2k dns requests
filterwin2k

# resolv.conf alternativo (creare il file!)
resolv-file=/etc/resolv.conf.dnsmasq


# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/dominio.locale/

# If you want dnsmasq to listen for requests only on specified interfaces
# (and the loopback) give the name of the interface (eg eth0) here.
# Repeat the line for more than one interface.
#interface=

# Aggiungi un dominio alle entry del file hosts che non hanno dominio (vedi "domain")
expand-hosts

# niente cache per i risultati negativi
no-negcache

# log
log-queries


# DHCP options

# il dominio per gli host assegnati dal DHCP
domain=dominio.locale
# range delle macchine servite
dhcp-range=192.168.3.10,192.168.3.100,240h
# il server e` autoritativo
dhcp-authoritative

# Opzioni DHCP
# 1- subnet mask
# 3- default gateway
# 6- dns server
# 28- broadcast address
# 44- wins server
# 46- netbios node type

dhcp-option=44,192.168.3.1


# host statici, uno per riga (mac,ip)
#dhcp-host=11:22:33:44:55:66,192.168.0.60

# If this line is uncommented, dnsmasq will read /etc/ethers and act
# on the ethernet-address/IP pairs found there just as if they had
# been given as --dhcp-host options. Useful if you keep
# MAC-address/host mappings there for other purposes.
#read-ethers

DHCP su piu` interfacce

Se si vuole servire il DHCP su piu interfacce, e possibile farlo, ed e` anche possibile dividere le configurazioni in modo che gli host su una interfaccia prendano impostazioni (dns, gateway, eccetera) diverse rispetto a quelli sull'altra interfaccia.

dhcp-range=osimo,172.16.0.100,172.16.0.200,255.255.255.0,240h
dhcp-range=kurgan,10.1.45.100,10.1.45.200,255.255.255.0,240h

dhcp-option=osimo,44,10.0.0.251,172.16.0.1
dhcp-option=kurgan,44,10.1.42.254

Host sulla rete con gateway o dns o altre opzioni diverse

Se occorre per esempio dirigere alcuni host sulla rete a usare un gateway o un dns specifico, e possibile farlo usando la direttiva "dhcp-host" e la direttiva dhcp-option con una indicazione di nome di una rete. In questo esempio la macchina indicata nel dhcp-host prende un ip dinamico dal pool generale, pero prende come gateway un gateway speciale che non e` quello che usano tutti.

# per i client del CED, che sono definiti in dhcp-host dopo, voglio un gateway diverso.
dhcp-option=ced,3,10.3.0.10

# host del CED: prendono delle opzioni differenti per gateway e dns
dhcp-host=00:19:99:35:8b:b8,net:ced

Integrazione Bind - Dnsmasq

Puo essere comodo installare bind per avere un resolver ricorsivo e anche dnsmasq per avere le sue funzioni accessorie (dhcp, ecc) sulla stessa macchina. Per farlo, e sufficiente dire a Bind di ascoltare su una porta diversa dal default, e a Dnsmasq di interrogare Bind su quella porta.

Su Debian, la configurazione e` la seguente:

Integrazione Unbound - Dnsmasq

Come sopra, si puo usare unbound come resolver per Dnsmasq. Utile su openwrt per esempio dove lo spazio e poco per installare bind.

Integrazione Openvpn - Dnsmasq

Lo scopo di questa configurazione e permettere una integrazione fra openvpn e dnsmasq, in modo che i nomi dei client che si connettono via Openvpn siano risolvibili a mezzo di Dnsmasq. Questa configurazione serve quando si usa openvpn in modalita tunnel (device tun) e non in modalita bridge (device tap) perche nel secondo caso il client remoto prende comunque il suo IP dal DHCP server della rete locale, e quindi dnsmasq viene a conoscenza dell' ip ad esso assegnato banalmente tramite il suo stesso server DHCP. Nel primo caso, invece, Dnsmasq non ha idea di quali IP siano assegnati da openvpn ai client. Questa configurazione mira a risolvere questo problema.

Nota bene: gli hostname assegnati sono uguali ai common name dei certificati openvpn, quindi questi vanno creati in modo da essere tipicamente uguali agli hostname.

Per esempio, supponiamo di avere un portatile che si chiama "ghisa" come hostname e quindi viene visto, quando e in rete LAN, come "ghisa.kurgan.locale" (dove il dominio "kurgan.locale" viene aggiunto da Dnsmasq ai nomi che non hanno dominio). Vogliamo che questo portatile si chiami allo stesso modo anche quando e in VPN, in modo che quando noi risolviamo il nome "ghisa.kurgan.locale" vedremo l' IP della LAN se e in LAN,e quello della VPN se e in VPN. Per fare questo, dovremo creare il certificato per questo portatile con il common name "ghisa".

LinuxDebian/DnsMasq (last edited 2017-09-07 18:12:44 by Kurgan)