В dnsmasq.conf:
address=/local/127.0.0.1
В 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
Я могу использовать nslookup:
# nslookup www.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.local
Address: 127.0.0.1
Но я не могу использовать пинг:
# ping www.local
ping: unknown host www.local
Я использую tcpdump для захвата lo при пинге www.local, пакетов нет, а пакеты вроде
# 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)
появился из физического интерфейса.
Что означает, что ping использует mdns, но почему nslookup не использует mdns? Почему ping не будет использовать обычные днс, когда mdns не возвращает полезного значения?
Спасибо.
getent hosts foo.local
если вы просто хотите посмотреть IP-адрес независимо от того, является ли он mDNS или DNS. В отличиеnslookup
отgetent
команды использует GNSS C Library nsswitch, поэтому он всегда работает.Это очень просто -
nslookup
это, в частности, инструмент DNS - это часть инструментов BIND.Он просто не знает о других службах имен, к которым библиотеки
gethostbyname
обращаются, например, которые могут получить доступ через NSS, потомуnslookup
что не используетgethostbyname
и т. Д.источник