क्या खुदाई + ट्रेस हमेशा सटीक होती है?


30

जब DNS कैश की सटीकता प्रश्न में dig +traceहोती है , तो DNS रिकॉर्ड का सामना कर रहे इंटरनेट के लिए आधिकारिक उत्तर निर्धारित करने का अनुशंसित तरीका है। यह विशेष रूप से उपयोगी लगता है जब इसे साथ जोड़ा भी जाता है +additional, जो गोंद रिकॉर्ड भी दिखाता है।

कभी-कभी इस बिंदु पर कुछ असहमति होने लगती है - कुछ लोग कहते हैं कि यह स्थानीय रिसॉल्वर पर निर्भर करता है ताकि मध्यवर्ती नेमसर्वरों के आईपी पते को देखा जा सके, लेकिन कमांड आउटपुट यह संकेत नहीं देता है कि यह रूट की प्रारंभिक सूची से परे है। नेमसर्वर। यह मान लेना तर्कसंगत लगता है कि यदि +traceरूट सर्वर पर शुरू करने और अपने रास्ते को कम करने का उद्देश्य है तो यह मामला नहीं होगा । (कम से कम यदि आपके पास रूट नेमवेर्स की सही सूची है)

क्या dig +traceवास्तव में रूट नेमसर्वरों के अतीत के लिए स्थानीय रिज़ॉल्वर का उपयोग किया जाता है?

जवाबों:


26

यह स्पष्ट रूप से एक क्यू एंड ए का मंचन है, लेकिन यह अक्सर लोगों को भ्रमित करने के लिए जाता है और मुझे विषय को कवर करने वाला एक विहित प्रश्न नहीं मिल सकता है।

dig +traceएक महान नैदानिक ​​उपकरण है, लेकिन इसके डिजाइन का एक पहलू व्यापक रूप से गलत समझा गया है: हर सर्वर का आईपी जिसे क्वियर किया जाएगा, वह आपके रिसॉल्वर लाइब्रेरी से प्राप्त किया जाता है । यह बहुत आसानी से अनदेखा कर दिया जाता है और अक्सर एक समस्या बन जाती है जब आपके स्थानीय कैश के पास नामांकित कैश के लिए गलत उत्तर होता है।


विस्तृत विश्लेषण

आउटपुट के नमूने के साथ टूटना आसान है; मैं पहले एनएस के प्रतिनिधिमंडल के सामने सब कुछ छोड़ दूंगा।

; <<>> DiG 9.7.3 <<>> +trace +additional serverfault.com                                                                      

;; global options: +cmd
.                   121459  IN      NS      d.root-servers.net.
.                   121459  IN      NS      e.root-servers.net.
.                   121459  IN      NS      f.root-servers.net.
.                   121459  IN      NS      g.root-servers.net.
.                   121459  IN      NS      h.root-servers.net.
.                   121459  IN      NS      i.root-servers.net.
.                   121459  IN      NS      j.root-servers.net.
.                   121459  IN      NS      k.root-servers.net.
.                   121459  IN      NS      l.root-servers.net.
.                   121459  IN      NS      m.root-servers.net.
.                   121459  IN      NS      a.root-servers.net.
.                   121459  IN      NS      b.root-servers.net.
.                   121459  IN      NS      c.root-servers.net.
e.root-servers.net. 354907  IN      A       192.203.230.10
f.root-servers.net. 100300  IN      A       192.5.5.241
f.root-servers.net. 123073  IN      AAAA    2001:500:2f::f
g.root-servers.net. 354527  IN      A       192.112.36.4
h.root-servers.net. 354295  IN      A       128.63.2.53
h.root-servers.net. 108245  IN      AAAA    2001:500:1::803f:235
i.root-servers.net. 355208  IN      A       192.36.148.17
i.root-servers.net. 542090  IN      AAAA    2001:7fe::53
j.root-servers.net. 354526  IN      A       192.58.128.30
j.root-servers.net. 488036  IN      AAAA    2001:503:c27::2:30
k.root-servers.net. 354968  IN      A       193.0.14.129
k.root-servers.net. 431621  IN      AAAA    2001:7fd::1
l.root-servers.net. 354295  IN      A       199.7.83.42
;; Received 496 bytes from 75.75.75.75#53(75.75.75.75) in 10 ms

