मैक OSX लायन डीएनएस लुकअप ऑर्डर [बंद]


96

मैक OSX लायन में अपग्रेड करने के बाद मुझे पता चला कि / etc / host नाम रिज़ॉल्यूशन के लिए पहले स्थान पर नहीं हैं। इससे कुछ दुष्प्रभाव होते हैं जैसे:

  1. / Etc / मेजबानों में प्रविष्टियाँ कष्टदायी रूप से धीमी गति से हल की जाती हैं
  2. आप मौजूदा डोमेन, जैसे 127.0.0.1 www.google.com को ओवरराइड नहीं कर सकते
  3. यदि आपको डीएचसीपी से खोज डोमेन प्रविष्टियां मिलती हैं, तो कहने दें।

क्या यह व्यवहार इरादा है? क्या इसका कोई अर्थ बनता है? और सबसे महत्वपूर्ण, मैं पुराने व्यवहार पर वापस कैसे आ सकता हूं।


12
सुपर उपयोगी प्रश्न - आश्चर्य, इसके बंद विषय के रूप में आश्चर्यचकित करें
सेबस्टियन पैटन

कम से कम उन्होंने धागा नहीं हटाया है .. फिर भी। इससे मेरी बेकन बच गई। मैंने अपने सभी मेजबानों को X.local से X.lhost में बदल दिया और समस्या चली गई। एक तरफ ध्यान दें पर मैं xip.io जैसे का एक बड़ा प्रशंसक हूँ foo.127.0.0.1.xip.io
टिम

जवाबों:


78

मुझे लगता है कि वह मामला है शेर संभालती है। अलग-अलग TLD क्योंकि यह कुछ मल्टीकास्ट DNS सुविधाओं (बोंजोर द्वारा उपयोग) के लिए आरक्षित है। इस मुद्दे को हल करने का एकमात्र तरीका मुझे विकास होस्ट (यानी: .देव) के लिए एक अलग TLD का उपयोग करना है। यह मेरे लिए ठीक काम करता है, आशा है कि यह दूसरों के लिए उपयोगी होगा!


धन्यवाद। वास्तव में बहुत उपयोगी है।
कैड

5
मेरा पहला विचार "लंगड़ा" था। हालाँकि, फिर मैं इस अन्य स्टैक पोस्ट पर ठोकर खाई और अपना रुख बदल दिया: serverfault.com/questions/17255/…
मैट बेकमैन

एक नोट - यदि आप विकास के लिए क्रोम का उपयोग करते हैं, तो गैर-मानक शीर्ष स्तर के डोमेन को खोज के रूप में व्याख्या किया जाएगा। आपको वास्तविक डोमेन लुकअप करने के लिए .dev.com जैसा कुछ करने की आवश्यकता हो सकती है। मुझे यकीन नहीं है कि यह कैसे सुरुचिपूर्ण ढंग से करना है।
बब्रनाम

5
@bbrame: आप url योजना के साथ अपने स्थानीय डोमेन में प्रवेश कर सकते हैं http://foo.dev/:; उसके बाद, Chrome को एहसास होगा कि foo.devएक डोमेन है और एक क्वेरी नहीं है।
बंदूकें

वैकल्पिक रूप से आप अपवाद जोड़ने के लिए dscl टूल का उपयोग कर सकते हैं
आर्टुर बोडेरा

51

मेजबान फ़ाइल में डोमेन ओवरराइड करने के संबंध में, मैंने पाया है कि कुछ परिस्थितियों में, शेर एक डोमेन के लिए IPv6 पते पर सवाल उठाता है अगर उसे होश आता है कि एक डोमेन IPv4 नेटवर्क पर पहुंच से बाहर है।

