Questão dnsmasq não está trabalhando para apontar endereços .local para 127.0.0.1


Eu gostaria de ter .local endereços (como test.local) para apontar para 127.0.0.1 mas não está funcionando. Estou no ultimo Ubuntu. No /etc/NetworkManager/NetworkManager.conf eu comentei dns=dnsmasq então fiz sudo service network-manager restart.

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

Mas quando eu visito test.local ele não resolve para 127.0.0.1, fazendo um ping daquele endereço .local também não é bem sucedido. Talvez o conteúdo de /etc/resolv.conf são relevantes, é apenas o padrão que eu não mudei:

# 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 eu 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á rodando o /etc/resolv.conf automaticamente atualiza (e volta para a entrada acima quando o dnsmasq é parado):

# 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 fazendo um ping para localhost não funciona.

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


4


origem




Respostas:


local parece 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 -- trabalho.

4





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

Para certificar-se de que o sistema está usando o dnsmasq, é necessário atualizar o /etc/resolv.conf usar nameserver 127.0.0.1 como primeira opção.

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


6



Eu atualizei minha pergunta com algumas informações baseadas em sua resposta, eu apreciaria se você pudesse dar uma olhada. - user779159
Também o original /etc/dnsmasq.conf o arquivo é deixado como era originalmente, com tudo comentado. Há coisas que preciso descomentar de lá? (É um arquivo grande com mais de 600 linhas.) A única coisa que eu descomentei foi a última linha conf-dir=/etc/dnsmasq.dporque meu arquivo de configuração personalizado está sob esse diretório. - user779159
Seu dnsmasq está respondendo corretamente. o conf-dir diretiva carrega todos os arquivos dentro do diretório, assim você pode ter organizar em arquivos diferentes, não é necessário necessário no seu caso. Você pode manter o dnsmasq.conf original como está e colocar sua configuração em um arquivo customizado em /etc/dnsmasq.d, como você já fez. Você não precisa de sudo para rodar o nslookup. Teste novamente com nslookup test.local, ele usará a configuração do DNS de /etc/resolv.conf desta vez. - denisvm


Se o que você quer apenas envolve 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ê quer é simplesmente adicionar algumas entradas /etc/hosts. Eu recomecei você desfazer todas as suas alterações para dnsmasq e é configurações e certifique-se de que /etc/hosts tem o seguinte no topo:

127.0.0.1 localhost
127.0.1.1 mycomputername mycomputername.local anothername.local

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

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 apague ou mude o localhost entrada em si. Então, assim:

127.0.0.1 localhost mycomputername mycomputername.local anothername.local

BTW: a maneira correta de modificar o resolv.conf no desktop do Ubuntu é com o gerenciador de rede na sua barra de tarefas. A maneira correta no servidor Ubuntu é adicionar dns-nameserver entradas sob o seu dispositivo de rede em /etc/network/interfaces e reinicie ou faça ifdown eth0 && ifup eth0. Como o aviso em /etc/resolv.conf estados, não modificá-lo diretamente, ele é escrito dinamicamente com base em /etc/network/interfaces configurações.


0



/etc/hosts não permite curingas, você teria que atualizá-lo para cada novo .local domínio, é por isso que as pessoas usam dnsmasq, mesmo para a resolução local. - Dmitri


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

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


0



Bem-vindo ao superusuário! Obrigado pela sua contribuição. Fornecer o link para referência é útil, mas você também deve incluir as informações essenciais no post. Por favor edite sua resposta por isso contém essa informação. Você também pode gostar de Tour e leia o Como responder página, para se familiarizar melhor com este site. - robinCTS