Pinglook neden nslookup neden mdns kullanmıyor?


9

Dnsmasq.conf dosyasında:

address=/local/127.0.0.1

Resolv.conf dosyasında:

# Generated by NetworkManager
domain example.com
search example.com
nameserver 127.0.0.1
nameserver 10.66.127.17
nameserver 10.68.5.26

Ben nslookup kullanabilirsiniz:

# nslookup www.local
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   www.local
Address: 127.0.0.1

Ama ping kullanamıyorum:

# ping www.local
ping: unknown host www.local

Www.local'a ping işlemi yaparken loc yakalamak için tcpdump kullanıyorum, paket yok,

# 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)

fiziksel arayüzden ortaya çıktı.

Hangi ping mdns kullanıyor, ama nslookup neden mdns kullanmıyor? Mdns yararlı hata döndürmediğinde neden ping normal dns kullanmıyor?

Teşekkürler.

Yanıtlar:


8

pingglibc'nin Name Service Switch adlı ad çözümleme sistemini kullanın. Bu, /etc/nsswitch.confbir IP'ye bir ad çözümlemek için nerede arayacağını bilmek için dosyayı kullanır . hosts:Bu dosyadaki satır her hizmet için tercih sıralaması temsil eder. Exemple için, filesyerel temsil /etc/hostsdosyasını dnskullanan /etc/resolv.confbir DNS sunucusu ile bağlantı dosyası ve mdnskullanımları mdns.

Ancak, nslookupbunu kullanmaz. Doğrudan belirtilen DNS sunucusuyla konuşur /etc/resolv.confve kullanılamaz mdns.

Ama son sorunuza cevap veremem. Eğer her ikisi de varsa mdnsve dnsde /etc/nsswitch.confhatta birlikte, mdnsilk, öncelikle birlikte adını çözümlemeye çalışmalısınız mdns, daha sonra eğer cevap kullanımını dns.


Teşekkürler @priernov, nsswitch.conf içinde "ana: files mdns4_minimal [NOTFOUND = return] dns myhostname" satırı olan son cevabımın cevabını da buldum, eğer mdns ip bulunmazsa dönecektir.
dspjm

1
Aslında nslookup, sunucu 224.0.0.251 ve bağlantı noktası 5353'ü belirterek bir .local adresini çözümlemeye ikna edilebilir: nslookup etkileşimli moduna girin, 'sunucu 224.0.0.251', 'bağlantı noktası = 5353' olarak ayarlayın ve ardından çözülecek ana bilgisayar adı ' Microknoppix.local'. (2 debian sistemde test edilmiştir. Microsoft tarafından sağlanan Windows 10 nslookup.exe'de çalışmaz, isc.org/downloads/bind adresinden indirilen çalışır )
NameOfTheRose

Bu arada, getent hosts foo.localmDNS veya DNS olmasına bakılmaksızın sadece bir IP adresi aramak istiyorsanız kullanın. Komutun aksine nslookup, getentkomut GNU C Kütüphanesinin nsswitch'ini kullanır, bu yüzden her zaman çalışır.
hackerb9

3

Çok basit - nslookupolan özellikle DNS aracı - BIND araçları 's parçası.

Kitaplık çağrılarının gethostbynameNSS üzerinden erişebileceği gibi kullanmadıkları için diğer ad hizmetleri hakkında bilgi nslookupsahibi değildir gethostbyname.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.