# dnsmasq (Italiano)

dnsmasq fornisce un servizio di cache DNS e di server DHCP. Come Domain Name Server (DNS), può conservare i risultati delle richieste di risoluzione per migliorare la velocità di connessione ai siti già visitati. Come server DHCP. dnsmasq può essere usato per fornire indirizzi IP interni ed instradare i computer in una LAN. Uno o entrambi questi servizi possono essere utilizzati. dnsmasq è considerato leggero e semplice da configurare; è progettato sia per l'uso su di un personal computer, che per una rete con meno di 50 computer. Fornisce anche il servizio di server PXE.

## Installazione

Installare il pacchetto dnsmasq dai repository ufficiali.

## Configurazione della cache DNS

Per configurare dnsmasq come demone per la cache delle richieste DNS su un singolo computer modificare il file `/etc/dnsmasq.conf` aggiungendo o de commentando l'indirizzo di localhost in ascolto:

    listen-address=127.0.0.1

Per utilizzare questo computer come server DNS specificare l'indirizzo IP fisso sulla rete:

    listen-address=<192.168.1.1> #IP di Esempio

### File degli indirizzi DNS

Dopo aver configurato dnsmasq il client DHCP dovrà dare precedenza all'indirizzo di localhost rispetto agli indirizzi contenuti nel file di configurazione dei DNS (`/etc/resolv.conf`). Facendo questo, tutte le richieste verranno inviate a dnsmasq prima di provare a risolverle mediante DNS esterni. Dopo che è stato configurato il client DHCP sarà necessario riavviare il servizio di rete affinché le modifiche abbiano effetto.

### dhcpcd

dhcpcd ha la caratteristica di preporre o posporre i nameserver al file `/etc/resolv.conf` creando o modificando rispettivamente i file `/etc/resolv.conf.head` e `/etc/resolv.conf.tail`:

    echo "nameserver 127.0.0.1" > /etc/resolv.conf.head

### dhclient

Per dhclient, de commentare nel file (o crearlo) `/etc/dhclient.conf`:

    prepend domain-name-servers 127.0.0.1;

#### NetworkManager

NetworkManager ha la capacità di avviare `dnsmasq` dal suo file di configurazione. Aggiungere l'opzione `dns=dnsmasq` al file `NetworkManager.conf` (nella sezione `[main]` del file) e togliere dnsmasq dall'avvio automatico:

    /etc/NetworkManager/NetworkManager.conf

    [main]
    plugins=keyfile
    dns=dnsmasq

Creare la cartella di configurazione di dnsmasq per NetworkManager se non esiste:

    mkdir /etc/NetworkManager/dnsmasq.d

##### Altri metodi

Se si utilizza il demone dnsmasq, allora sarà necessario aggiungere l'indirizzo di localhost al file `resolv.conf` (che NetworkManager andrà ad interrogare).

Dopo l'aggiornamento di NetworkManager alla versione 0.7, Arch Linux adesso richiama dhcpcd direttamente invece di dhclient più comunemente utilizzato come default. Dati gli argomenti utilizzati con dhcpcd, esso non legge più le configurazioni in `/etc/resolv.conf.head`, e `/etc/resolv.conf.tail` per scelta dei server DNS. Diverse opzioni sono disponibili.

La prima opzione potrebbe essere l'aggiunta di uno script al dispatcher di NetworkManager di preporre localhost in `resolv.conf`:

    /etc/NetworkManager/dispatcher.d/localhost-prepend

    #!/bin/bash
    # Prepone localhost in resolv.conf per dnsmasq

    if [[ ! $(grep 127.0.0.1 /etc/resolv.conf) ]]; then
      sed -i '1s|^|nameserver 127.0.0.1\n|' /etc/resolv.conf
    fi

renderlo eseguibile:

    # chmod +x /etc/NetworkManager/dispatcher.d/localhost-prepend

La seconda opzione consiste nell'aprire le impostazioni di NetworkManager (solitamente facendo click con il tasto destro sopra l'applet) ed inserire le impostazioni manualmente. La configurazione dipenderà dal tipo di front-end utilizzato; il processo solitamente consiste nel fare click con li tasto destro sull'applet, modificare (o creare) un profilo, e successivamente impostare il tipo di DHCP in 'Automatic (specify addresses).' Gli indirizzi DNS dovranno essere inseriti e solitamente si utilizza questa forma: `127.0.0.1, DNS-server-one, ...`.

Ed infine, NetworkManager può essere usato con dhclient usando (networkmanager-dhclientAUR[broken link: package not found]).

##### Configurazione personalizzata

A partire da NetworkManager 0.9.6 è possibile creare una configurazione personalizzata per dnsmasq creando i file di configurazione nella cartella `/etc/NetworkManager/dnsmasq.d/`

## DHCP Server Setup

Per default dnsmasq ha la funzionalità di server DHCP disabilitata, se si desidera utilizzarla dovrà essere attivata nel file `/etc/dnsmasq.conf`. Di seguito sono riportate le impostazioni più importanti:

    # Ascolta solamente sulla interfaccia LAN NIC.  Così facendo apre per i
    # protocolli tcp/udp la porta 53 a localhost e per il protocollo udp la porta 67 all'esterno:
    interface=<LAN-NIC>

    # dnsmasq aprirà per i protocolli tcp/udp la porta 53 e udp la porta 67 all'esterno
    # per aiutare con le interfacce dinamiche (assegnazione dinamica degli ip).
    # Dnsmasq rifiuterà le richieste esterne, ma la paranoia può essere tale da
    # chiuderle e lasciare al kernel occuparsene:
    bind-interfaces

    # Range degli indirizzi IP da rendere disponibili ai pc della LAN
    dhcp-range=192.168.111.50,192.168.111.100,12h

    # Se si necessita di assegnare indirizzi statici, effettuare il bind tramite
    # il MAC address della scheda:
    dhcp-host=aa:bb:cc:dd:ee:ff,192.168.111.50

## Avviare il demone

Per avviare dnsmasq all'avvio:

    # systemctl enable dnsmasq

Per avviarlo immediatamente:

    # systemctl start dnsmasq

Per verificare se dnsmasq è stato avviato correttamente, controllare il log; dnsmasq inoltra i suoi messaggi al file `/var/log/messages.log`. La configurazione di rete dovrà essere riavviata affinché il client DHCP possa creare un nouvo `/etc/resolv.conf`.

## Test

### DNS Caching

Per effettuare un test di velocità per il lookup ad un sito che ancora non è stato visitato dall'avvio di dnsmasq (`dig` fa parte del pacchetto dnsutils[broken link: replaced by bind-tools]):

    $ dig archlinux.org | grep "Query time"

Eseguendo ancora il comando verrà utilizzato l'indirizzo IP dalla cache DNS ed il tempo di lookup sarà molto inferiore se dnsmasq è configurato correttamente.

## DHCP Server

Da un computer che è collegato ad quello con dnsmasq, configurarlo per ottenere l'assegnamento dell'indirizzo IP mediante DHCP, successivamente tentare di accedere alla rete come di solito.

## Trucchi e consigli

### Prevenire che OpenDNS reindirizzino le query a Google

Per impedire che OpenDNS rediriga tutte le richieste a Google ai propri server di ricerca, aggiungere al file `/etc/dnsmasq.conf`:

    server=/www.google.com/<IP DNS ISP>

### Visualizzare i lease

    $ cat /var/lib/misc/dnsmasq.leases

Category:

- Domain Name System (Italiano)

Hidden category:

- Pages with broken package links