मुझे यह पता चला जब मैंने कुछ ऐसे विज्ञापन देखे जो मैंने स्नो लेपर्ड पर पहले कभी नहीं देखे थे क्योंकि मैंने विज्ञापन डोमेन को पुनः निर्देशित किया था 127.0.0.1। मैंने AAAAआईपीवी 4 के बाद वायरशार्क और नोट (आईपीवी 6 डीएनएस रिकॉर्ड) प्रश्नों को हटा दियाA प्रश्नों (आईपीवी 4) के । विज्ञापन सर्वरों के पास वास्तव में IPv6 के ऐडसेन्स हैं और वे मुझे अपनी सामग्री प्रदान करने में सक्षम थे।

इसका समाधान एक है

::1 mydomain.com

हर के लिए प्रवेश

127.0.0.1 mydomain.com

अपने मेजबान फ़ाइल में प्रवेश।

दिलचस्प बात यह है कि यदि आप स्थानीय वेबसर्वर पर चल रहे हैं 127.0.0.1:80और आपके ब्राउज़र को वेबसर्वर (त्रुटि या अन्यथा) से प्रतिक्रिया मिलती है, तो कोई AAAAक्वेरी जारी नहीं की जाती है, क्योंकि यह संतुष्ट होने के लिए लगता है कि टीसीपी कनेक्शन कम से कम संभव था।


संबंधित नोट पर, यदि आप मेजबानों की फाइल का भारी उपयोग करते हैं (एडब्लॉकिंग, स्थानीय वेब विकास आदि के लिए), तो आप अपने स्वयं के स्थानीय DNS रिज़ॉल्वर को देखना चाह सकते हैं। /etc/hostsप्रत्येक अनुरोध पर पढ़ने के लिए काफी डिस्क / सीपीयू हिट है , इसलिए उस फ़ाइल को बहुत हल्का रखना आपके हित में है।

dnsmasqस्थानीय रूप से (महत्वपूर्ण प्रदर्शन को बढ़ावा देने के अलावा) जैसे कुछ चलाने का एक फायदा यह है कि आप पूरे शीर्ष-स्तरीय डोमेन को अपने स्थानीय मशीन पर वापस भेज सकते हैं। यह आपको विकास के लिए पूरे * .dev नाम स्थान (उदाहरण के लिए) की अनुमति देता है, व्यक्तिगत रूप से हर उस डोमेन को दर्ज किए बिना जिसे आप स्थानीय रूप से हल करना चाहते हैं।/etc/hosts


3
इस लिए आपका बहुत - बहुत धन्यवाद। मेरे कोड में परिवर्तनों का परीक्षण करने के लिए 10-30 सेकंड की प्रतीक्षा करना मुझे पागल कर रहा था और आपने मुझे यह पता लगाने के लिए नहीं होने से एक टन समय बचाया।
ज़ैक एंजेलो

1
मेरे पास एक ही मुद्दा था, और इसने मेरी समस्या को तुरंत ठीक कर दिया! अच्छा लगा।
cstrat

1
+1 यह "मेरे होस्ट फ़ाइल काम क्यों नहीं करता है" के लिए खोज करने वाले किसी भी व्यक्ति के लिए एक महान टिडबिट है। मैं यहाँ उस प्रश्न को पूछ सकता हूँ ताकि आप एक ही उत्तर वहाँ रख सकें और खोज इंजन के माध्यम से खोजना आसान बना सकें!
कैप १२३२

पढ़ने से डिस्क I / O में कोई सराहनीय वृद्धि नहीं होनी चाहिए /etc/hosts- यदि यह अक्सर उपयोग किया जाता है तो ओएस फ़ाइल को कैश कर देगा।
दान प्रिट्स

जिन उपयोगकर्ताओं का LANs IPv6 का समर्थन करता है (यह लगभग 2016 का है, सब के बाद!) अब से इस समस्या का सामना करेगा जब तक कि IPv4 पूरी तरह से चला नहीं जाता है .... या जब तक Apple समस्या पर उठाता है और आंतरिक रूप से हल करता है! जीन-बैप्टिस्ट की प्रतिक्रिया पर भी विचार किया जाना चाहिए (यानी, अपने देव वातावरण के लिए .local के बजाय .dev का उपयोग करें)।
बेजोड़

