W dnsmasq.conf:
address=/local/127.0.0.1
W 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
Mogę użyć nslookup:
# nslookup www.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.local
Address: 127.0.0.1
Ale nie mogę użyć ping:
# ping www.local
ping: unknown host www.local
Używam tcpdump do przechwytywania lo podczas pingowania www.local, bez pakietów, podczas gdy pakiety są podobne
# 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)
pojawił się z interfejsu fizycznego.
Co oznacza, że ping używa mdns, ale dlaczego nslookup nie używa mdns? Dlaczego ping nie używa normalnych dns, gdy mdns nie zwraca użytecznego falue?
Dzięki.
getent hosts foo.local
jeśli chcesz po prostu wyszukać adres IP, niezależnie od tego, czy jest to mDNS, czy DNS. W przeciwieństwie donslookup
tegogetent
polecenie używa nsswitch biblioteki GNU C, więc zawsze działa.To bardzo proste -
nslookup
jest w szczególności narzędziem DNS - jest częścią narzędzi BIND.Po prostu nie wie o innych usługach nazw, do których wywoływane są biblioteki, takie jak
gethostbyname
NSS, ponieważnslookup
nie używagethostbyname
itp.źródło