मेरा नाम रिज़ॉल्यूशन एक होस्ट फ़ाइल प्रविष्टि के साथ भी डीएनएस को क्यों मारता है?


15

मैं Ubuntu 10.04.2 LTS डेस्कटॉप चला रहा हूं। एक वेब डेवलपर होने के नाते, स्वाभाविक रूप से मैंने अपनी /etc/hostsफ़ाइल में एक "me.com" बनाया । दुर्भाग्य से, मेरा नाम रिज़ॉल्यूशन पहले मेरे स्थानीय होस्ट्स प्रविष्टि की जाँच करने से पहले डीएनएस के लिए जा रहा है और मैं यह पता नहीं लगा सकता कि क्यों।

अंतिम परिणाम यह है कि अगर मेरे /etc/resolv.conf में nameserver 127.0.0.1पहले शामिल है, तो मुझे अपने वेब ब्राउज़र में me.com (स्थानीय) से एक सेकंड से भी कम समय में प्रतिक्रिया मिल जाती है। लेकिन अगर मेरे पास वह प्रविष्टि नहीं है, तो मेरी प्रतिक्रिया कभी-कभी 5 सेकंड के रूप में लेती है यदि मेरा आईएसपी थोड़ा धीमा है।

समस्या इतनी परेशान करने वाली थी कि मुझे वास्तव में यहां एक सवाल दर्ज करना पड़ा (और किसी ने इसे हल किया) कि कैसे उस प्रविष्टि को स्वचालित रूप से सम्मिलित किया जाए /etc/resolv.conf। लेकिन उपयोगकर्ताओं में से एक (@shellholic) ने यहां अत्यधिक अनुशंसा की (और इसके बारे में मेरे साथ आगे-पीछे टिप्पणी की) कि मुझे यह प्रश्न दर्ज करना चाहिए।

क्या आप जानते हैं कि मेरी /etc/hostsफ़ाइल प्रविष्टि को हिट करने से पहले मेरे वर्कस्टेशन के नाम रिज़ॉल्यूशन को DNS सर्वर को क्यों हिट करना है ? अभी के लिए, मैं resolv.conf ट्रिक का उपयोग कर रहा हूं ।


1
आप देखने की कोशिश कर सकते हैं /etc/nsswitch.conf। मेरे सिस्टम पर प्रविष्टियां थोड़ी गैर-स्पष्ट हैं, लेकिन आप केवल filesएक विकल्प के रूप में लुकअप का परीक्षण कर सकते हैं और देख सकते हैं कि क्या इससे कोई फर्क पड़ा।
बेलाक्वा

हाँ, आप हम में से उत्पादन दे सकता है cat /etc/nsswitch.confऔर cat /etc/host.conf? इसके अलावा: आप इसे (पिंगिंग, ब्राउज़र, पैकेट सूँघने आदि के माध्यम से) कैसे परख रहे हैं?
व्यवस्थित करें

@Arrange के पूर्ण संस्करण के लिए, क्या आप इसका परिणाम संलग्न कर सकते हैं time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts। तर्कसंगतता में बाधा डालने में संकोच न करें।
शेलहलिक

@shellholic ^ तर्कशक्ति ^ तर्कसंगत रूप से? हे।
बेलाक्वा

@jgbelacqua: वास्तव में
शेल्विक

जवाबों:


15

फ़ाइल /etc/nsswitch.confआपको नाम समाधान के क्रम को फिर से कॉन्फ़िगर करने देगी। डिफ़ॉल्ट रूप से, होस्ट फ़ाइल पहले है, फिर कॉन्फ़िगर डीएनएस। अधिक विकल्प हो सकते हैं।

फ़ाइल /etc/hostsकेवल IP पते और होस्टनाम सूचीबद्ध करती है (यदि आप चाहें तो एक आईपी के लिए कई नाम)

फ़ाइल /etc/resolv.confडिफ़ॉल्ट खोज डोमेन को सूचीबद्ध करेगी, और अनुक्रम सर्वर नाम का उपयोग करने के लिए भी सूचीबद्ध करेगी।


4
यह भी ध्यान रखें कि एक बार आपके लिनक्स बॉक्स पर किसी एप्लिकेशन या सेवा द्वारा एक नाम हल किए जाने के बाद, यह TTL (जीने के लिए समय) के रूप में ज्ञात अवधि के लिए कैश में रहेगा। इसलिए यदि आप रिज़ॉल्यूशन अनुक्रम को बदलते हैं, तो आप बेहतर तरीके से अपने सिस्टम को पुनः आरंभ करते हैं या किसी भी कैश को साफ़ करते हैं।
jfmessier

आप 'कैश' को कैसे साफ़ करते हैं?
एरिक जॉनसन

मुझे यकीन नहीं है, लेकिन ifup और ifdown कमांड के साथ नेटवर्क कनेक्शन को पुनरारंभ करने से यह हो सकता है। बेशक, रिबूटिंग को कैश को साफ करना चाहिए, लेकिन हम लिनक्स का उपयोग कर रहे हैं, है ना?
jfmessier

nscdरिज़ॉल्यूशन क्वेरी को कैश कर सकते हैं, लेकिन ttl का सम्मान नहीं करते हैं (और इसलिए होस्ट कैशिंग डिफ़ॉल्ट रूप से अक्षम है)। systemd-resolvedप्रविष्टियों को भी कैश करेगा। यदि उनमें से कोई भी कॉन्फ़िगर नहीं किया गया है, तो लिनक्स होस्ट DNS प्रतिक्रियाओं को कैश नहीं करते हैं । (हालांकि ब्राउज़र संभावना आवेदन परत पर करते हैं)
Gert van den Berg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.