17

समस्या यह थी कि मैंने / etc / मेजबान फ़ाइल को सहानुभूति दी थी। यदि / etc / मेजबान एक सादा फ़ाइल है तो सब कुछ ठीक है।


1
मुझे भी यही तकलीफ़ है। हालाँकि, मेरी / etc / मेजबान फ़ाइल एक सामान्य फ़ाइल है। इस मुद्दे पर किसी प्रकार की मदद की सराहना की जाएगी।
मैट

4
ऐसा प्रतीत होता है कि यह मेरा मुद्दा भी है। मेरे पास मेरे ड्रॉपबॉक्स फ़ोल्डर में एक फ़ाइल के लिए एक सहानुभूति थी, जो काम करती थी और जो मुझे लगता था कि वह शक्तिशाली थी। ऐसा प्रतीत होगा कि Apple को अब यह चतुर नहीं लगता है। मैंने एक वास्तविक फ़ाइल के लिए एक सिमलिंक से स्थानांतरित करने के बाद विकल्प-पुनरारंभ का उपयोग करके एक पूर्ण वास्तविक पुनरारंभ भी किया। अब सब कुछ खुश लग रहा है।
टॉम एस।

2
सह-होस्टेड फ़ाइल में प्रविष्टियाँ ठीक हैं यदि उन्हें अन्यथा हल नहीं किया जा सकता है, तो यह इंगित करता है कि सिम्क्लिन की गई होस्ट फ़ाइल की केवल तभी जाँच की जाती है जब कोई पता अन्यथा हल नहीं किया जा सकता है। जब मेजबानों की फाइल एक सामान्य फ़ाइल होती है, तो इसे किसी अन्य प्रकार के रिज़ॉल्यूशन से पहले जांचा जाता है। इसलिए यदि आपको उन डोमेन को ओवरराइड करने की आवश्यकता है जिनके पास वास्तव में वैध डीएनएस प्रविष्टियां हैं, तो आपकी मेजबानों की फाइल एक फाइल होनी चाहिए, न कि एक सिमलिंक।
सेर्बेरोस

1
रिकॉर्ड के लिए, यह अभी भी Mavericks में मामला है (10.9), उपयोगी होगा यदि कोई पुष्टि कर सकता है कि योसमाइट क्या करता है ...
विलियम Turrell

1
योसेमाइट इसे भी करता है, बस इस समस्या में भाग गया। यह बेहद अजीब व्यवहार है।
व्याटुटास गिंबुतस

14

अद्यतन (2): OSX 10.10.5 की वापसी लाता है mDNSResponder

अपडेट: OSX 10.10 योसेमाइट ने mDNSResponder को "डिस्कवरी" के साथ बदल दिया है। मैंने अपग्रेड नहीं किया है, इसलिए मुझे डिस्कवरी व्यवहार w / r / t DNS लुकअप और के बारे में निश्चित नहीं है/etc/hosts के बारे में निश्चित नहीं है

सिंह पर सिस्टम DNS रिज़ॉल्वर है mDNSResponder प्रक्रिया है।

आप सोच रहे होंगे "लेकिन mDNSResponder मल्टीकास्ट डेन्स रेस्पोंडर है।" आप सही हे; यह वही है जो मूल रूप से था, और यह अभी भी इस कार्य को पूरा करता है। हालाँकि, नए MacOS संस्करणों पर यह मानक होस्ट लुकअप भी करता है।

लायन में, /etc/hostsजब यह बदलता है, तो यह स्वचालित रूप से फिर से पढ़ने के लिए प्रकट नहीं होता है , कम से कम हमेशा नहीं। हत्या mDNSResponder(और इसे स्वचालित रूप से पुनरारंभ करने की अनुमति देना) समस्या को ठीक करने के लिए लगता है।

sudo killall mDNSResponder

चाल चलनी चाहिए।