com.                        172800  IN      NS      m.gtld-servers.net.
com.                        172800  IN      NS      k.gtld-servers.net.
com.                        172800  IN      NS      f.gtld-servers.net.
com.                        172800  IN      NS      g.gtld-servers.net.
com.                        172800  IN      NS      b.gtld-servers.net.
com.                        172800  IN      NS      e.gtld-servers.net.
com.                        172800  IN      NS      j.gtld-servers.net.
com.                        172800  IN      NS      c.gtld-servers.net.
com.                        172800  IN      NS      l.gtld-servers.net.
com.                        172800  IN      NS      d.gtld-servers.net.
com.                        172800  IN      NS      i.gtld-servers.net.
com.                        172800  IN      NS      h.gtld-servers.net.
com.                        172800  IN      NS      a.gtld-servers.net.
a.gtld-servers.net. 172800  IN      A       192.5.6.30
a.gtld-servers.net. 172800  IN      AAAA    2001:503:a83e::2:30
b.gtld-servers.net. 172800  IN      A       192.33.14.30
b.gtld-servers.net. 172800  IN      AAAA    2001:503:231d::2:30
c.gtld-servers.net. 172800  IN      A       192.26.92.30
d.gtld-servers.net. 172800  IN      A       192.31.80.30
e.gtld-servers.net. 172800  IN      A       192.12.94.30
f.gtld-servers.net. 172800  IN      A       192.35.51.30
g.gtld-servers.net. 172800  IN      A       192.42.93.30
h.gtld-servers.net. 172800  IN      A       192.54.112.30
i.gtld-servers.net. 172800  IN      A       192.43.172.30
j.gtld-servers.net. 172800  IN      A       192.48.79.30
k.gtld-servers.net. 172800  IN      A       192.52.178.30
l.gtld-servers.net. 172800  IN      A       192.41.162.30
;; Received 505 bytes from 192.203.230.10#53(e.root-servers.net) in 13 ms
  • . IN NS(रूट नेमसर्वर) के लिए प्रारंभिक क्वेरी स्थानीय रिज़ॉल्वर को हिट करती है, जो इस मामले में कॉमकास्ट है। ( 75.75.75.75) यह स्पॉट करना आसान है।
  • अगली क्वेरी के लिए है serverfault.com. IN Aऔर इसके खिलाफ चलता है e.root-servers.net., बेतरतीब ढंग से रूट नेमवेरर्स की सूची से चुना गया जो हमें अभी मिला है। यह एक आईपी पता है 192.203.230.10, और तब से हम है +additionalसक्षम यह प्रतीत होता है गोंद से आ रही।
  • चूंकि यह serverfault.com के लिए आधिकारिक नहीं है, यह com.TLD नेमसर्वरों को सौंपा गया है ।
  • यहां आउटपुट से जो स्पष्ट नहीं है वह digयह है कि e.root-servers.net.गोंद से आईपी ​​पते को प्राप्त नहीं किया गया है।

