DNS लुकअप विफल हो जाते हैं जैसे कि `पिंग`, लेकिन` होस्ट` के साथ काम करना


35

मैं pfSense 2.0rc3 का उपयोग कर रहा हूं, और मैंने इसे एक डीएनएस फारवर्डर के रूप में स्थापित किया है और "रजिस्टर डीएचसीपी लीज इन डीएनएस फारवर्डर" सक्षम किया है और जो मैं समझता हूं कि स्थानीय लुकअप के लिए डीएनएस सर्वर प्राप्त करने के लिए सभी उपयुक्त सेटिंग्स हैं।

यह लिनक्स के साथ अपेक्षा के अनुसार काम करता है और विशेष रूप से मैं चला सकता हूं host abcऔर ping abc(और अन्य अनुप्रयोगों) और वे सभी अपेक्षा के अनुरूप काम करते हैं।

हालाँकि Mac OS X Lion 10.7 में यह अपेक्षा के अनुरूप काम नहीं करता है। विशेष रूप से, केवल hostकमांड के साथ लुकअप काम करने लगता है, अर्थात

$ ping abc
ping: cannot resolve abc: Unknown host

$ host abc
abc.local has address 192.168.1.128

$ ping abc.local
ping: cannot resolve abc.local: Unknown host

$ host abc.local
abc.local has address 192.168.1.128

कमांड abcका उपयोग करते समय काम के लिए लुकअप क्यों होता है (और अन्य एप्लिकेशन) के hostसाथ विफल ping?

पढ़ने के लिए धन्यवाद।


मैं एक नए Yosemite (10.10) MBP पर इसी स्थिति के साथ समाप्त हुआ। बहुत खोज और कॉन्फ़िगर करने के बाद, यहां दिया गया जवाब है कि काम किया: apple.stackexchange.com/a/152892 रिकॉर्ड के लिए जो बिना किसी भी है --AlwaysAppendSearchDomains कॉन्फ़िगरेशन
स्टेन कुर्दिज़िल

जवाबों:


26

उन्होंने यह बदलाव क्यों किया, मुझे नहीं पता, लेकिन इसने मुझे कुछ समय के लिए पागल कर दिया।

मुझे नहीं पता कि चीजें होस्ट के लिए क्यों काम करती हैं, लेकिन पिंग नहीं, लेकिन मुझे लगता है कि इसका इन दो उपयोगिताओं की प्रकृति के साथ क्या करना है। पिंग तार पर पैकेट छोड़ने के लिए एक सरल (हालांकि बहुत उपयोगी) नैदानिक ​​उपयोगिता है जिसे आपको वापस गूँजना चाहिए। होस्टनाम लुकअप कार्यक्षमता कार्य का केवल एक साइड इफेक्ट है और सिस्टम के पुनरावर्ती रिज़ॉल्वर को सौंप दिया गया है (मेरा मानना ​​है - मैंने लिंक किए गए पुस्तकालयों या उस प्रकार के कुछ भी की जाँच करके सत्यापित नहीं किया है)। होस्ट का मुख्य काम DNS नाम रिज़ॉल्यूशन करना है, इसलिए यह अपने स्वयं के पुनरावर्ती रिज़ॉल्वर को लागू करता है।

Apple का पुनरावर्ती रिसोल्यूशन mDNSResponder है। किसी कारण के लिए, शेर में mDNSResponder के संस्करण को "-AlwaysAppendSearchDomains" कमांड लाइन विकल्प की आवश्यकता है ताकि वह बर्फीले तेंदुए (कम से कम) में व्यवहार कर सके।

इसे ठीक करने का एक त्वरित तरीका यहां दिया गया है:

sudo sed -i .orig '/ProgramArguments/,/<\/array>/ {
s/\(<string>-launchd<\/string>\)/\1\
                <string>-AlwaysAppendSearchDomains<\/string>/
}' /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

(ऊपर की दूसरी पंक्ति के शुरू में दो टैब वर्ण होने चाहिए, लेकिन मैं यह पता नहीं लगा सका कि टैब को सम्मिलित करने के लिए इस छोटे संपादक को कैसे प्राप्त किया जाए, इसलिए मैंने 16 स्थान जोड़े हैं। या तो काम करना चाहिए, लेकिन टैब। मूल फ़ाइल के रिक्ति को बेहतर तरीके से फिट करें।)