नीचे पोस्टर के लिए मेरा मूल जवाब है। मुझे लगता है कि यह अभी भी कुछ मामलों में एक मुद्दा हो सकता है।

सुनिश्चित करें कि आपकी /etc/hostsफ़ाइल एक यूनिक्स शैली की टेक्स्ट फ़ाइल है, जिसमें cr की बजाय समाप्ति के रूप में लाइनफ़ीड है।

TextWrangler या एक यूनिक्स टेक्स्ट एडिटर के साथ फाइल को संरक्षित करना चाहिए।

यदि आपकी फ़ाइल पहले से ही गड़बड़ है, तो इसे ठीक करने का प्रयास करें

tr '\015' '\012' < /etc/hosts > /tmp/hosts.$$
mv /etc/hosts /etc/hosts.bad
mv /tmp/hosts.$$ /etc/hosts
# fix up permissions while we are at it
chown root:wheel /etc/hosts
chmod 644 /etc/hosts

इस फिक्स के लिए क्रेडिट:

http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns


यह एक दुर्घटनाग्रस्त DNS रिज़ॉल्वर डेमॉन के साथ एक समस्या को हल कर सकता है, लेकिन यह मेजबान को लैन आईपी पते को हल करने की समस्या को हल नहीं करता है जो अक्सर देव वातावरण में सामना किया जाता है। खोज में इस सवाल का पता लगाने के लिए नीचे दिए गए @guns प्रतिक्रिया, ज्यादातर लोगों के लिए सही समाधान होगा; हालांकि जीन-बैप्टिस्ट-मोनिन के पास गुणों के साथ एक उत्तर भी है।
बेजोड़

यह देखा जा रहा है कि / / आदि के लिए परिवर्तन की समस्या को हल कर सकते हैं।
दान प्रिट्स

मैं उच्च सिएरा का उपयोग कर रहा हूं और यह उत्तर उर्फ ​​समस्या को हल करता है, धन्यवाद
Absolutkarlos

4

ive के पास कुछ समय के लिए यह मुद्दा था, क्योंकि देवों की एक टीम के काम करने के लिए यह वास्तव में उपयोग करने के लिए आवश्यक हो गया था। इसके बजाय .dev या .localhost, मैंने इस लेख को बहुत उपयोगी पाया।

iTand.me - शेर स्थानीय डोमेन और आदि मेजबान ।।

संक्षेप में;

लेकिन अगर आपको .local का उपयोग करना है, तो मैंने पाया सबसे सुंदर समाधान dscl उपयोगिता है। इसका उपयोग करना बहुत सीधा है। Mydev.local नामक एक होस्ट को जोड़ने और स्थानीयहोस्ट को इंगित करने के लिए, बस यह करें:

sudo dscl localhost -create /Local/Default/Hosts/mydev.local IPAddress 127.0.0.1

वर्तमान में परिभाषित सभी होस्ट और उनके आईपी को देखने के लिए

sudo dscl localhost -list /Local/Default/Hosts IPAddress

और एक मेजबान को दूर करने के लिए:

sudo dscl localhost -delete /Local/Default/Hosts/mydev.local

कुल मिलाकर, बहुत सीधा और अच्छा काम करता है। मैं अभी भी इसके बजाय / etc / मेजबान को संपादित करने में सक्षम होना पसंद करूंगा, लेकिन यह हमारे सभी .local सर्वरों का नाम बदलने के लिए एक बेहतर विकल्प है।


3
इस तरह एक hostname जोड़ते समय, यह प्रतीत होता है कि कुछ भी नहीं करता है। पता पिंग नहीं कर सकता। उदाहरण: sudo dscl localhost -create / Local / Default / Hosts / test1 IPAddress 127.0.0.1 पिंग test1 पिंग: test1 को हल नहीं कर सकता: अज्ञात होस्ट
oligofren

3

स्नो लेपर्ड से शेर की ओर बढ़ने से पहले, मेरे पास कई ऐप-विशिष्ट प्रविष्टियाँ थीं /etc/hosts, जैसे:

