2012-06-13 19 views
38

मैं DNS कैशिंग के बारे में उलझन में हूं। मैं एक छोटा आगे प्रॉक्सी सर्वर लिख रहा हूं और लिनक्स सिस्टम पर ओएस डीएनएस कैश का उपयोग करना चाहता हूं।लिनक्स में DNS कैशिंग

यदि मैं सही ढंग से समझता हूं, तो ब्राउज़र स्तर पर DNS कैशिंग है। फिर ओएस स्तर पर DNS कैशिंग है (विंडोज़ में यह है। मुझे यकीन नहीं है कि लिनक्स डिस्ट्रोज़ डिफ़ॉल्ट रूप से है)।

तो, ब्राउज़र/proxy_server ओएस DNS कैशिंग का उपयोग कैसे करता है? मैं यह खोजने की कोशिश कर रहा हूं कि क्या मैं अपने प्रॉक्सी के अंदर अपने आप को करने के बजाय DNS कैशिंग के लिए लिनक्स पर भरोसा कर सकता हूं।

धन्यवाद

+0

ओएस कैशिंग पर भरोसा करते हैं। –

+0

यदि आपके पास प्रॉक्सी है, तो DNS कैश प्रॉक्सी में है। उदाहरण के लिए स्क्विड, इसका अपना DNS कैश और रिज़ॉल्यूवर है। –

उत्तर

62

लिनक्स (और शायद सबसे यूनिक्स) पर, वहाँ कोई ओएस-स्तर DNS कैशिंग जब तक nscd स्थापित किया है और चल रहा है है। फिर भी, एनएससीडी की DNS कैशिंग सुविधा कम से कम डेबियन में अक्षम होती है क्योंकि it's broken। व्यावहारिक अपशॉट यह है कि आपका लिनक्स सिस्टम बहुत अधिक संभवतः ओएस-स्तरीय DNS कैशिंग नहीं करता है।

diegows की टिप्पणी के अनुसार, आप अपने आवेदन में अपने कैश को लागू कर सकते हैं (जैसे उन्होंने स्क्विड के लिए किया था), लेकिन मैं इसके खिलाफ अनुशंसा करता हूं। यह बहुत काम है, इसे गलत करना आसान है (एनएससीडी इसे गलत मिला !!!), यह संभवतः एक समर्पित DNS कैश के रूप में आसानी से ट्यून करने योग्य नहीं होगा, और यह कार्यक्षमता को डुप्लिकेट करता है जो आपके एप्लिकेशन के बाहर पहले से मौजूद है।

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

+0

अरे, धन्यवाद। एक और प्रश्न। क्या आप जानते हैं कि यह विंडोज़ पर ब्राउज़र में कैसे काम करता है। मैंने पढ़ा है कि क्रोम ओएस डीएनएस कैश पर निर्भर करता है। तो, क्या इसका मतलब है कि एप्लिकेशन ओएस डीएनएस कैश तक पहुंच सकते हैं? आम तौर पर, डीएनएस रिज़ॉल्यूशन (कैशिंग के संदर्भ में) के लिए प्रवाह क्या होता है। यदि ब्राउज़र एक को बनाए रखता है तो ब्राउज़र अपने स्वयं के कैश की जांच करता है। तो क्या यह ओएस से पूछता है या यह ओएस डीएनएस कैश पढ़ता है? अगर कोई प्रविष्टि नहीं मिलती है तो यह संकल्प के लिए बाहर जाती है। –

+5

जब एक ओएस-स्तरीय कैश उपलब्ध होता है, तो यह सभी अनुप्रयोगों द्वारा स्वचालित रूप से और पारदर्शी रूप से उपयोग किया जाता है जब तक कि एप्लिकेशन मानक नाम क्वेरीिंग API ('getaddrinfo() 'et al।) को छोड़ देता है और सीधे अपने DNS क्वेरी लागू करता है। यह बिना शर्त रूप से मैकोज़ एक्स पर लागू होता है, और यह लिनक्स पर लागू होता है अगर किसी मौके से एनएससीडी चल रहा है और सक्रिय है (एमएस विंडोज़ के लिए बात नहीं कर सकता)। यदि कोई एप्लिकेशन अपने कैश को लागू करता है, तो यह किसी भी ओएस-स्तरीय कैश के अतिरिक्त लागू होता है जो मौजूद हो सकता है या नहीं (फिर से, जब तक कि एप्लिकेशन ओएस को छोड़कर सीधे पूछताछ न हो)। – Celada

+2

@ सेलाडा आप 'लिनक्स (और शायद अधिकांश यूनिक्स) के लिए एक स्रोत प्रदान कर सकते हैं, तब तक कोई ओएस-स्तरीय DNS कैशिंग नहीं है जब तक कि nscd इंस्टॉल नहीं हो रहा है।'? मैं किसी भी भाग्य के साथ चारों ओर गुगल ... – cYrus

19

यहाँ दो अन्य सॉफ्टवेयर संकुल जो लिनक्स पर DNS कैशिंग के लिए इस्तेमाल किया जा सकता है:

  • dnsmasq
  • बाँध

DNS अग्रेषण और कैशिंग के लिए सॉफ्टवेयर को विन्यस्त के बाद, आप सेट /etc/resolv.conf में सिस्टम का DNS रिज़ॉल्वर 127.0.0.1 तक।

आपके सिस्टम NetworkManager का उपयोग कर रहा है, तो आप /etc/NetworkManager/NetworkManager.conf में dns=dnsmasq विकल्प का उपयोग करने की कोशिश कर सकते या तो या आप स्वत: से आपका कनेक्शन सेटिंग्स बदल सकते हैं (पता केवल) और फिर, डीएचसीपी नेम सर्वर पाने के लिए /etc/NetworkManager/dispatcher.d निर्देशिका में एक स्क्रिप्ट का उपयोग यह सेट आपके DNS कैश सॉफ़्टवेयर में DNS फॉरवर्डिंग सर्वर के रूप में और उसके बाद कॉन्फ़िगरेशन रीलोड ट्रिगर करें।

+1

आजकल 'systemd' पर [एक और है] (https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html), इसे' systemctl को systemd-resolved सक्षम करने 'के साथ सक्षम किया जा सकता है। –

2

फ़ायरफ़ॉक्स में एक डीएनएस कैश होता है। के बारे में में

  1. खोलें आपके ब्राउज़र
  2. प्रकार: DNS कैश को अक्षम करने के एड्रेस बार में config
  3. सही संदर्भ मेनू में गुण की सूची पर क्लिक करें और नया> पूर्णांक
  4. वरीयता नाम के रूप में 'network.dnsCacheExpiration' दर्ज करें और 0 पूर्णांक मान

अक्षम होने पर, फ़ायरफ़ॉक्स ओएस द्वारा प्रदान किए गए DNS कैश का उपयोग करेगा।

4

आपने यहां dnsmasq का उपयोग करके DNS Caching in Debian का एक उदाहरण उपलब्ध कराया है।

संबंधित मुद्दे