Configure o dnsmasq do NetworkManager para usar / etc / hosts

22

Instalei o DNSMASQ, mas ele não estava iniciando, pois a porta 53 estava ocupada.

Eu descobri que o ubuntu já tinha o pacote dnsmasq e está funcionando.

Agora o problema é ... Eu só quero resolver meus hosts no / etc / hosts através dele

ou seja: nslookup somehostonlan localhost a ser resolvido para um determinado IP retirado do arquivo / etc / hosts.

Mas isto não esta acontecendo.

Por quê? BTW, como o servidor DNS em cache está funcionando bem. Eu só quero resolver hosts do arquivo / etc / hosts, isso é tudo

bakytn
fonte

Respostas:

22

Para acelerar a Internet, o ubuntu 12.04 adicionou um plug-in ao NetworkManager para iniciar o dnsmasq, um servidor DNS local que armazena em cache as entradas DNS. O problema é que o plug-in codificou a string --no-hosts.

Portanto, uma solução é comentar a linha que carrega o plug-in no arquivo de configuração do NetworkManager e reiniciar o 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

Outra solução é agrupar o dnsmasq para filtrar os argumentos indesejados:

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

Por favor, marque o bug como afetando você.

Outra solução sem corrigir os arquivos do sistema

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

addn-hosts=/etc/hosts
kbenoit
fonte
7

Este bug ainda me afetou até agora (Ubuntu 14.04).

Finalmente encontrei uma solução que, simplesmente adicione esta linha 'addn-hosts = / etc / hosts' ao arquivo de configuração dnsmasq do pacote Newworkmanager.

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

A idéia é que estamos adicionando / etc / hosts como um arquivo host adicional.

Mesmo que eu pudesse encontrar uma solução, a opção codificada '--no-hosts' no arquivo binário / usr / sbin / NetworkManager me decepciona.

harish2704
fonte
7

Em agosto de 2015, as outras respostas estão desatualizadas.

Resposta simples

  1. Crie /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Coloque linhas como address=/whatever/1.2.3.4ele. Veja os documentos (procure --address). Wildcards são possíveis: address/.whatever./1.2.3.4.
  3. Matar dnsmasq( bug ).
  4. Reiniciá-lo: $ service network-manager restart.
mightyiam
fonte
1

O dnsmasq deve usar o /etc/hostsarquivo automaticamente . Isso pode ser desativado pela -hopção de linha de comando ou no-hostsopção de configuração. Eu não esperaria que fosse definido na configuração padrão.

Tente forçar o dnsmasq a recarregar seu arquivo de hosts. (Alterações no arquivo de configuração requerem reinicialização). Qualquer um desses comandos deve funcionar.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Se você estiver trabalhando com um sistema que no-hostsespecificou, poderá usar a addn-hostsopção para substituí-lo. Normalmente, isso seria usado para ler um arquivo adicional no /etc/hostsformato. Isso pode ser usado para especificar dados adicionais do host que você deseja que o DNS forneça, mas não deseja no seu /etc/hostsarquivo. Isso pode ser usado para permitir que o gerenciador de pacotes e ferramentas relacionadas gerenciem /etc/hostsenquanto dados adicionais de hosts são fornecidos em um arquivo alternativo.

BillThor
fonte
O /etc/dnsmasq.conf tem todas as opções comentadas. Recarregando não está ajudando
bakytn
Não sei o que fiz. ele parece estar funcionando agora
bakytn
3
Por que você responderia quando não sabia a resposta? O fato de "você não esperar que seja definido na configuração padrão" não é o caso, pois é definido e codificado no dnsmasq no NetworkManger.
23712 Justin Buser
dnsmasq deve ser reiniciado para alterações de carga em arquivos de configuração
txwikinger
@txwikinger Muitos arquivos de opções são relidos ao dnsmasqreceber um HUPsinal. Isso inclui os arquivos /etc/hostse /etc/ethers. Os tempos de reinicialização são rápidos o suficiente, para que seja raro os clientes não receberem uma resposta.
BillThor