4156
Comment:
|
5026
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
Questa e` una configurazione "media" commentata per Dnsmasq di Sarge, con funzione di dns proxy e di dhcp server. | Questa e` una configurazione "media" commentata per Dnsmasq di Debian 8, con funzione di dns proxy e di dhcp server. |
Line 12: | Line 12: |
# 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 |
|
Line 16: | Line 25: |
# imposto un TTL per i record locali serviti dal dns ai client (vengono da /etc/hosts) local-ttl=5 |
|
Line 23: | Line 35: |
Line 25: | Line 38: |
local=/teknia.local/ | local=/dominio.locale/ |
Line 44: | Line 57: |
# il dominio per gli host assegnati dal DHCP domain=teknia.local |
# il dominio per gli host assegnati dal DHCP domain=dominio.locale |
Line 51: | Line 64: |
# Opzioni DHCP | # Opzioni DHCP |
Line 72: | Line 85: |
=== Patch per eseguire uno script in occasione degli eventi del DHCP === | === DHCP su piu` interfacce === |
Line 74: | Line 87: |
Questa patch mi e` stata gentilmente fornita da Luca, un utente di Dnsmasq. Puo` essere applicata a dnsmasq 2.22 (anche al sorgente con le patch Debian) ma va rivista parecchio per applicarla alla versione attuale (2.30). | 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. |
Line 76: | Line 89: |
* Dnsmasq patchato gia` compilato come pacchetto Debian per Sarge: attachment:dnsmasq_2.22-2_i386.deb * La patch di Luca: attachment:lease-events.patch |
|
Line 79: | Line 90: |
Una volta applicata la patch, e` disponibile una nuova opzione nel file di configurazione {{{dnsmasq.conf}}}, che e` | |
Line 81: | Line 91: |
dhcp-lease-hook=/usr/local/bin/dhcp-lease.sh | 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 |
Line 83: | Line 97: |
La quale chiaramente definisce il nome del file da eseguire ogni qual volta lo stato di un lease cambia. | |
Line 85: | Line 98: |
Prima di eseguire il file indicato, dnsmasq setta una serie di variabili di ambiente, il cui elenco e significato puo` essere estratto dal seguente esempio di script "dhcp-lease.sh", che si limita a loggare tutti gli eventi ed e` utile per debug: | === 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. |
Line 87: | Line 104: |
#!/bin/bash | # per i client del CED, che sono definiti in dhcp-host dopo, voglio un gateway diverso. dhcp-option=ced,3,10.3.0.10 |
Line 89: | Line 107: |
# variabili: # PATH Il path # EVENT Il tipo di evento. ALLOCATE (prima connessione), REFRESH, PRUNE (release), LOAD (start o restart del demone) # CLID # FQDN # HOSTNAME L'hostname cosi` come passato dal client o definito nella conf # HWADDR MAC address # IPADDR Indirizzo ip # EXPIRATION Data unix di scadenza del lease # OLD_CLID Le variabili "old_*" contengono il valore precedente nel caso di refresh # OLD_FQDN Altrimenti sono vuote. # OLD_HOSTNAME # OLD_HWADDR # OLD_EXPIRATION |
# host del CED: prendono delle opzioni differenti per gateway e dns dhcp-host=00:19:99:35:8b:b8,net:ced }}} |
Line 105: | Line 111: |
echo "Timestamp" `/bin/date` >> /tmp/lease.log echo "Path " $PATH >> /tmp/lease.log echo "Event" $EVENT >>/tmp/lease.log echo "clid" $CLID >>/tmp/lease.log echo "fqdn" $FQDN >>/tmp/lease.log echo "hostname" $HOSTNAME >>/tmp/lease.log echo "hwaddr" $HWADDR >>/tmp/lease.log echo "ipaddr" $IPADDR >>/tmp/lease.log echo "expiration" $EXPIRATION >>/tmp/lease.log echo "old_clid" $OLD_CLID >>/tmp/lease.log echo "old_fqdn" $OLD_FQDN >>/tmp/lease.log echo "old_hostname" $OLD_HOSTNAME >>/tmp/lease.log echo "old hwaddr" $OLD_HWADDR >>/tmp/lease.log echo "old_expiration" $OLD_EXPIRATION >>/tmp/lease.log echo "---------------------" >>/tmp/lease.log |
=== 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: * File /etc/bind/named.conf.options {{{ // configurazione per interagire con dnsmasq // ascolto in locale su 127.0.0.1 porta 5353 (e in nessun altro posto) listen-on port 5353 { 127.0.0.1; }; // consento la ricorsione per dnsmasq che mi interroga allow-recursion { 127.0.0.1/8; }; |
Line 121: | Line 128: |
* File /etc/default/bind9 (per disattivare ipv6 in toto se non lo si usa) {{{ OPTIONS="-u bind -4" }}} * File /etc/dnsmasq.conf {{{ # non leggere il resolv.conf, usa solo il server indicato: no-resolv server=127.0.0.1#5353 }}} === 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. * Unbound va configurato per rispondere su una porta non standard, modificando unbound.conf come segue: {{{ interface: 127.0.0.1@5353 }}} * Dnsmasq si configura come sopra. * Su openwrt in particolare si configura con la sua sintassi, modificando il file {{{/etc/config/dhcp}}} con questi parametri: {{{ list server '127.0.0.1#5353' option noresolv '1' }}} |
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:
- File /etc/bind/named.conf.options
// configurazione per interagire con dnsmasq // ascolto in locale su 127.0.0.1 porta 5353 (e in nessun altro posto) listen-on port 5353 { 127.0.0.1; }; // consento la ricorsione per dnsmasq che mi interroga allow-recursion { 127.0.0.1/8; };
- File /etc/default/bind9 (per disattivare ipv6 in toto se non lo si usa)
OPTIONS="-u bind -4"
- File /etc/dnsmasq.conf
# non leggere il resolv.conf, usa solo il server indicato: no-resolv server=127.0.0.1#5353
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.
- Unbound va configurato per rispondere su una porta non standard, modificando unbound.conf come segue:
interface: 127.0.0.1@5353
- Dnsmasq si configura come sopra.
Su openwrt in particolare si configura con la sua sintassi, modificando il file /etc/config/dhcp con questi parametri:
list server '127.0.0.1#5353' option noresolv '1'