DNS सर्वर प्रतिक्रिया टाइमआउट का अनुकरण कैसे करें?


19

मुझे किसी एप्लिकेशन के व्यवहार का परीक्षण करने की आवश्यकता है जब वह टाइमआउट के कारण होस्टनाम को हल नहीं कर सकता है। स्थापना nameserver 127.0.0.1में /etc/resolv.confकाम नहीं किया: प्रासंगिक फ़ंक्शन एक अपवाद के साथ तुरंत वापस जाएँ। परीक्षण रिग Vagrant के साथ बनाया गया एक VM है जो डीएचसीपी के माध्यम से अपना आईपी पता प्राप्त करता है।

जवाबों:


11

nameserver 127.0.0.1डिफ़ॉल्ट व्यवहार पहले से ही है कि काम नहीं करेगा। इसके बजाय, एक गैर मौजूदा DNS का उपयोग करने का प्रयास करें। सुनिश्चित करने के लिए, आप यह कर सकते हैं:

nslookup example.com 192.0.2.10

यदि आपको कोई प्रतिक्रिया नहीं मिलती है, तो आप 192.0.2.10अपने DNS सर्वर के रूप में उपयोग कर सकते हैं ।


यह एक समयबाह्य उत्पादन की गारंटी नहीं है, क्योंकि 192.0.2.10 (हालांकि इसकी संभावना नहीं है) एक वास्तविक मेजबान हो सकता है, और 127.0.0.1 की तरह, यह क्वेरी करने पर तुरंत "पोर्ट अनुपलब्ध" वापस कर सकता है। कि आप सुनिश्चित हैं डीएनएस (अपने nslookup आदेश चेक की तरह) नहीं चल रहा है आप एक मेजबान आप वाकई जवाब नहीं होगा रहे हैं लेने के लिए की जरूरत है आप एक मेजबान लेने की जरूरत नहीं है सब पर
जेफ मेडन

nslookup example.com non_existent_dns_ipआउटपुट: ;; connection timed out; trying next origin ;; connection timed out; no servers could be reached
११'१६

4
@JeffMeden आप शायद जानते हैं, लेकिन रेंज 192.0.2.0/24 प्रलेखन उद्देश्यों के लिए आरक्षित है , इसलिए इसे कहीं भी इस्तेमाल नहीं किया जाना चाहिए (और किसी भी स्वाभिमानी फ़ायरवॉल द्वारा बोगन के रूप में मना कर दिया गया है)।
डब्यू

2
@ डब्यू वास्तव में एक अधिक दिलचस्प कैवेट है; प्रति कल्पना के अनुसार ट्रैफ़िक को राउटर पर अस्वीकार कर दिया जाना चाहिए जो संभवतः स्टैक के लिए "गंतव्य होस्ट करने योग्य नहीं है", जो कि एक टाइमआउट से अलग है।
जेफ मेडन

26

एक कनेक्शन टाइम-आउट तब होता है जब DNS सर्वर बिल्कुल भी प्रतिक्रिया नहीं देता है, या समय पर फैशन में प्रतिक्रिया नहीं करता है।

उदाहरण के लिए, लिनक्स सिस्टम पर अपने DNS सर्वर पर बस ट्रैफ़िक को अवरुद्ध करके पहले अनुकरण किया जा सकता है:

# iptables -I OUTPUT -p udp -d <iIP of DNS server> --dport 53 -j DROP

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

देरी पैदा करना थोड़ा अधिक शामिल है। से netemमैनुअल :

# tc qdisc add dev eth0 root handle 1: prio
# tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000
# tc qdisc add dev eth0 parent 30:1 handle 31: netem  delay 200ms 10ms distribution normal
# tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32  match ip dst <IP_of_DNS_server>/32 flowid 1:3

जो random 10ms यादृच्छिक बदलाव के साथ 200ms देरी बनाता है।


18

आपको "ब्लैक होल सर्वर" की आवश्यकता है। आप उपयोग कर सकते हैं blackhole.webpagetest.org( 72.66.115.13) जो चुपचाप सभी अनुरोधों को छोड़ देगा।

मैं इसे अन्य उत्तरों के बारे में क्यों सुझाव देता हूं, इसका कारण यह है कि इस एकमात्र उद्देश्य के लिए पूर्वोक्त सर्वर स्थापित किया गया है।

उदाहरण:

barend@shells:~$ dig example.com @72.66.115.13

; <<>> DiG 9.10.3-P4-Debian <<>> example.com @72.66.115.13
;; global options: +cmd
;; connection timed out; no servers could be reached

2
बस जब मैंने सोचा कि मैं यह सब देखूंगा; एक समर्पित सर्वर जो विशेष रूप से करता है ... कुछ भी नहीं। प्रतिभाशाली! (शायद सिर्फ एक नेटवर्क कॉन्फिग चीज़ है और फ़िल्टर-सभी फ़ायरवॉल वाला वास्तविक सर्वर नहीं है, लेकिन फिर भी)
जेफ मेडन

1
यह एक रास्पबेरी पीआई है जिसमें फायरवॉल सेट है जो सब कुछ छोड़ देता है इसलिए यह अभी भी एआरपी को जवाब देता है (बस यह सुनिश्चित करने के लिए कि ट्रैफिक आईसीएमपी पहुंच से बाहर नहीं है)।
pmeenan

@pmeenan दिलचस्प है! साझा करने के लिए धन्यवाद! (वाह, विश्वास नहीं हो सकता है कि आप सिर्फ टिप्पणी करने के लिए शामिल हुए: डी)
ग्रूवप्लेक्स

3

यदि आप अपने परीक्षण प्रणाली पर DNS सर्वर नहीं चला रहे हैं, तो आपको इसका IP पता उपयोग करने में सक्षम होना चाहिए।

आप अप्रयुक्त rfc1918 पते का उपयोग करके देख सकते हैं ।

आप एक गंतव्य पोर्ट 53 के साथ आउटगोइंग पैकेट को ब्लॉक करने के लिए अपने सर्वर के फ़ायरवॉल का उपयोग कर सकते हैं।


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