Configurare dnsmasq di NetworkManager per usare / etc / hosts


22

Ho installato DNSMASQ ma non si avviava perché 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

vale nslookup somehostonlan localhost a dire: da risolvere a determinati IP presi dal file / etc / hosts.

ma questo non sta succedendo.

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

Risposte:


22

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 codificato la stringa --no-hosts.

Quindi una soluzione è commentare la riga che carica il plugin nel file di configurazione di NetworkManager e riavviare 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\)$/#\1/" > /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 $@ | sed -e s/--no-hosts//`
EOF

sudo chmod 755 /usr/sbin/dnsmasq

Si prega di contrassegnare il bug come interessato a te.

Un'altra soluzione senza patchare i file di sistema

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

addn-hosts=/etc/hosts

7

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

Alla fine ho trovato una soluzione che aggiunge semplicemente 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 è che stiamo aggiungendo / etc / hosts come file host aggiuntivo.

Anche se potessi trovare una soluzione, l'opzione "--no-hosts" nel codice binario nel file binario / usr / sbin / NetworkManager mi delude.


7

Ad agosto 2015, le altre risposte sono obsolete.

Semplice risposta

  1. Crea /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Metti linee come address=/whatever/1.2.3.4in esso. Vedi i documenti (cerca --address). I caratteri jolly sono possibili: address/.whatever./1.2.3.4.
  3. Kill dnsmasq( bug ).
  4. Riavviarlo: $ service network-manager restart.

1

dnsmasq dovrebbe usare automaticamente il /etc/hostsfile. Questo può essere disabilitato -hdall'opzione della riga di comando o no-hostsdall'opzione di configurazione. 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). Entrambi questi comandi dovrebbero funzionare.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Se stai lavorando con un sistema no-hostsspecificato, dovresti essere in grado di utilizzare l' addn-hostsopzione per sovrascriverlo. Normalmente, questo sarebbe usato per leggere un file aggiuntivo in /etc/hostsformato. Questo può essere usato per specificare dati host aggiuntivi che vuoi che DNS fornisca, ma che non vuoi nel tuo /etc/hostsfile. Questo può essere utilizzato per consentire al gestore pacchetti e agli strumenti correlati di gestire /etc/hostsmentre i dati host aggiuntivi vengono forniti in un file alternativo.


/etc/dnsmasq.conf ha tutte le opzioni commentate. Ricaricare non aiuta
bakytn

Non so cosa ho fatto. sembra funzionare ora
bakytn

3
Perché dovresti rispondere a questa domanda quando in realtà non conosci la risposta? Il fatto che "non ci si aspetterebbe che sia impostato nella configurazione predefinita" non è un caso, poiché in realtà è impostato e codificato in dnsmasq in NetworkManger.
Justin Buser,

dnsmasq deve essere riavviato per caricare le modifiche nei file di configurazione
txwikinger

@txwikinger Molti file di opzioni vengono riletti quando dnsmasqricevono un HUPsegnale. Ciò include sia i file /etc/hostsche i /etc/ethersfile. I tempi di riavvio sono abbastanza veloci, che sarà raro che i client non ottengano una risposta.
BillThor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.