Configure o dnsmasq do NetworkManager para usar / etc / hosts

18

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

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

Agora o problema é ... Eu só quero ser capaz de 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 isso não está acontecendo.

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

    
por bakytn 01.04.2012 / 14:48

4 respostas

19

Para agilizar a internet, o ubuntu 12.04 adicionou um plugin ao NetworkManager para iniciar o dnsmasq, um servidor de dns local que armazena em cache as entradas dns. O problema é que o plugin 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\)$/#/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

Outra solução é envolver 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

Marque o bug que afeta você.

Outra solução sem corrigir arquivos do sistema

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

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

Esse bug ainda me afetou mesmo agora (Ubuntu 14.04).

Finalmente, encontrei uma solução que, simplesmente, inclua esta linha 'addn-hosts = / etc / hosts' no 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 é que estamos adicionando / etc / hosts como um arquivo host adicional.

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

    
por harish2704 27.05.2015 / 12:39
5

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.4 nele. Veja os documentos (procure --address ). Curingas são possíveis: address/.whatever./1.2.3.4 .
  3. Mate dnsmasq ( bug ).
  4. Reinicie: $ service network-manager restart .
por mightyiam 12.08.2015 / 00:17
0

O dnsmasq deve usar automaticamente o arquivo /etc/hosts . Isso pode ser desativado pela opção de linha de comando -h ou pela opção de configuração no-hosts . 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 uma reinicialização). Qualquer um desses comandos deve funcionar.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

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

    
por BillThor 01.04.2012 / 15:40

Tags