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
- Criar
/etc/NetworkManager/dnsmasq.d/hosts.conf
. - Coloque linhas como
address=/whatever/1.2.3.4
nele. Veros documentos (procurar--address
). Curingas são possíveis:address/.whatever./1.2.3.4
. - Matar
dnsmasq
(erro). - Reinicie:
$ service network-manager restart
.
Responder4
dnsmasq deve usar automaticamente o /etc/hosts
arquivo. Isso pode ser desabilitado pela -h
opção de linha de comando ou no-hosts
opçã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-hosts
poderá usar a addn-hosts
opção para substituí-lo. Normalmente, isso seria usado para ler um arquivo adicional no /etc/hosts
formato. 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/hosts
arquivo. Isso pode ser usado para permitir que o gerenciador de pacotes e ferramentas relacionadas gerenciem /etc/hosts
enquanto dados adicionais de hosts são fornecidos em um arquivo alternativo.