यह mDNSResponder स्टार्टअप plist फ़ाइल (और बैकअप प्रतिलिपि को सहेजने) में "-AlwaysAppendSearchDomains" तर्क जोड़ देगा, लेकिन चूंकि इसे लॉन्च द्वारा नियंत्रित किया जाता है, इसलिए सिस्टम को mSNSResponder को पुनरारंभ करने के लिए कहा जाना चाहिए।

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

अब, यदि आप अपने रनिंग mDNSResponder प्रक्रिया की जांच करते हैं, तो आपको इसे अपने नए तर्क के साथ चलना चाहिए:

ps auxww | grep mDNSResponder

( Http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html और http://kavassalis.com/2011/07/wtf-bug पर प्रॉप्स -इन-ओएस-एक्स-10-7 / , जहां मुझे इस समस्या के लिए मेरे उत्तर मिले।)


यह फिक्स माउंटेन लायन (10.8) के लिए भी काम करता है। मैंने इसे सिर्फ अपने लैपटॉप पर लागू किया।
सिगसेव

ठंडा! मैं खुशी से मदद कर सकता है।
सिगसेव

1
FYI करें: यह Yosemite के तहत काम नहीं किया। यदि आपको Yosemite पर AlwaysAppendSearchDomains की आवश्यकता है, तो प्रयास करें: apple.stackexchange.com/a/157017/65787 जो Yosemite पर मेरे लिए .local समस्या को हल नहीं करता था, लेकिन यह =) apple.stackexchange.com/a/152892
Stan Kurdziel।

एल कैप्टन में काम नहीं। और ऐसा करने का आसान तरीका लगता हैsudo defaults write /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ProgramArguments -array-add "–AlwaysAppendSearchDomains"
दिमित्री वेरखोट्रोव

9

होस्ट (1) मैन पेज से:

मैक ओएस एक्स नोट

होस्ट कमांड, होस्ट नाम और पता रिज़ॉल्यूशन या मैक ओएस एक्स पर चलने वाली अन्य प्रक्रियाओं द्वारा उपयोग की जाने वाली DNS क्वेरी रूटिंग तंत्र का उपयोग नहीं करता है। होस्ट द्वारा मुद्रित नाम या पते के प्रश्नों के परिणाम मैक का उपयोग करने वाली अन्य प्रक्रियाओं द्वारा पाए गए से भिन्न हो सकते हैं। ओएस एक्स मूल नाम और पता रिज़ॉल्यूशन तंत्र। DNS प्रश्नों के परिणाम मैक ओएस एक्स DNS रूटिंग लाइब्रेरी का उपयोग करने वाले प्रश्नों से भी भिन्न हो सकते हैं।

दुर्भाग्यवश, इस बात की कोई जानकारी नहीं है कि होस्ट कमांड मेजबान नामों को वास्तव में कैसे हल करता है। यह व्यवहार इसे डिबगिंग, IMHO के लिए कुछ हद तक बेकार बनाता है।


6

मूल इतिहास ... nslookup कमांड था, लेकिन यह सभी इसे फिर से शुरू करने वाली दिनचर्या का कार्यान्वयन था। जो शुरू हुआ वह यह था कि विभिन्न प्लेटफार्मों पर सिस्टम रिज़ॉल्वर nslookup से अलग तरीके से काम करते थे। कभी-कभी, यह कुछ अलग परिणाम देगा।

होस्ट और खुदाई आदेश nslookup के लिए "पुनर्लेखन" के रूप में बनाए गए थे। वे सिस्टम रिज़ॉल्वर फ़ंक्शंस में स्टेटिकली लिंक करते हैं। सिस्टम रिज़ॉल्वर UNIX या UNIX जैसी प्रणाली के मानक C लाइब्रेरी में फ़ंक्शन का एक संग्रह है (मैक ओएस एक्स पर, ये फ़ंक्शन नेटबेड लाइब्रेरी का हिस्सा हैं)। ऐसा करने से, होस्ट और डिग कमांड हमेशा उसी तरह से कार्य करता है जिस तरह से सिस्टम रिवाल्वर ओएस के लिए जो भी बनाया जाता है, उसके लिए करता है, लेकिन वे इस पर भरोसा नहीं करते हैं। इस तरह, वे उन मामलों में उत्कृष्ट नैदानिक ​​उपकरण हैं जहां सिस्टम रिज़ॉल्वर खराब है।