127.0.0.1 foo.bar.local

अपडेट के बाद, मेरे स्थानीय ऐप्स लोड करना बहुत धीमा था। मैंने देखा कि अनुरोध लॉग फ़ाइल में दिखाए जाने से पहले देरी हो गई थी, और यह कि एक बार ऐसा करने के बाद, एप्लिकेशन खुद को हमेशा की तरह तेज था।

अब मेरे पास प्रति ऐप दो लाइनें हैं, जैसे:

127.0.0.1 foo.bar.local
::1       foo.bar.local

... और सब कुछ फिर से तेज है।

जाहिरा तौर पर यह IPv6 पते जोड़ता है? मैं इसे वास्तव में नहीं मिलता, लेकिन यह काम करता है।


मेरे लिए और कुछ नहीं काम किया लेकिन यह एक पल में किया - धन्यवाद नाथन!
foiseworth

3

मेरी स्थिति भी ऐसी ही थी, लेकिन देरी, केवल 5 सेकंड के लिए, केवल '.local' के साथ समाप्त होने वाले URL के लिए हुई। Dev .dev ’में समाप्त होने वाली साइटों को देखने पर, कोई देरी नहीं हुई।

मेरे कार्यालय के कुछ अन्य डेवलपर्स को यह समस्या थी, जबकि कुछ को नहीं। मैं एक साधारण सुधार की उम्मीद कर रहा था और मैं अन्य निर्भरता के कारण साइट का नाम बदलकर '.Local' नहीं करना चाहता था।

मैंने टर्मिनल में निम्न कमांड चलाई और कार्यालय में कुछ अन्य उपयोगकर्ताओं के साथ अपने आउटपुट को अलग किया।

scutil --dns

यह खंड एकमात्र अंतर था:

resolver #2
  domain   : 00000000.members.btmm.icloud.com
  options  : pdns
  timeout  : 5
  order    : 150000

मेरा मैक मेरे iCloud खाते से जुड़ा हुआ था और मेरे पास बैक टू माय मैक सक्षम था। एक बार जब मैंने बैक टू माई मैक को निष्क्रिय कर दिया, तो अतिरिक्त रिज़ॉल्वर चली गई और 5 सेकंड की देरी गायब हो गई।


1

वाह, क्या बुरा सपना है। मैंने इस विषय पर पूरी तरह से सब कुछ पढ़ा है और जो कुछ भी अब तक सुझाया गया है वह तांत्रिक रूप से मेरे अनुभव के करीब था, लेकिन किसी भी समाधान ने मेरे लिए काम नहीं किया।

और मुझे लगा कि क्यों।

दूसरों के विपरीत, मैं स्थानीय डोमेन सेट करने के लिए / etc / host का उपयोग नहीं कर रहा था। मेरे / etc / मेजबान फ़ाइल स्टॉक थी, जिसमें केवल लूपबैक इंटरफ़ेस और प्रसारण होस्ट के लिए आवश्यक प्रविष्टियाँ थीं। इसके अलावा, यह एक सही ढंग से एन्कोडेड यूनिक्स फ़ाइल थी, क्योंकि मैं उस व्यक्ति की तरह हूं, जो केवल कमांड-लाइन से ही ई-मेल का उपयोग कर उसे संपादित करेगा। और, धन्यवाद के लिए, मुझे समस्या के आसपास जाने के लिए DNSmasq जैसे अपने DNS सर्वर को चलाने का सहारा नहीं लेना पड़ा।

(स्पष्ट होने के लिए, मुझे इस मुद्दे पर लाने वाला लक्षण यह था कि एमएसीएस को शुरू होने में लगभग 10 सेकंड लगते हैं, लेकिन केवल जब मैं वाईफाई पर था। यदि मैंने वाईफाई बंद कर दिया, तो एमएसीएस उम्मीद के मुताबिक तुरंत शुरू हो जाएगा।)

