OSX माउंटेन लायन के लिए DNS लुकअप को कैसे कॉन्फ़िगर किया जाता है?


33

यदि मैं अपना resolv.conf कैट करता हूं, तो मुझे यह संदेश दिखाई देता है:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

मैं एक DNS प्रविष्टि जोड़ने का प्रयास कर रहा हूं। मैंने अपनी मेजबानों की फाइल को एडिट किया और डीएनएस कैश को फ्लश किया, लेकिन अगर मैं उपयोग करता हूं तो नाम हल नहीं हो रहा है host servername। मैंने सोचा कि शायद फ़ाइल hostको देखने के लिए कॉन्फ़िगर नहीं किया गया था hosts। मैं अपनी नई प्रविष्टि को कैसे हल कर सकता हूं, और यदि नहीं तो OSX का उपयोग क्या है resolv.conf?

जवाबों:


17

होस्ट टूल केवल नामों को हल नहीं करता है (जैसा कि, सिस्टम नाम रिज़ॉल्वर का उपयोग करके) लेकिन वास्तव में क्वेरीज़ सर्वरों (जैसे कि, udp / 53 और संभवतः tcp / 53 को पैकेट भेजते हैं ) को हल करता है: यह स्थानीय hostsफ़ाइल का उपयोग नहीं जानता और न ही करता है ।

यदि आप ऑपरेटिंग सिस्टम की रिज़ॉल्वर (जैसे, gethostbyname () और इसी तरह के libc फ़ंक्शन का परीक्षण करना चाहते हैं, तो आप अपने द्वारा जोड़े गए नाम को पिंग करने का प्रयास कर सकते हैं /etc/hostsऔर यह उस फ़ाइल में आपके द्वारा डाली गई चीज़ों का सम्मान करेगा।

इसके अलावा, जैसा कि आपको पहले ही पता चला है कि मैक OSX पर DNS लुकअप का उपयोग नहीं किया जाता है /etc/resolv.conf, और जो DNS सर्वर से जुड़े हैं, उसे कॉन्फ़िगर करने का सही तरीका नेटवर्क सेटिंग्स gui और / या networksetupकमांडलाइन टूल में है। मैं ईमानदारी से नहीं जानता कि क्या आप उस क्रम को कॉन्फ़िगर कर सकते हैं जिसमें स्रोतों की कोशिश की जाती है, लेकिन मानक व्यवहार /etc/hostsपहले प्रयास करना है और उसके बाद सर्वरों को मरना है।


1
मुझे getaddrinfo के लिए एक पर्ल आवरण मिला: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22
बेन फ्लिन

26

DNS रिसोल्वर को networksetupकमांड के माध्यम से OS X में जोड़ा जा सकता है :

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

उपयुक्त के रूप में नेटवर्क कनेक्शन का नाम डालें। ये रिज़ॉल्वर resolv.conf में दिखाई देंगे क्योंकि यह स्वचालित रूप से उत्पन्न होता है, लेकिन resolv.conf में सीधे संपादन का उपयोग उन रिज़ॉल्वर में नहीं किया जाएगा। मुझे लगता है कि रिज़ॉल्वर एक प्लिस्ट में कहीं संग्रहीत हैं; मैं खोज कर वापस रिपोर्ट करूंगा।

जोड़ने के लिए संपादित: ऐसा लगता है कि DNS सर्वरों को संग्रहीत करते हुए XML plist फ़ाइल है /Library/Preferences/SystemConfiguration/preferences.plist

/ निजी / आदि / होस्ट में होस्ट फ़ाइल को विशेष नामों के लिए रिज़ॉल्यूशन को बाध्य करने के लिए काम करना चाहिए (/ आदि एक सीलिंक है / निजी / आदि)। क्या आप अपने सिंटैक्स को सत्यापित कर सकते हैं और आप सही फ़ाइल को संपादित कर रहे हैं?


तो मैं इस कमांड का उपयोग मेजबानों की फाइल को जोड़ने के लिए कर सकता हूं?
बेन फ्लिन

आप नहीं कर सकते, और आप की जरूरत नहीं है
ल्यूक404

नहीं, यदि आप होस्ट्स फ़ाइल में नाम जोड़ना चाहते हैं, तो उन्हें सीधे जोड़ें। मेजबानों की फाइल को पहले नाम हल करते समय चेक किया जाता है, उसके बाद स्थानीय रिज़ॉल्यूशन कैश और फिर आपके कॉन्फ़िगर किए गए DNS सर्वर। हालांकि इसे होस्ट करने के लिए "होस्ट" कमांड का उपयोग करना स्थानीय होस्ट फ़ाइल की जांच नहीं करेगा। परीक्षण करने का एक आसान तरीका पिंग जैसी नेटवर्क उपयोगिता का उपयोग करना होगा।
फोएबस

1
कभी-कभी इंटरफ़ेस को नासमझ नाम मिलते हैं, सटीक नाम प्राप्त करने के लिए आपको आपकी आवश्यकता हो सकती है networksetup -listallnetworkservices इसके अलावा, यदि इसमें रिक्त स्थान हैं, तो आपको पूरे नाम को एकल उद्धरण की आवश्यकता है, अर्थात:sudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4
Marcin

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