ध्यान दें: होस्ट और खुदाई दोनों ने नेमसर्वर सूची को /etc/resolv.conf से पढ़ा जब तक कि उन्हें बात करने के लिए एक विशिष्ट नाम नहीं दिया जाता है। केवल होस्ट कमांड /etc/resolv.conf फ़ाइल में खोज सूची का उपयोग करता है; खुदाई नहीं करता है, यही कारण है कि किसी को कुछ भी हल करने के लिए हमेशा खुदाई करना चाहिए। दोनों कमांड अन्यथा पूरी तरह से आत्मनिर्भर हैं; उदाहरण के लिए, /etc/resolv.conf फ़ाइल केवल द्विआधारी फ़ाइल में नहीं है जो वे उपयोग करते हैं।

mDNSresponder बोनजोर है। मैंने इसे बहुत गहराई से नहीं खोदा है, लेकिन मुझे संदेह है कि यह कॉन्फ़िगरेशन सेटिंग इसे या कम से कम, सीधे नहीं ठीक कर रही है। मैं बस मैक ओएस एक्स 10.9.1 पर इसी समस्या का अनुभव किया है और बस mDNSresponder को पुनरारंभ करना मेरे लिए इसे निर्धारित किया है। मैंने इस समस्या को 10.5 -> 10.8 / 10.9 से पहले किसी अन्य सिस्टम पर कभी नहीं देखा है। इसके अलावा, GUI एप्लिकेशन इससे अप्रभावित थे, यह केवल कमांड लाइन टूल था, जैसे कि पिंग और ssh जो टूट गया।

यदि मुझे लाइब्रेरी के माध्यम से खुदाई करने का समय थोड़ा अधिक लगता है, तो मैं देखूंगा कि क्या मैं अधिक संपूर्ण स्पष्टीकरण पा सकता हूं।


4

मैंने फिक्स को स्वचालित करने के लिए एक शेल स्क्रिप्ट को एक साथ रखा है (और अगर आपको बाद में इसकी आवश्यकता है तो एक अनइंस्टॉलर), यहां:

https://github.com/michthom/AlwaysAppendSearchDomains

यह कम-तकनीकी उपयोगकर्ताओं को काम पर देने के लिए था जो मैन्युअल रूप से संपादन सिस्टम फ़ाइलों से दूर हो सकते हैं।


4

.local मल्टीकास्ट के लिए आरक्षित है। एक ही नेटवर्क पर mDNS और DNS सर्वरों का उपयोग करके .local समस्याग्रस्त हो सकता है।


1
मैं यहाँ एक स्पष्टीकरण या कुछ प्रलेखन के लिए एक लिंक से अधिक प्यार करता हूँ। Tidbit के लिए धन्यवाद!
bmike

3

होस्ट .local dns प्रत्यय को जोड़ रहा है। पिंग नहीं है। यदि आपको यह डिसऑर्डरिंग लगता है, तो आप नेटवर्क सिस्टम वरीयताओं में डिफ़ॉल्ट प्रत्यय के रूप में .Local जोड़ सकते हैं और होस्टनामों को हल करने का प्रयास करते समय सिस्टम इसे जोड़ देगा।


यह एक अच्छा बिंदु है, और खेद है कि मैंने प्रश्न में ऐसा नहीं कहा, लेकिन ping abc.localया तो काम नहीं करता (हालांकि host abc.localकरता है)। मैंने सवाल तय कर दिया है। जब यह DHCP पट्टे को भेजता है, तो pfSense स्थानीय डोमेन को एक खोज डोमेन के रूप में जोड़ता है, ताकि यह समस्या न हो।
ब्रायन एम। हंट

वाह - अजीब। यदि आप स्थानीय रूप से अनुगामी के साथ पूरी तरह से अर्हता प्राप्त करते हैं तो क्या होगा। ? ping abc.local.
bmike

1
एक ही परिणाम। स्पष्ट रूप से मैक में दो लुकअप मैकेनिज्म हैं। वे अलग क्यों कल्पना करना मुश्किल है।
ब्रायन एम। हंट

मैं इतना स्पष्ट नहीं हूं कि यह उत्तर योसेमाइट और अन्य नए ओएस पर काम करता है। शायद हम एक बेहतर उत्तर प्राप्त कर सकते हैं ?
bmike

