resolv.conf continua sendo sobrescrito quando o dnsmasq é reiniciado, quebrando o dnsmasq

8

Eu estou executando o Debian Jessie e estou tentando configurar o dnsmasq como um servidor DNS em cache. Eu usei um guia para apresentar o seguinte /etc/dnsmasq.conf :

listen-address=127.0.0.1
bind-interfaces
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll

Fazer sudo service dnsmasq restart falhar e não será iniciado, dizendo

Mar 26 17:13:01 user dnsmasq[26743]: dnsmasq: syntax check OK.
Mar 26 17:13:01 user dnsmasq[26746]: dnsmasq: only one resolv.conf file allowed in no-poll mode.

Ok, é estranho que uma configuração feita diretamente de um guia falhe. Vou apenas remover a opção no-poll para ver se funciona. Desta vez, tudo começa bem, mas a resolução do DNS está claramente falhando. Arquivos relevantes:

/etc/resolv.conf :

nameserver 127.0.0.1

/etc/resolv.dnsmasq :

nameserver 8.8.8.8

/var/run/dnsmasq/resolv.conf :

nameserver 127.0.0.1

O terceiro arquivo parece ser o arquivo resolv.conf ao vivo do dnsmasq, porque adicionar uma linha de servidor de nomes a ele enquanto o dnsmasq já está em execução faz com que a resolução de DNS comece a funcionar imediatamente. Então, parece que ele ignorou meu /etc/resolv.dnsmasq . Eu também tentei adicionar uma linha de servidor de nomes ao meu /etc/resolv.conf e remover a linha resolv-file em /etc/dnsmasq.conf , mas ela é sobrescrita imediatamente ao que você vê acima ao fazer sudo service dnsmasq restart .

O que está acontecendo com o dnsmasq e configuro o dnsmasq como um servidor DNS de cache?

    
por nullUser 26.03.2015 / 23:31

4 respostas

8

Parece haver um bug no script de inicialização para dnsmasq que usa resolvconf para chobber o resolvedor local se a interface de loopback local não for explicitamente except -ed no arquivo /etc/defaults/dnsmasq .

A resposta curta é que você pode adicionar ...

DNSMASQ_EXCEPT=lo

para /etc/defaults/dnsmasq para resolver o problema.

Para mais informações, veja esta pergunta ...

link

    
por 19.10.2015 / 21:57
1

Não use

resolv-file=/etc/resolv.dnsmasq

Coloque o servidor dns no dnsmasq.conf, como

server=/localnet/192.168.0.1 # change ip for your ip-server
server=8.8.8.8
server=8.8.4.4

E adicione ao dnsmasq.conf

no-resolv
    
por 15.01.2016 / 01:07
1

O bigjosh está certo - exceto que houve uma atualização no dnsmasq, e agora há uma opção no final de /etc/default/dnsmasq , que você pode un-hash:

IGNORE_RESOLVCONF=yes
    
por 08.08.2016 / 15:55
0

Se você quer apenas um servidor DNS somente de caching e nada mais que o dnsmasq possa fazer, seria melhor instalar lwresd ou unbound e usar a configuração padrão de ações que fornece apenas um cache Servidor dns. Então você acabou de definir /etc/resolv.conf para usar o "servidor de nomes 127.0.0.1" e pronto.

O legal é que esses dois pacotes não mexem com o que está em /etc/resolv.conf como o dnsmasq e é, portanto, uma solução mais limpa IMHO. Normalmente, você também pode remover o pacote resolvconf para que nada fique com /etc/resolv.conf .

FYI, dnsmasq ficou bastante complicado, muitos sinos e assobios e está apenas causando dor para a maioria das pessoas mais. Viola o KISS no meu livro.

    
por 03.04.2015 / 00:56