पिंग करते समय nslookup mdns का उपयोग क्यों नहीं करता है?


9

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

मैं www.local, कोई पैकेट, जबकि पैकेट पसंद करते हुए लो कैप्चर करने के लिए tcpdump का उपयोग करता हूं

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

भौतिक इंटरफ़ेस से दिखाई दिया।

जिसका मतलब है कि पिंग mdns का उपयोग कर रहा है, लेकिन nslookup mdns का उपयोग क्यों नहीं करता है? पिंग सामान्य डीएनएस का उपयोग क्यों नहीं करेगा जब mdns उपयोगी फल नहीं लौटाता है?

धन्यवाद।

जवाबों:


8

pingGlibc के नाम रिज़ॉल्यूशन सिस्टम का उपयोग करें, जिसका नाम सेवा स्विच है। यह /etc/nsswitch.confपता करने के लिए फ़ाइल का उपयोग करता है कि किसी आईपी को नाम हल करने के लिए कहां देखना है। hosts:इस फाइल में लाइन प्रत्येक सेवा के लिए प्राथमिकता का क्रम प्रतिनिधित्व करता है। छूट के लिए, filesस्थानीय /etc/hostsफ़ाइल का प्रतिनिधित्व करें, DNS सर्वर से संपर्क करने के dnsलिए /etc/resolv.confफ़ाइल का mdnsउपयोग करता है , और mdns का उपयोग करता है।

हालाँकि, nslookupइसका उपयोग नहीं करता है। यह निर्दिष्ट DNS सर्वर से सीधे बात करता है /etc/resolv.confऔर इसलिए इसका उपयोग नहीं कर सकता है mdns

लेकिन मैं आपके आखिरी सवाल का जवाब नहीं दे सकता। तुम दोनों है, तो mdnsऔर dnsमें /etc/nsswitch.conf, यहां तक कि के साथ mdnsपहले, यह सबसे पहले साथ नाम को हल करने की कोशिश करनी चाहिए mdns, तो अगर कोई जवाब नहीं उपयोग dns


धन्यवाद @priernov, मुझे अपने अंतिम उत्तर का उत्तर भी मिला, जो कि लाइन "होस्ट: फाइलें mdns4_minimal [NOTFOUND = return] dns myhostname" में nsswitch.conf है, अगर कोई mdns आईपी नहीं मिला तो यह वापस आ जाएगा।
dspjm

1
वास्तव में nslookup सर्वर 224.0.0.251 और पोर्ट 5353 निर्दिष्ट करके एक .local पते को हल करने के लिए मनाया जा सकता है: nslookup इंटरैक्टिव मोड दर्ज करें, 'सर्वर 224.0.0.251', 'सेट पोर्ट = 5353, और फिर होस्टनाम को हल करने के लिए जैसे'। Microknoppix.local '। (2 डेबियन सिस्टम पर परीक्षण किया गया। माइक्रोसॉफ्ट द्वारा आपूर्ति की गई विंडोज़ 10 nslookup.exe पर काम नहीं करता है, जो कि isc.org/downloads/bind से डाउनलोड होता है)
NameOfTheRose

वैसे, getent hosts foo.localयदि आप केवल एक आईपी पते को देखना चाहते हैं , तो इसका उपयोग करें चाहे वह mDNS हो या DNS। इसके विपरीत nslookup, getentकमांड GNU C लाइब्रेरी के nsswitch का उपयोग करता है, इसलिए यह हमेशा काम करता है।
हैकर 9

3

यह बहुत आसान है - nslookupहै विशेष रूप से यह BIND उपकरण का हिस्सा - एक DNS उपकरण।

यह बस अन्य नाम सेवाओं के बारे में नहीं जानता है जो पुस्तकालय कॉल करते हैं जैसे कि gethostbynameएनएसएस के माध्यम से पहुंच सकते हैं क्योंकि nslookupउपयोग नहीं करते हैं gethostbyname, आदि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.