Dans dnsmasq.conf:
address=/local/127.0.0.1
Dans 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
Je peux utiliser nslookup:
# nslookup www.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.local
Address: 127.0.0.1
Mais je ne peux pas utiliser ping:
# ping www.local
ping: unknown host www.local
J'utilise tcpdump pour capturer lo pendant le ping sur www.local, pas de paquets, tandis que des paquets comme
# 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)
est apparu à partir de l'interface physique.
Ce qui signifie que ping utilise mdns, mais pourquoi nslookup n'utilise pas mdns? Pourquoi ping n'utilisera pas de DNS normal lorsque mdns ne renvoie pas de valeur utile?
Merci.
getent hosts foo.local
si vous souhaitez simplement rechercher une adresse IP, qu'il s'agisse de mDNS ou de DNS. Contrairement ànslookup
lagetent
commande, elle utilise le nsswitch de la bibliothèque GNU C, donc cela fonctionne toujours.C'est très simple -
nslookup
c'est spécifiquement un outil DNS - cela fait partie des outils BIND.Il ne connaît tout simplement pas les autres services de noms auxquels les appels de bibliothèque
gethostbyname
peuvent accéder via NSS parce qu'ilsnslookup
n'utilisent pasgethostbyname
, etc.la source