Configura il dnsmasq di NetworkManager per usare / etc / hosts

19

Ho installato DNSMASQ ma non è stato avviato poiché la porta 53 era occupata.

Ho scoperto che Ubuntu aveva già il pacchetto dnsmasq e funziona.

Ora il problema è ... voglio solo essere in grado di risolvere i miei host in / etc / hosts attraverso di esso

i.e: nslookup somehostonlan localhost da risolvere per alcuni IP presi da / etc / hosts file.

ma questo non sta succedendo.

Perché? A proposito, come il server DNS di cache sta funzionando bene. Voglio solo che risolva gli host dal file / etc / hosts che è tutto

    
posta bakytn 01.04.2012 - 14:48

4 risposte

19

Per velocizzare Internet, Ubuntu 12.04 ha aggiunto un plug-in a NetworkManager per avviare dnsmasq, un server DNS locale che memorizza nella cache le voci DNS. Il problema è che il plugin ha hardcoded la stringa --no-hosts.

Quindi una soluzione è commentare la linea che carica il plugin nel file di configurazione di NetworkManager e riavvia NetworkManager:

sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

Un'altra soluzione è racchiudere dnsmasq per filtrare gli argomenti indesiderati:

sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin

exec $dnsmasq 'echo [email protected] | sed -e s/--no-hosts//'
EOF

sudo chmod 755 /usr/sbin/dnsmasq

Contrassegna il bug che ti riguarda.

Un'altra soluzione senza patch di file di sistema

cat /etc/NetworkManager/dnsmasq.d/hosts.conf 

addn-hosts=/etc/hosts
    
risposta data kbenoit 03.05.2012 - 00:32
7

Questo bug mi ha colpito ancora adesso (Ubuntu 14.04).

Finalmente ho trovato una soluzione che, semplicemente aggiungi questa riga 'addn-hosts = / etc / hosts' al file di configurazione dnsmasq del pacchetto Newworkmanager.

echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart

L'idea è, stiamo aggiungendo / etc / hosts come file host aggiuntivo.

Anche se trovassi una soluzione, l'opzione hard-coded '--no-hosts' nel file binario / usr / sbin / NetworkManager mi delude.

    
risposta data harish2704 27.05.2015 - 12:39
5

A partire da agosto 2015, le altre risposte sono obsolete.

Risposta semplice

  1. Crea /etc/NetworkManager/dnsmasq.d/hosts.conf .
  2. Inserisci righe come address=/whatever/1.2.3.4 in essa. Vedi i documenti (cerca --address ). I caratteri jolly sono possibili: address/.whatever./1.2.3.4 .
  3. Elimina dnsmasq ( bug ).
  4. Riavvia: $ service network-manager restart .
risposta data mightyiam 12.08.2015 - 00:17
0

dnsmasq dovrebbe utilizzare automaticamente il file /etc/hosts . Questo può essere disabilitato dall'opzione della riga di comando -h o dall'opzione di configurazione no-hosts . Non mi aspetto che sia impostato nella configurazione predefinita.

Prova a forzare dnsmasq a ricaricare il suo file hosts. (Le modifiche al file di configurazione richiedono un riavvio). Ciascuno di questi comandi dovrebbe funzionare.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Se stai lavorando con un sistema con no-hosts specificato dovresti essere in grado di utilizzare l'opzione addn-hosts per sovrascriverlo. Normalmente, questo sarebbe usato per leggere un file aggiuntivo in formato /etc/hosts . Questo può essere usato per specificare ulteriori dati host che vuoi fornire al DNS, ma non vuoi nel tuo file /etc/hosts . Questo può essere utilizzato per consentire al gestore pacchetti e agli strumenti correlati di gestire /etc/hosts mentre i dati host aggiuntivi sono forniti in un file alternativo.

    
risposta data BillThor 01.04.2012 - 15:40

Leggi altre domande sui tag