इंटरनेट कनेक्शन के बिना भी जब ओएस एक्स पर DNS सर्वर सेट करें


17

मैंने स्थापित DNS सर्वर (Dnsmasq का स्थानीय उदाहरण) को कॉन्फ़िगर किया है, जो स्थानीय होस्ट को हल करता है जैसा मैं चाहता हूं, ठीक है।

जब मैं ऑफ़लाइन जाता हूं, तो यह काम करना बंद कर देता है, क्योंकि OS X, resolv.conf की खाली सामग्री और इस फ़ाइल में परिवर्तनों को प्रतिबिंबित करने के प्रयास को अनदेखा करता है।

कोई भी विचार, ऑफ़लाइन होने पर भी DNS को कैसे कॉन्फ़िगर किया जाए?

इसी तरह का मुद्दा (अनसुलझे): http://blog.steamshift.com/geek/leopard-lookupd-and-local-web-development-sites

मुख्य प्रेरणा RoR अनुप्रयोग का सहज विकास है जो खाता कुंजी के रूप में उप डोमेन का उपयोग करता है। और आप 127.0.0.1 * .yourapp.local इन / etc / होस्ट का उपयोग नहीं कर सकते हैं। कुछ लोग पंजीकृत डोमेन smackaho.st और srt DNS को इसके लिए पसंद करते हैं .smackaho.st 127.0.0.1 पर, लेकिन फिर भी, आप इसका उपयोग तब नहीं कर सकते जब आप ऑफ़लाइन काम कर रहे हों।

संपादित करें: स्कूटिल कमांड की कोशिश की, लेकिन ऐसा लगता है कि आप ऑफ़लाइन होने पर DNS को बदल सकते हैं

ध्यान दें: जब आपके पास सभी इंटरफेस होते हैं, तो आप DNS सर्वर को Pref में सेट नहीं कर सकते। पैनल।


संबंधित: सुपर यूजर पर OS X Yosemite में इंटरनेट कनेक्शन के बिना काम नहीं कर रहे dnsmasq (एक समाधान लेकिन कुछ संदर्भ के बिना)।
अर्जन

जवाबों:


29

अद्यतन नीचे देखें!

मुझे अपने स्थानीय मशीन पर Dnsmasq का उपयोग करने में भी मजा आता है, और मुझे भी यह समस्या थी। यहाँ समाधान है:

से man 5 resolver:

The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.

/etc/resolver/डिफ़ॉल्ट रूप से मौजूद नहीं है; आप इसे स्वयं बनाएं।

मैन पेज से भी:

domain
  Domain name associated with this resolver configuration. This
  option is normally not required by the Mac OS X DNS search system
  when the resolver configuration is read from a file in the
  /etc/resolver directory. In that case the file name is used as the
  domain name.

इसलिए यदि आप चाहते थे कि सभी शीर्ष स्तर के डोमेन के devस्थानीय प्रश्नों को रेंडर किया जाए, तो आप निम्न करेंगे:

# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev

configdफ़ाइलों में परिवर्तन नहीं करता है /etc/resolver/, इसलिए यह सेटिंग नेटवर्क परिवर्तन और रिबूट के माध्यम से बनी रहेगी।

अद्यतन 17 जुलाई 2012

दुर्भाग्य से, ओएस एक्स लायन के रूप में, शीर्ष रिज़ॉल्वर (जैसा कि दिखाया गया है scutil --dns) गायब हो जाता है जब कोई इंटरफेस सक्रिय नहीं होता है:

# scutil --dns # Online
DNS configuration

resolver #1
  nameserver[0] : 127.0.0.1

...

resolver #8
  domain   : dev
  nameserver[0] : 127.0.0.1

# scutil --dns # Offline
DNS configuration

resolver #1

...

resolver #8
  domain   : dev
  nameserver[0] : 127.0.0.1

ध्यान दें कि रिज़ॉल्वर # 1 खाली है, लेकिन / etc / resolver व्युत्पन्न नेमसेवर प्रविष्टि बनी हुई है।

यह पता चला है कि चूंकि आप रिज़ॉल्वर डोमेन को सीधे / etc / resolver / फ़ाइल में निर्दिष्ट कर सकते हैं, इसलिए विशेष इंटरनेट रूट डोमेन को निर्दिष्ट करने . से एक वैश्विक रिज़ॉल्वर प्रविष्टि का निर्माण होता है जो इस तरह दिखता है:

resolver #8
  nameserver[0] : 127.0.0.1

अब ऑफ़लाइन होने पर भी सभी DNS प्रश्नों को लोकलहोस्ट में भेज दिया जाता है।

बेशक, आपको अभी भी अपने चुने हुए डोमेन को 127.0.0.1 के रूप में हल करना होगा।

# dnsmasq --address=/dev/127.0.0.1

संक्षेप में:

  • अपने सभी नेटवर्क इंटरफ़ेस डीएनएस सर्वर को 127.0.0.1 पर सेट करें:
    networksetup -setdnsservers ईथरनेट 127.0.0.1
    networksetup -setdnsservers वाई-फाई 127.0.0.1
    ...
  • एक फ़ाइल बनाएँ / आदि / रिज़ॉल्वर / जो भी:
    नेमवर 127.0.0.1
    डोमेन ।
  • स्थानीय DNS सर्वर सेट करें और खुश रहें।

सीएफ http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c


यह वही है जो pow उपयोग कर रहा है ( pow.cx )।
देल्टारर

लेकिन दुर्भाग्य से यह काम नहीं करता है - github.com/37signals/pow/issues/104
daeltar

