No dnsmasq.conf:
address=/local/127.0.0.1
No resolv.conf:
# Generated by NetworkManager
domain example.com
search example.com
nameserver 127.0.0.1
nameserver 10.66.127.17
nameserver 10.68.5.26
Eu posso usar o nslookup:
# nslookup www.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.local
Address: 127.0.0.1
Mas não posso usar ping:
# ping www.local
ping: unknown host www.local
Eu uso o tcpdump para capturar lo durante o ping em www.local, sem pacotes, enquanto pacotes como
# tcpdump -i em1 -n | grep local
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em1, link-type EN10MB (Ethernet), capture size 65535 bytes
20:14:38.189335 IP 10.66.65.188.mdns > 224.0.0.251.mdns: 0 A (QM)? www.local. (27)
20:14:39.190700 IP 10.66.65.188.mdns > 224.0.0.251.mdns: 0 A (QM)? www.local. (27)
20:14:41.192979 IP 10.66.65.188.mdns > 224.0.0.251.mdns: 0 A (QM)? www.local. (27)
apareceu da interface física.
O que significa que o ping está usando mdns, mas por que o nslookup não usa mdns? Por que o ping não usa o DNS normal quando o mdns não retorna um valor útil?
Obrigado.
getent hosts foo.local
se você apenas deseja procurar um endereço IP, independentemente de ser mDNS ou DNS. Ao contrárionslookup
, ogetent
comando usa o nsswitch da GNU C Library, portanto, ele sempre funciona.É muito simples -
nslookup
é especificamente uma ferramenta DNS - faz parte das ferramentas BIND.Ele simplesmente não conhece os outros serviços de nomes que as chamadas de biblioteca
gethostbyname
podem acessar via NSS porquenslookup
não usamgethostbyname
etc.fonte