प्रलेखन चेतावनी है कि फ़ाइल / etc / होस्ट केवल एकल-उपयोगकर्ता मोड में उपयोग की जाती हैं। सच नहीं। मैं / आदि / मेजबानों में अपना नाम डालकर बहुत से बुरे लोगों की अनजाने में पहुंच को रोकने के लिए 127.0.0.1 रूटिंग करता हूं। मुझे नहीं लगता कि यह इस मामले के लिए मायने रखता है, हालांकि यह निश्चित रूप से दिखाता है कि Apple में कुछ विषमताएं हैं। मैंने यह भी नोट किया कि OS X बार-बार मेरे resolv.conf को बदल रहा था, इसलिए मैंने हर दस मिनट में जो चाहा था, उसे बहाल करने के लिए क्रोन जॉब सेट किया।
WGroleau

2

यदि आपने उपरोक्त सभी को आजमाया है और कुछ भी काम नहीं किया है तो आप अपने नेमवेरर्स और सर्च पाथ को जोड़ सकते हैंSystem Preferences>Network>Advance(bottom right of the window)>DNS tab यहाँ छवि विवरण दर्ज करें

यह अपडेट /etc/resolv.conf और पिंग अब काम करना चाहिए। /Etc/resolv.conf संपादन द्वारा खोज पथ को अपडेट करना वास्तव में काम नहीं करता है लेकिन यह किसी कारण से होता है।

अद्यतन करें:

संपादन /etc/resolv.conf इसलिए काम नहीं करता क्योंकि OS सिस्टम वरीयता फलक सेटिंग के आधार पर फ़ाइल को फिर से लिखता है।


1
"संपादन /etc/resolv.conf वास्तव में काम नहीं करता है" क्योंकि OS इसे प्रीफ़ पेन के आधार पर फिर से लिखता है।
WGroleau

1
इसने वास्तव में स्वीकृत उत्तर के विपरीत मेरे लिए चाल चली।
आर्टेम पायनैख

1

लामोंट पीटरसन की पोस्ट पर टिप्पणी करने के लिए मेरे पास पर्याप्त प्रतिष्ठा नहीं है । MDNSresponder को पुनः आरंभ करना मेरे लिए Mac OS X 10.7 (Lion) पर काम किया। लामोंट पीटरसन के विपरीत, इस मुद्दे ने मेरे लिए एक जीयूआई आवेदन के साथ समस्याएं पैदा कीं - सफारी सार्वजनिक या निजी होस्टनामों को हल नहीं कर सका। यहाँ विशिष्ट चरण हैं जो मैंने किए थे और मुझे संदेह है कि लमोंट पीटरसन ने भी किया था:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSresponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSresponder.plist

unloadनीचे mDNSresponder बन्द हो जाता है और loadयह शुरू होता है फिर से।

इससे समस्या तुरंत हल हो गई; कोई रिबूट की आवश्यकता नहीं है।

आप जाँच कर सकते हैं कि यह listकमांड का उपयोग करके सफलतापूर्वक पुनः आरंभ किया गया है:

$ sudo launchctl list | grep '^PID\|mDNSResponder'
PID     Status  Label
708     -       com.apple.mDNSResponder
-       0       com.apple.mDNSResponderHelper

प्रोसेस आईडी (PID) की उपस्थिति का अर्थ है कि यह चल रही है। 708यह ओएस द्वारा निर्दिष्ट के रूप में भिन्न होगा। यदि स्थिति एक हाइफ़न या शून्य के अलावा कुछ दिखाती है, तो कुछ गलत हो गया।

मुझे नहीं पता कि कैसे mDNSResponderHelperबातचीत करता है mDNSResponder; मैं केवल कभी पुनरारंभ करना पड़ा है mDNSResponder



0

OSX नामों पर pls नोट गैर-मानक हो सकते हैं, इसलिए पूर्णता के लिए:

  • FQDN pingable हैं
  • "होस्ट" फ़ाइलों में नाम पिंग करने योग्य हैं

मैक नाम सामान्य रूप से नहीं हैं: दो फिक्स किए जाने चाहिए: ए) रिक्त स्थान को "-" बी) जोड़ दें

उदाहरण के लिए मेरे मैक: ingconti के मैकबुक प्रो

पर pingable होगा: ingcontis-MacBook-Pro.local

और प्रीफ़ोज़ खोलकर आप देख सकते हैं:

यहाँ छवि विवरण दर्ज करें

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