3
@ इस समाधान अभी भी yosemite में काम करता है? जब तक मैंने अपग्रेड नहीं किया मेरे लिए dnsmasq ऑफ़लाइन काम कर रहा था। अब मुझे जो भी मिलता है जब मैं scutil --dnsइंटरनेट से जुड़ा होता हूं तो मुझे जो कुछ भी मिलता है वह है कि No DNS configuration available मैं आपके निर्देशों का पालन करता हूं, लेकिन भाग्य से नहीं
मैथ्यू लीला

1
@MatthewLee, हाँ आप सही कह रहे हैं, ऐसा लगता है कि चारों ओर एकमात्र काम होस्ट्स फ़ाइल में प्रविष्टियाँ जोड़ रहा है।
लैन्सियल

1
किसी को अभी तक योसेमाइट के लिए एक समाधान मिला?
jmagnusson

2

इसके बजाय / आदि / मेजबानों में प्रविष्टियाँ क्यों नहीं बनाते? मुझे ऐसी स्थिति के बारे में सोचने में परेशानी हो रही है जहाँ आपको वास्तव में पूर्ण विकसित डीएनएस सर्वर चलाने की आवश्यकता होगी। मैं अपने मैक पर इस तरह की चीजों को पूरा करने के लिए हर समय होस्ट फ़ाइल प्रविष्टियों का उपयोग करता हूं।

OS X में रिज़ॉल्वर लिनक्स या अन्य यूनिक्स की तुलना में अलग तरह से काम करता है। यह संभवतः आपके दुख का कारण है। उदाहरण के लिए, इसकी प्राथमिकताएँ हैं कि किस विधि के लिए पहले प्रयोग किया जाए और यह सभी प्रश्नों के परिणामों को समय के लिए रोक दे।

क्या आपने नेटवर्क प्राथमिकता फलक में इंटरफ़ेस में DNS सर्वर जोड़ा है? यह सुनिश्चित करना चाहिए कि रिज़ॉल्वर उस सर्वर का उपयोग करता है जिसके लिए यह प्रश्न है कि उसे DNS प्रविष्टि के लिए देखने का निर्णय लेना चाहिए।


क्लाइंट मशीन पर डीएनएस फारवर्डर का उपयोग करने का एक कारण है कि प्रत्येक अनुरोध पर अब फूला हुआ मेजबानों की फाइल को रिसॉल्वर डेमॉन के प्रदर्शन का दंड भुगतने के बिना विज्ञापन / मैलवेयर डोमेन की एक बड़ी ब्लैकलिस्ट को बनाए रखना है। इस दृष्टिकोण के गुण के बावजूद, dnsmasq लोड / आदि / मेमोरी में होस्ट करता है जहां लुकअप समय छोटा होगा। इसके अलावा, यदि आप वेब विकास करते हैं, तो यह आपको हर उस साइट के लिए स्थानीय डोमेन जोड़ने के छोटे उपद्रव से बचने की अनुमति देता है, जिस पर आप काम कर रहे हैं।
बंदूकों

1

(उत्तर देने के लिए बी / सी मैं अभी तक टिप्पणी नहीं कर सकता ...)

आप ऑफ़लाइन कैसे हो रहे हैं?

(सबसे अच्छा जवाब मुझे अभी मिला है)

# man -S 5 resolver
 .
 .
 .
 Note that the /etc/resolv.conf file,
 which contains configuration for the default (or "primary") DNS resolver
 client, is maintained automatically by Mac OS X and should not be edited manu-
 ally.  Changes to the DNS configuration should be made by using the Network
 Preferences panel.

तो, आपको यूआई में कुछ दर्ज करने में सक्षम होना चाहिए, और इसे छड़ी करना चाहिए। जब मैंने DNS सर्वर को अपना स्थानीय डीएचसीपी सर्वर प्रदान नहीं किया था, तो मैंने इसे दो बार किया था।


NetworkPreferences में DNS-कॉन्फ़िगरेशन बदलने से /etc/resolv.conf फ़ाइल बदल जाती है।
फेबियन जींदल

0

क्या OSX में /etc/dhcp3/dhclient.conf कॉन्फ़िगरेशन फ़ाइल है जो सामान्य लिनक्स / UNIX DHCP क्लाइंट कॉन्फ़िगरेशन है?

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

prepend domain-name-servers 127.0.0.1;

DHCP क्लाइंट के लिए हमेशा उस लाइन को अपने resolv.conf में जोड़ें


Resolv.conf में जोड़ने से OS X पर मदद नहीं मिल रही है। resolv.conf की सामग्री उत्पन्न होती है और स्वयं /var/run/resolv.conf पर सहानुभूति होती है और यहां तक ​​कि जब मैं /var/run/resolv.conf बदलता हूं तो यह परिवर्तन को प्रतिबिंबित नहीं करता है। ।
देल्टारर

0

स्थिर पते और 127.0.0.1 के साथ कॉन्फ़िगर की गई दूसरी ईथरनेट सेवा को अपने DNS सर्वर के रूप में जोड़ने का प्रयास करें। या, एक नेटवर्क स्थान जोड़ें जो आपके DNS सर्वर को 127.0.0.1 पर सेट करता है। ये दोनों परिवर्तन "सिस्टम वरीयताएँ" "नेटवर्क" पैनल के तहत किए जाएंगे।


-2

यह सिर्फ डालने में मदद कर सकता है

127.0.0.1       localhost

/ etc / host में, इसलिए इसे लोकलहोस्ट खोजने के लिए रिज़ॉल्वर की आवश्यकता नहीं है।


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