पृष्ठभूमि में, यह वही है जो वास्तव में हुआ था:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
02:03:43.301022 IP 192.0.2.1.59900 > 75.75.75.75.53: 63418 NS? . (17)
02:03:43.327327 IP 75.75.75.75.53 > 192.0.2.1.59900: 63418 13/0/14 NS k.root-servers.net., NS l.root-servers.net., NS m.root-servers.net., NS a.root-servers.net., NS b.root-servers.net., NS c.root-servers.net., NS d.root-servers.net., NS e.root-servers.net., NS f.root-servers.net., NS g.root-servers.net., NS h.root-servers.net., NS i.root-servers.net., NS j.root-servers.net. (512)
02:03:43.333047 IP 192.0.2.1.33120 > 75.75.75.75.53: 41110+ A? e.root-servers.net. (36)
02:03:43.333096 IP 192.0.2.1.33120 > 75.75.75.75.53: 5696+ AAAA? e.root-servers.net. (36)
02:03:43.344301 IP 75.75.75.75.53 > 192.0.2.1.33120: 41110 1/0/0 A 192.203.230.10 (52)
02:03:43.344348 IP 75.75.75.75.53 > 192.0.2.1.33120: 5696 0/1/0 (96)
02:03:43.344723 IP 192.0.2.1.37085 > 192.203.230.10.53: 28583 A? serverfault.com. (33)
02:03:43.423299 IP 192.203.230.10.53 > 192.0.2.1.37085: 28583- 0/13/14 (493)

+traceधोखा दिया और गोंद को सलाह देने के बजाय अगले हॉप नेमसर्वर का आईपी पता प्राप्त करने के लिए स्थानीय रिज़ॉल्वर से परामर्श किया। ख़ुशामदी!

यह आमतौर पर "काफी अच्छा" है और अधिकांश लोगों के लिए समस्या का कारण नहीं होगा। दुर्भाग्य से, किनारे के मामले हैं। यदि किसी भी कारण से आपका अपस्ट्रीम DNS कैश नेमसर्वर के लिए गलत उत्तर प्रदान कर रहा है, तो यह मॉडल पूरी तरह से टूट जाता है।

वास्तविक दुनिया उदाहरण:

  • डोमेन समाप्त हो रहा है
  • गोंद रजिस्ट्रार पुनर्निर्देशन नेमसर्वर में पुन: अभिहित किया जाता है
  • bogus IP को ns1 और ns2.yourdomain.com के लिए कैश किया जाता है
  • डोमेन को पुनर्स्थापित गोंद के साथ नवीनीकृत किया जाता है
  • फर्जी नाम वाले आईपी के साथ कोई भी कैश लोगों को एक वेबसाइट पर भेजना जारी रखता है जो कहता है कि डोमेन बिक्री के लिए है

उपरोक्त मामले में, +traceयह सुझाव देगा कि डोमेन स्वामी के स्वयं के नेमवेर्स समस्या के स्रोत हैं, और आप एक ग्राहक को गलत तरीके से बताने से दूर हैं कि उनके सर्वर गलत हैं। चाहे वह ऐसी कोई चीज़ हो जो आप कर सकते हैं (या करने के लिए तैयार हैं) एक और कहानी है, लेकिन सही जानकारी होना ज़रूरी है।

dig +trace एक महान उपकरण है, लेकिन किसी भी उपकरण की तरह, आपको यह जानने की जरूरत है कि यह क्या करता है और क्या नहीं करता है, और अपर्याप्त साबित होने पर समस्या को मैन्युअल रूप से समस्या का निवारण कैसे करें।


संपादित करें:

यह भी ध्यान दिया जाना चाहिए कि उपनामों पर इंगित करने वाले रिकॉर्ड के dig +traceबारे में आपको चेतावनी नहीं देगा । यह एक RFC उल्लंघन है जो ISC BIND (और संभवतः अन्य) सही करने का प्रयास नहीं करेगा। यह आपके स्थानीय रूप से कॉन्फ़िगर किए गए नेमसर्वर से प्राप्त रिकॉर्ड को स्वीकार करने में पूरी तरह से खुश होगा , जबकि अगर BIND पूर्ण पुनरावृत्ति कर रहा था, तो यह एक SERVFAIL के साथ पूरे क्षेत्र को अस्वीकार कर देगा।NSCNAME+traceA

