En dnsmasq.conf:
address=/local/127.0.0.1
En 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
Puedo usar nslookup:
# nslookup www.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.local
Address: 127.0.0.1
Pero no puedo usar ping:
# ping www.local
ping: unknown host www.local
Utilizo tcpdump para capturar lo mientras hago ping a www.local, sin paquetes, mientras que los paquetes 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)
apareció desde la interfaz física.
Lo que significa que ping está usando mdns, pero ¿por qué nslookup no usa mdns? ¿Por qué ping no usará dns normales cuando mdns no devuelve falue útil?
Gracias.
getent hosts foo.local
si solo desea buscar una dirección IP independientemente de si es mDNS o DNS. A diferencianslookup
, elgetent
comando usa el nsswitch de la Biblioteca GNU C, por lo que siempre funciona.Es muy simple,
nslookup
es específicamente una herramienta DNS, es parte de las herramientas BIND.Simplemente no conoce los otros servicios de nombres a los que las llamadas de la biblioteca
gethostbyname
pueden acceder a través de NSS porquenslookup
no usangethostbyname
, etc.fuente