Resposta simples

Resposta simples

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

Descobri que o Ubuntu já tinha o pacote dnsmasq e está funcionando.

Agora o problema é... eu só quero poder resolver meus hosts em /etc/hosts através dele

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

Mas isto não esta acontecendo.

Por que? Aliás, como servidor DNS de cache, está funcionando bem. Eu só quero resolver hosts do arquivo /etc/hosts, só isso

Responder1

Para acelerar a internet, o Ubuntu 12.04 adicionou um plugin ao NetworkManager para iniciar o dnsmasq, um servidor DNS local que armazena em cache as entradas do DNS. O problema é que o plugin codificou a string --no-hosts.

Portanto, uma solução é comentar a linha que carrega o plugin 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 marqueO insetocomo afetando você.

Outra solução sem corrigir arquivos do sistema

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

addn-hosts=/etc/hosts

Responder2

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

Finalmente encontrei uma solução que simplesmente adiciona 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 ideia é adicionar /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.

Responder3

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

Resposta simples

  1. Criar /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Coloque linhas como address=/whatever/1.2.3.4nele. Veros documentos (procurar --address). Curingas são possíveis: address/.whatever./1.2.3.4.
  3. Matar dnsmasq(erro).
  4. Reinicie: $ service network-manager restart.

Responder4

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

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

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Se você estiver trabalhando com um sistema especificado, no-hostspoderá 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 de host adicionais que você deseja que o DNS forneça, mas não deseja em 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.

informação relacionada