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