dnsmasq não funciona para apontar endereços .local para 127.0.0.1

dnsmasq não funciona para apontar endereços .local para 127.0.0.1

Gostaria de obter .localendereços (como test.local) para apontar, 127.0.0.1mas não está funcionando. Estou no Ubuntu mais recente. Em /etc/NetworkManager/NetworkManager.conf comentei dns=dnsmasqentão fiz sudo service network-manager restart.

Em seguida, instalei o dnsmasq e adicionei um address=/local/127.0.0.1ao /etc/dnsmasq.d/mycustomfile e fiz o sudo service dnsmasq restart. Além do que mencionei, não fiz outras alterações.

Mas quando visito test.local ele não resolve para 127.0.0.1, fazer um ping nesse endereço .local também não é bem-sucedido. Talvez o conteúdo de /etc/resolv.confseja relevante, é apenas o padrão que não alterei:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 222.11.22.36
nameserver 222.11.22.37

Esta é a saída quando executo o dnsmasq não como um daemon:

$ sudo dnsmasq --no-daemon     
dnsmasq: started, version 2.68 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 222.11.22.37#53
dnsmasq: using nameserver 222.11.22.36#53
dnsmasq: read /etc/hosts - 9 addresses

Quando o dnsmasq está em execução, o /etc/resolv.conf é atualizado automaticamente (e reverte para a entrada acima quando o dnsmasq é interrompido):

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

E isto:

$ sudo nslookup test.local 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   test.local
Address: 127.0.0.1

Mas ainda assim fazer um ping para localhost não funciona.

O que preciso fazer para que o dnsmasq funcione para resolver endereços .local?

Responder1

localparece ser algum tipo de palavra-chave reservada, pelo menos no Ubuntu:

  • address=/local/127.0.0.1- não funciona.
  • address=/loc/127.0.0.1-- funciona.

Responder2

Parece que o dnsmasq está iniciando corretamente. Você deve testar se o dnsmasq está funcionando corretamente com o nslookup test.local 127.0.0.1.

Para ter certeza de que o sistema está usando dnsmasq, você deve atualizar o /etc/resolv.confpara usar nameserver 127.0.0.1como primeira opção.

Você também pode usar uma configuração de resolvedor upstream personalizada no dnsmasq com --resolv-file=/etc/resolv.conf.dnsmasq.

Responder3

Provavelmente o avahi-daemon está usando o domínio "local". Ver:

https://unix.stackexchange.com/questions/352237/avahi-daemon-and-local-domain-issues

Responder4

Se o que você deseja envolve apenas apontar para sua própria máquina e não tentar usar o dnsmasq para controlar a resolução de DNS de outros computadores, então o que você deseja é apenas adicionar algumas entradas em /etc/hosts. Eu recomendo que você desfaça todas as alterações no dnsmasq e em suas configurações e certifique-se de que /etc/hoststenha o seguinte no topo:

127.0.0.1 localhost
127.0.1.1 mycomputername mycomputername.local anothername.local

Depois disso, o ping em mycomputername.local apontará para você mesmo (na verdade, apontará para o servidor dnsmasq em execução em 127.0.1.1, ENTÃO para localhost). Você pode até adicionar entradas para outros computadores na sua rede para que pareça, nesta máquina, que os computadores podem ser referenciados como computer1.local computer2.localetc.

192.168.1.31 computer1.local
192.168.1.32 computer2.local

Se você não conseguir desfazer suas alterações com o dnsmasq, poderá adicionar essas entradas adicionais depois localhost, mas não exclua ou altere a localhostentrada em si. Então assim:

127.0.0.1 localhost mycomputername mycomputername.local anothername.local

BTW: a maneira correta de modificar o resolv.conf na área de trabalho do Ubuntu é com o gerenciador de rede na barra de tarefas. A maneira correta no servidor Ubuntu é adicionar dns-nameserverentradas em seu dispositivo de rede /etc/network/interfacese reiniciar ou fazer ifdown eth0 && ifup eth0. Como afirma o aviso /etc/resolv.conf, não o modifique diretamente, ele é escrito dinamicamente com base nas /etc/network/interfacesconfigurações.

informação relacionada