Di dnsmasq.conf:
address=/local/127.0.0.1
Dalam 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
Saya bisa menggunakan nslookup:
# nslookup www.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.local
Address: 127.0.0.1
Tapi saya tidak bisa menggunakan ping:
# ping www.local
ping: unknown host www.local
Saya menggunakan tcpdump untuk menangkap lo sambil ping www.local, tidak ada paket, sementara paket suka
# 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)
muncul dari antarmuka fisik.
Yang berarti ping menggunakan mdns, tetapi mengapa nslookup tidak menggunakan mdns? Mengapa ping tidak akan menggunakan dns normal ketika mdns tidak mengembalikan nilai berguna?
Terima kasih.
getent hosts foo.local
jika Anda hanya ingin mencari alamat IP terlepas dari apakah itu mDNS atau DNS. Tidak seperti itunslookup
,getent
perintah ini menggunakan nsswitch Perpustakaan GNU C, jadi selalu berhasil.Ini sangat sederhana -
nslookup
secara khusus alat DNS - itu bagian dari alat BIND.Itu hanya tidak tahu tentang layanan nama lain yang panggilan perpustakaan seperti
gethostbyname
dapat mengakses melalui NSS karenanslookup
tidak digunakangethostbyname
, dll.sumber