यदि गोंद मौजूद है, तो यह समस्या निवारण के लिए मुश्किल हो सकता है; यह ठीक काम करेगा जब तक कि NS रिकॉर्ड्स को ताज़ा नहीं किया जाता है , तब तक अचानक टूट जाता है। एक उपनाम पर एक रिकॉर्ड अंक जब Glueless प्रतिनिधिमंडल हमेशा BIND की पुनरावृत्ति को तोड़ देगा NS


किस बारे में +nssearch?
वॉनब्रांड

@vbrbrand अनुरोध किए गए रिकॉर्ड के लिए अपने स्थानीय रिज़ॉल्वर के खिलाफ +nssearchएक NSरिकॉर्ड लुकअप करता है , इसके बाद लौटे नेमवेरर्स में से प्रत्येक के लिए स्थानीय रिज़ॉल्वर के विरुद्ध A/ AAAAलुकअप की एक श्रृंखला होती है । यह इसी तरह कैश में फर्जी नामवर रिकॉर्ड के लिए अतिसंवेदनशील है।
एंड्रयू बी

1
तो उपाय क्या है? "खुदाई ... @server" का उपयोग करें और मैन्युअल रूप से प्रतिनिधिमंडल का पालन करें?
रमन

@ रामन हां, यह या तो है या आपको एक पुनरावर्ती सर्वर का कैश खाली करना है जो आपके पास है, क्वेरी करें, और कैश को डंप करें। (जो एक हल्के ग्राहक के विचार को हरा देता है) खुदाई आवश्यक रूप से आवश्यक प्रश्नों की संख्या को कम करने के लिए कर रही है।
एंड्रयू बी

11

रूट नेमवॉशर को खोजने के अलावा कुछ के लिए स्थानीय रिज़ॉल्वर का उपयोग किए बिना DNS रिज़ॉल्यूशन को ट्रेस करने का दूसरा तरीका, dnsgraph (पूर्ण प्रकटीकरण: मैंने यह लिखा है) का उपयोग कर रहा है। इसमें एक कमांड लाइन टूल और एक वेब संस्करण है, जिसमें से आप http://ip.seveas.net/dnsgyt/ पर एक उदाहरण पा सकते हैं

Serverfault.com के लिए उदाहरण, जो वास्तव में एक DNS समस्या है अभी:

यहां छवि विवरण दर्ज करें


4
मुझमें भरा हुआ पेडेंट यह कहना चाहता है कि यह तकनीकी रूप से जवाब नहीं है। DNS व्यवस्थापक मुझे लगता है कि यह भयानक है और पूरी तरह से परवाह नहीं करता है
एंड्रयू बी

मैं इसे एक टिप्पणी के रूप में पोस्ट करने जा रहा था, लेकिन छवि को शामिल करना चाहता था। यदि आपको लगता है कि बेहतर है तो इसे अपने उत्तर में मिलाएं।
डेनिस करसेमेकर

1
मैं चीजों के साथ ठीक हूं क्योंकि वे हैं। अगर एक मॉड लगता है अन्यथा मैं समेकित करूँगा, हालांकि।
एंड्रयू बी

0

इस थ्रेड में बहुत देर हो चुकी है, लेकिन मुझे लगता है कि सवाल का हिस्सा यह है कि एक खुदाई + ट्रेस स्थानीय रिसॉल्वर के लिए पुनरावर्ती प्रश्नों का उपयोग क्यों नहीं किया गया है और यह स्पष्टीकरण खुदाई की पूरी सटीकता के लिए प्रासंगिक है।

रूट ज़ोन के NS रिकॉर्ड्स के लिए प्रारंभिक पुनरावर्ती क्वेरी के बाद, फिर खुदाई निम्नलिखित रिज़ॉल्यूशन के तहत स्थानीय रिज़ॉल्वर को बाद के प्रश्न जारी कर सकती है:

  1. अगले पुनरावृत्त क्वेरी के लिए 512 बाइट्स से अधिक प्रतिक्रिया के आकार के कारण एक रेफरल प्रतिक्रिया को छोटा किया जाता है

  2. खुदाई रेफरल प्रतिक्रिया के AUTHORITY सेक्शन से एक NS रिकॉर्ड का चयन करती है जिसके लिए ADDITIONAL सेक्शन में संबंधित A रिकॉर्ड (गोंद) गायब है।

क्योंकि खुदाई में NS रिकॉर्ड से केवल एक डोमेन नाम होता है, इसलिए स्थानीय DNS सर्वर को क्वेरी करके खुदाई को एक IP पते पर नाम को हल करना होगा। यह मूल कारण है (दंड का उद्देश्य, क्षमा करें)।

एंड्रयूबी का एक उदाहरण है जो मैंने अभी वर्णित के साथ पूरी तरह से अनुरूप नहीं है, जो रूट ज़ोन एनएस रिकॉर्ड चुना है:

. 121459 IN NS e.root-servers.net.

एक ए रिकॉर्ड है:

e.root-servers.net. 354907 IN A 192.203.230.10

ध्यान दें कि ई-रूट के लिए एएएए रिकॉर्ड नहीं है, साथ ही कुछ अन्य रूट सर्वरों के लिए एएएएए रिकॉर्ड नहीं है।

इसके अलावा, प्रतिक्रिया के आकार पर ध्यान दें:

;; Received 496 bytes from 75.75.75.75#53(75.75.75.75) in 10 ms

496 बाइट्स उन प्रतिक्रियाओं के लिए एक सामान्य आकार है जिन्हें काट दिया गया है (यानी अगला ग्लू रिकॉर्ड> 16 बाइट्स होगा, प्रतिक्रिया को 512 बाइट्स पर डाल देगा)। दूसरे शब्दों में, रूट के NS रिकॉर्ड के लिए एक क्वेरी में, एक पूर्ण AUTHORITY और पूरा ADDITIONAL (A और AAAA दोनों रिकॉर्ड) 512 बाइट्स से अधिक हो जाएंगे, इसलिए किसी भी UDP- आधारित क्वेरी जो EDNS0 विकल्पों के लिए एक बड़ा क्वेरी आकार निर्दिष्ट नहीं करती है उपरोक्त ट्रेस शो (केवल f, h, i, j, और k में A और AAAA गोंद रिकॉर्ड हैं) के रूप में ADDITIONAL अनुभाग में कहीं न कहीं कटौती की गई प्रतिक्रिया प्राप्त करें।

E.root-servers.net के लिए AAAA रिकॉर्ड की कमी और "NS" पर प्रतिक्रिया का आकार। क्वेरी दृढ़ता से सुझाव देती है कि अगली पुनरावर्ती क्वेरी उस कारण से की गई है जिसका मैं दावा कर रहा हूं। शायद क्लाइंट O / S IPv6- सक्षम है, और AAAA रिकॉर्ड पसंद करता है - या कुछ अन्य कारण।

लेकिन किसी भी स्थिति में, इस थ्रेड को पढ़ने के बाद, मैंने रूट के लिए प्रारंभिक एक के बाद पुनरावर्ती क्वेरी करने वाले डिग + ट्रेस की घटना पर ध्यान दिया। एक संबंधित गोंद ए / एएएए रिकॉर्ड के बिना एनएस रिकॉर्ड का चयन करने और फिर खोले जाने के बीच का पत्राचार स्थानीय डीएनएस के लिए उस रिकॉर्ड के लिए एक पुनरावर्ती क्वेरी भेजना मेरे अनुभव में 100% है। और रिवर्स सच है - जब मैंने रेफ़रल से चुने गए एनएस रिकॉर्ड को एक संबंधित गोंद रिकॉर्ड किया है, तो मैंने पुनरावर्ती प्रश्नों को नहीं देखा है।

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