... टूटे हुए DNS सर्वरों की भरपाई करने के लिए जो हमारे नियंत्रण से बाहर हैं।
हमारी समस्या: हम एम्बेडेड उपकरणों को तैनात करते हैं, जो विभिन्न डेटा संवेदक डेटा एकत्र करते हैं, ज्यादातर IPv4- केवल साइट्स। कुछ साइटों में खराब तरीके से बनाए गए नेटवर्क हैं, उदाहरण के लिए गलत तरीके से या अन्यथा टूटे हुए DNS कैश और / या फ़ायरवॉल जो या तो AAAA प्रश्नों को पूरी तरह से अनदेखा करते हैं, या टूटे हुए उत्तरों (जैसे गलत स्रोत आईपी!) के साथ उनका जवाब देते हैं। सुविधा विभाग के लिए एक बाहरी आपूर्तिकर्ता के रूप में, हमारे पास (कभी-कभी अनिच्छुक) आईटी विभागों पर कोई प्रभाव नहीं है। उनके DNS सर्वर / फ़ायरवॉल को ठीक करने की संभावना किसी भी समय जल्द ही घट जाती है।
हमारे डिवाइस पर प्रभाव यह है कि प्रत्येक gethostbyname () के साथ, प्रक्रियाओं को AAAA प्रश्नों के आउट होने तक इंतजार करना पड़ता है, जिस बिंदु पर कुछ प्रक्रियाओं ने अपने कनेक्शन के प्रयासों को पूरी तरह से समाप्त कर दिया है।
मैं उन समाधानों की तलाश में हूं जो ...
- प्रणाली विस्तृत। मैं व्यक्तिगत रूप से दर्जनों एप्लिकेशन को पुन: कॉन्फ़िगर नहीं कर सकता
- गैर-स्थायी और विन्यास योग्य। हमें IPv6 को फिर से चालू करने की आवश्यकता है, जहां / जब इसे ठीक किया जाए / रोल आउट किया जाए। रिबूट ठीक है।
- अगर किसी समाधान के लिए ग्लोबक जैसी कोर लाइब्रेरी की आवश्यकता होती है, तो रिप्लेसमेंट लाइब्रेरी पैकेज एक ज्ञात-से-सुव्यवस्थित रिपॉजिटरी (जैसे डेबियन टेस्टिंग, उबंटू ब्रह्मांड, ईपीईएल) से उपलब्ध होना चाहिए। सेल्फ-बिल्डिंग इतने कारणों से एक विकल्प नहीं है कि मुझे यह भी पता नहीं है कि कहां से शुरू करना है, इसलिए मैं उन्हें बिल्कुल सूचीबद्ध नहीं करता ...
सबसे स्पष्ट समाधान resolver लाइब्रेरी को कॉन्फ़िगर करना होगा, जैसे / etc / { resolv , nsswitch , gai } .conf द्वारा AAAA रिकॉर्ड्स को क्वेरी न करने के लिए। यहाँno-inet6
सुझाए अनुसार एक resolv.conf विकल्प वही होगा जो मैं देख रहा हूँ। दुर्भाग्य से यह लागू नहीं है, कम से कम हमारे सिस्टम पर नहीं (libc6-2.13-38 + deb7u4 डेबियन 7 पर; libc6-2.19-0ubuntu6.3 Ubuntu 14.04 पर)
तो फिर कैसे? एक एसएफ और अन्य जगहों पर सुझाए गए निम्नलिखित तरीकों को खोजता है, लेकिन उनमें से गैर काम करते हैं:
- IPv6 को पूरी तरह से अक्षम करना, जैसे /etc/modprobe.d/, या में IPv6 LKM को ब्लैकलिस्ट करके
sysctl -w net.ipv6.conf.all.disable_ipv6=1
। ( जिज्ञासा से बाहर: एएएए के लिए रिज़ॉल्वर क्यों पूछ रहा है जहां आईपीवी 6 अक्षम है? ) options inet6
/Etc/resolv.conf से निकाल रहा है। यह पहले स्थान पर नहीं था,inet6
बस इन दिनों डिफ़ॉल्ट रूप से सक्षम है।options single-request
/Etc/resolv.conf में सेटिंग । यह केवल यह सुनिश्चित करता है कि A और AAAA क्वेरी समानांतर के बजाय क्रमिक रूप से की जाती हैंprecedence
/Etc/gai.conf में बदल रहा है। DNS प्रश्नों को प्रभावित नहीं करता है, केवल कई उत्तरों को कैसे संसाधित किया जाता है।- बाहरी रिज़ॉल्वर का उपयोग करना (या टूटी हुई डीएनएस सर्वरों को खत्म करने वाली एक स्थानीय रिज़ॉल्वर डेमॉन चलाने में) मदद करेगा, लेकिन आमतौर पर कंपनी की फ़ायरवॉल नीतियों द्वारा अस्वीकृत हो जाता है। और यह आंतरिक संसाधनों को दुर्गम बना सकता है।
वैकल्पिक बदसूरत विचार:
- स्थानीय होस्ट पर DNS कैश चलाएँ। इसे सभी गैर-AAAA प्रश्नों को अग्रेषित करने के लिए कॉन्फ़िगर करें, लेकिन NOAAROR या NXDOMAIN (इसी A- क्वेरी के परिणाम के आधार पर) के साथ AAAA प्रश्नों का उत्तर दें। हालांकि, मैं ऐसा करने में सक्षम DNS कैश के बारे में नहीं जानता।
- कुछ चतुर iptables u32 मैच, या Ondrej Caletka के iptables DNS मॉड्यूल का उपयोग AAAA प्रश्नों से मिलान करने के लिए करें, उन्हें या तो icmp-reject करने के लिए (रिवाल्वर lib उस पर प्रतिक्रिया कैसे करेगा?), या उन्हें प्रतिक्रिया देने वाले स्थानीय DNS सर्वर पर पुनर्निर्देशित करेगा? एक खाली NOERROR के साथ सब कुछ।
ध्यान दें कि एसई पर समान, संबंधित प्रश्न हैं। मेरा प्रश्न अलग-अलग है क्योंकि यह वास्तविक समस्या को हल करने की कोशिश कर रहा है जिसे मैं हल करने की कोशिश कर रहा हूं, क्योंकि यह स्पष्ट आवश्यकताओं को सूचीबद्ध करता है, क्योंकि यह कुछ अक्सर सुझाए गए गैर-कार्यशील समाधानों को ब्लैक लिस्ट करता है, और चूंकि यह एक एकल अनुप्रयोग के लिए विशिष्ट नहीं है। इस चर्चा के बाद , मैंने अपना प्रश्न पोस्ट किया।