O resolvedor de DNS local (127.0.1.1) ignora o servidor DNS da LAN

1

Configurei um computador para atuar como um servidor DNS para minha LAN (seguindo aproximadamente este guia ). Minha motivação principal é poder acessar meus computadores e appliances com URLs em vez de IPs.

Está funcionando e encaminhando OK, já que posso resolver corretamente meus próprios nomes:

➜  ~ nslookup router.casa 192.168.1.5
Server:     192.168.1.5
Address:    192.168.1.5#53

Name:   router.casa
Address: 192.168.1.1

e fora:

➜  ~ nslookup google.com 192.168.1.5
Server:     192.168.1.5
Address:    192.168.1.5#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.28.174

( 192.168.1.5 , como você provavelmente já descobriu, é o endereço do servidor DNS)

Em seguida, configurei o servidor DHCP (um roteador Linksys) para distribuir 192.168.1.5 como o endereço DNS primário e o Google próximo. Isso porque gostaria que meus dispositivos pudessem resolver nomes mesmo se o servidor DNS local estivesse inativo. Isso também parece estar funcionando, ou pelo menos é refletido corretamente em qualquer PC quando eu faço

➜  ~ nmcli dev show | grep DNS
IP4.DNS[1]:                             192.168.1.5
IP4.DNS[2]:                             8.8.8.8
IP4.DNS[3]:                             8.8.4.4

No entanto, as consultas normais de nslookup (sem endereço DNS explícito) não funcionam:

➜  ~ nslookup router.casa
Server:     127.0.1.1
Address:    127.0.1.1#53

** server can't find router.casa: NXDOMAIN

Depois de ler muitos SuperUser, Unix & Perguntas sobre Linux e AskUbuntu, agora sei que esse endereço 127.0.1.1 é algo como uma configuração de cache DNS local por padrão por resolvconf , que vem pré-configurado para isso na minha distribuição (Mint). Efetivamente:

➜  ~ cat /etc/resolv.conf 
# 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.1.1

Eu li muitas soluções (aceitas) recomendando algumas correções manuais ( editando os arquivos base do resolv.conf , removendo o resolvconf inteiramente , etc.). No entanto, eu gostaria que qualquer dispositivo convidado pudesse usar os nomes locais, e eu realmente não quero editar todas as configurações da LAN (alguns dos dispositivos não são meus).

Existe alguma maneira de configurar o servidor DNS e / ou o DHCP para que eu não precise editar as configurações de todos os PCs e dispositivos manualmente?

Além disso, como uma questão secundária, por que o servidor 127.0.1.1 está ignorando o primeiro endereço DNS? nslookup falha mesmo quando eu uso do servidor DNS:

➜  ~ nslookup router.casa 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   router.casa
Address: 192.168.1.1

➜  ~ nslookup router.casa 127.0.1.1
Server:     127.0.1.1
Address:    127.0.1.1#53

** server can't find router.casa: NXDOMAIN

Mais resultado útil:

➜  ~ sudo netstat -tulpn | grep 127.0.1.1
tcp        0      0 127.0.1.1:53            0.0.0.0:*               ESCUCHAR    1489/dnsmasq    
udp        0      0 127.0.1.1:53            0.0.0.0:*                           1489/dnsmasq    
    
por Laski 24.12.2017 / 19:41

1 resposta

2

A entrada 127.0.1.1 provavelmente é colocada lá por dnsmasq , que é um daemon local para servir (e crucialmente armazenar em cache) dns e dhcp. É possível configurar o NetworkManager para não executar o dnsmasq da seguinte maneira: edite o arquivo /etc/NetworkManager/NetworkManager.conf e comente a linha dns=dnsmasq colocando # no início da linha.

sudo nano /etc/NetworkManager/NetworkManager.conf

Agora reinicie o NetworkManager:

sudo service network-manager restart

Em seguida, verifique se a entrada 127.0.1.1 desapareceu de /etc/resolv.conf e foi substituída pelas obtidas no seu roteador.

    
por 27.06.2018 / 14:30