मेरा समाधान: मेरे लैपटॉप का एक नाम है, "टर्मिनेटर"। (हां, इसकी चमकदार एल्यूमीनियम बाहरी ने मुझे अर्नोल्ड श्वार्ज़नेगर चरित्र के बारे में सोचा।) मुझे मशीन के नाम के लिए / / आदि / मेजबानों में प्रविष्टियों को जोड़ने की ज़रूरत है:

127.0.0.1   terminator
::1         terminator

मैंने टर्मिनल में एक साधारण कमांड चलाकर अपने मेजबान का नाम पाया:

hostname

... जो आउटपुट के साथ वापस आया: "टर्मिनेटर"। उन दो प्रविष्टियों को शामिल करने के लिए / etc / मेजबानों को बदलने के बाद, emacs अब जल्दी से मेरे लैपटॉप का नाम हल कर सकते हैं।

मुझे उम्मीद है इससे किसी को सहायता मिलेगी।


1
ऐसा लगता है कि मेरे लिए अभी काम किया है। हम देखेंगे कि क्या यह धारण करता है। मुझे लगता है कि आपने यह पता लगा लिया है, क्योंकि मैंने रुक-रुक कर इस समस्या को w / o चेतावनी के रूप में देखा है।
जेरेमी कार्लसन

गोली मार। यह मेरे लिए स्थायी समाधान नहीं है। समस्या वापस। माइंड यू, जैसा कि मैंने इसे दोबारा पढ़ा, मेरा मुद्दा आपका नहीं है ...
जेरेमी कार्लसन

0

मैं एक वेब विकास बॉक्स के रूप में OSX शेर का उपयोग कर मुद्दों की गति है ... मैं IPv6 नेटवर्किंग को अक्षम करने और स्थानीयहोस्टेव के लिए ipv6 को रूट करने के लिए सुझाव का एक संयोजन का उपयोग कर ... चीजों को काफी थोड़ा ...

sudo networksetup -setv6off Ethernet

/ आदि / मेजबान ...

127.0.0.1    localhost
127.0.0.1    dev.aliasdomain.com
... 
::1          localhost6 

0

मुझे लगता है कि कुछ बग फिक्स किए गए हैं। मैंने बहुत सी समस्याओं का उल्लेख किया है, और इनमें से कोई भी वर्तमान में लागू नहीं होता है (उदाहरण के लिए, एक ही पंक्ति में कई उपनाम रखने से अब मेरे लिए ठीक काम होता है)।

किसी भी दर पर ऐसा लगता है कि लायन के साथ, Apple ने mDNSResponder में कुछ कठोर बदलाव किए, जो सभी DNS लुकअप को हैंडल करता है, और (कम से कम लायन के साथ) भी / etc / होस्ट कैशिंग को हैंडल करता है। मेरे लिए फॉरवर्ड लुक्स भी अब काम करते हैं। लेकिन रिवर्स लुकअप (उदाहरण के लिए google.com के बजाय 1.2.3.4 को देखना) काम नहीं करता है।

बहुत दर्द के बाद, ऐसा लग रहा है कि mDNSResponder इस लुकअप को 4.3.2.1.in-addr.arpa में कनवर्ट करता है और नाम लुकअप करता है। यह अच्छी तरह से हो सकता है कि DNS कैसे काम करना पसंद करता है, लेकिन यह / etc / मेजबान के साथ बिल्कुल भी काम नहीं करता है।

जब तक आप प्रत्येक मेजबान के लिए 4.3.2.1.in-addr.arpa का एक उपनाम नहीं जोड़ते, जहां 4.3.2.1 विपरीत क्रम में आईपी पता है, जहां से आप इसे देखने के आदी हैं। यह मेरे लिए सब कुछ ठीक करता है। यहाँ एक उदाहरण / etc / मेजबान प्रविष्टि है:

1.2.3.4 foo foo.example.com alias.example.com 4.3.2.1.in-addr.arpa

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