इस विषय को समर्पित एक RFC है: RFC 2308 - DNS Queries (DNS NCACHE) की नकारात्मक कैशिंग ।
पढ़ने के लिए प्रासंगिक अनुभाग 5 है - कैशिंग नकारात्मक उत्तर जो बताता है:
सामान्य उत्तरों की तरह नकारात्मक उत्तरों को जीने का समय (TTL) होता है। जैसा कि उत्तर खंड में कोई रिकॉर्ड नहीं है जिस पर यह टीटीएल लागू किया जा सकता है, टीटीएल को किसी अन्य विधि द्वारा किया जाना चाहिए। यह उत्तर के प्राधिकरण अनुभाग में क्षेत्र से SOA रिकॉर्ड को शामिल करके किया जाता है। जब आधिकारिक सर्वर इस रिकॉर्ड को बनाता है तो इसका टीटीएल न्यूनतम SOA.MINIMUM फ़ील्ड और SOA के TTL से लिया जाता है। यह टीटीएल एक सामान्य कैश्ड उत्तर के समान तरीके से घटता है और शून्य (0) तक पहुंचने पर कैश्ड नकारात्मक उत्तर को इंगित करता है कि फिर से उपयोग नहीं किया जाना चाहिए।
सबसे पहले SOA.MINIMUM
RFC में वर्णित SOA TTL को पहचानने देता है । रिकॉर्ड प्रकार से पहले टीटीएल संख्या है IN
( 900
नीचे उदाहरण में सेकंड)। जबकि न्यूनतम रिकॉर्ड में अंतिम क्षेत्र है ( 86400
नीचे उदाहरण में सेकंड)।
$ dig serverfault.com soa @ns-1135.awsdns-13.org +noall +answer +multiline
; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> serverfault.com soa @ns-1135.awsdns-13.org +noall +answer +multiline
;; global options: +cmd
serverfault.com. 900 IN SOA ns-1135.awsdns-13.org. awsdns-hostmaster.amazon.com. (
1 ; serial
7200 ; refresh (2 hours)
900 ; retry (15 minutes)
1209600 ; expire (2 weeks)
86400 ; minimum (1 day)
)
अब कुछ उदाहरणों को देखते हैं, यह serverfault.com
क्षेत्र चित्रमय है क्योंकि इसमें दो अलग-अलग प्रदाताओं से आधिकारिक सर्वर हैं जो अलग-अलग कॉन्फ़िगर किए गए हैं।
इस serverfault.com
क्षेत्र के लिए आधिकारिक नेमवर्कर्स ढूंढने दें :
$ host -t ns serverfault.com
serverfault.com name server ns-860.awsdns-43.net.
serverfault.com name server ns-1135.awsdns-13.org.
serverfault.com name server ns-cloud-c1.googledomains.com.
serverfault.com name server ns-cloud-c2.googledomains.com.
उसके बाद SOA रिकॉर्डर का उपयोग करके SOA रिकॉर्ड की जाँच करें:
$ dig serverfault.com soa @ns-1135.awsdns-13.org | grep 'ANSWER SECTION' -A 1
;; ANSWER SECTION:
serverfault.com. 900 IN SOA ns-1135.awsdns-13.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
इससे हम देख सकते हैं कि SOA रिकॉर्ड का 900
TTL सेकंड है जबकि नकारात्मक TTL मान 86400
सेकंड है। SOA TTL मान 900
कम है, इसलिए हम इस मान का उपयोग करने की अपेक्षा करते हैं।
अब यदि हम एक गैर-मौजूद डोमेन के लिए एक आधिकारिक सर्वर को क्वेरी करते हैं, तो हमें उत्तर के बिना और प्राधिकरण प्राधिकरण में SOA रिकॉर्ड के साथ प्रतिक्रिया प्राप्त करनी चाहिए:
$ dig nxdomain.serverfault.com @ns-1135.awsdns-13.org
; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> nxdomain.serverfault.com @ns-1135.awsdns-13.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 51948
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;nxdomain.serverfault.com. IN A
;; AUTHORITY SECTION:
serverfault.com. 900 IN SOA ns-1135.awsdns-13.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
;; Query time: 125 msec
;; SERVER: 205.251.196.111#53(205.251.196.111)
;; WHEN: Tue Aug 20 15:49:47 NZST 2019
;; MSG SIZE rcvd: 135
जब एक पुनरावर्ती (कैशिंग) रिज़ॉल्वर को यह उत्तर मिलता है तो यह SOA रिकॉर्ड को पार्स कर देगा AUTHORITY SECTION
और इस रिकॉर्ड के TTL का उपयोग यह निर्धारित करने के लिए करेगा कि यह कितने समय तक नकारात्मक परिणाम (इस मामले में 900
सेकंड) को कैश करना चाहिए ।
अब Google नेमवेर के साथ समान प्रक्रिया का पालन करें:
$ dig serverfault.com soa @ns-cloud-c2.googledomains.com | grep 'ANSWER SECTION' -A 1
;; ANSWER SECTION:
serverfault.com. 21600 IN SOA ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
आप देख सकते हैं कि Google नेमसर्वरों के पास SOA TTL और नकारात्मक TTL मान दोनों के लिए अलग-अलग मान हैं। इस मामले में नकारात्मक TTL 300
SOA TTL की तुलना में कम है 21600
। इसलिए प्रतिक्रिया देते AUTHORITY SECTION
समय Google सर्वर को SOA रिकॉर्ड में निम्न मान का उपयोग करना चाहिए NXDOMAIN
:
$ dig nxdomain.serverfault.com @ns-cloud-c2.googledomains.com
; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> nxdomain.serverfault.com @ns-cloud-c2.googledomains.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 25920
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;nxdomain.serverfault.com. IN A
;; AUTHORITY SECTION:
serverfault.com. 300 IN SOA ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
;; Query time: 130 msec
;; SERVER: 216.239.34.108#53(216.239.34.108)
;; WHEN: Tue Aug 20 16:05:24 NZST 2019
;; MSG SIZE rcvd: 143
जैसा कि अपेक्षित था कि NXDOMAIN
प्रतिक्रिया में SOA रिकॉर्ड का TTL 300
सेकंड है।
ऊपर दिए गए उदाहरण से यह भी पता चलता है कि एक ही क्वेरी के विभिन्न उत्तर प्राप्त करना कितना आसान है। एक व्यक्तिगत कैचिंग रिज़ॉल्वर का उपयोग करने पर समाप्त होने वाला उत्तर आधिकारिक नामर्ज़र से नीचे दिया गया था।
अपने परीक्षण में मैंने यह भी देखा है कि कुछ पुनरावर्ती (कैशिंग) रिज़ॉल्वर AUTHORITY SECTION
एसओए रिकॉर्ड के साथ एक बाद के अनुरोधों के लिए एक डीटीआरईटी के साथ वापस नहीं आते हैं जबकि अन्य करते हैं।
उदाहरण के लिए क्लाउडफ्लेयर रिज़ॉल्वर करता है (टीटीएल मान को घटाता है):
$ dig nxdomain.serverfault.com @1.1.1.1 | grep 'AUTHORITY SECTION' -A 1
;; AUTHORITY SECTION:
serverfault.com. 674 IN SOA ns-1135.awsdns-13.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
$ dig nxdomain.serverfault.com @1.1.1.1 | grep 'AUTHORITY SECTION' -A 1
;; AUTHORITY SECTION:
serverfault.com. 668 IN SOA ns-1135.awsdns-13.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
जबकि AWS VPC में डिफ़ॉल्ट रिज़ॉल्वर केवल पहले अनुरोध पर एक प्राधिकरण अनुभाग के साथ जवाब देगा:
$ dig nxdomain.serverfault.com @169.254.169.253 | grep 'AUTHORITY SECTION' -A 1
;; AUTHORITY SECTION:
serverfault.com. 300 IN SOA ns-cloud-c1.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
$ dig nxdomain.serverfault.com @169.254.169.253 | grep 'AUTHORITY SECTION' -A 1 | wc -l
0
नोट: यह उत्तर NXDOMAIN
उत्तरों के व्यवहार को संबोधित करता है।
शब्दावली: