मैं सभी DNS रिकॉर्ड कैसे सूचीबद्ध कर सकता हूं?


188

क्या किसी भी तरह से मैं एक डोमेन के लिए सभी डीएनएस रिकॉर्ड सूचीबद्ध कर सकता हूं?

मैं ऐसी चीजों के बारे में जानता हूं जैसे कि खुदाई और nslookup लेकिन वे केवल इतनी दूर तक जाती हैं। उदाहरण के लिए, अगर मुझे एक उपडोमेन ए रिकॉर्ड मिला है

test A somedomain.co.uk

तब तक जब तक मैं विशेष रूप से इसके लिए नहीं पूछती, उदाहरण के लिए।

dig any test.somedomain.co.uk

मैं इसे देख नहीं सकता।

क्या कोई रास्ता है (DNS प्रबंधक पर जाकर रिकॉर्ड को देखने के अलावा) क्या वास्तव में सभी DNS रिकॉर्ड हैं देखने के लिए?

जवाबों:


202

जब आप किसी के लिए क्वेरी करते हैं तो आपको उस स्तर पर सभी रिकॉर्ड की एक सूची मिलेगी लेकिन नीचे नहीं।

# try this
dig google.com any

यदि डोमेन नाम बिल्कुल "google.com" है, तो यह A रिकॉर्ड, TXT रिकॉर्ड, NS रिकॉर्ड, MX रिकॉर्ड आदि वापस कर सकता है। हालांकि, यह बाल रिकॉर्ड (जैसे, www.google.com) वापस नहीं करेगा। अधिक सटीक रूप से, यदि आप मौजूद हैं तो आपको ये रिकॉर्ड मिलेंगे। नाम सर्वर को इन रिकॉर्ड्स को वापस नहीं करना पड़ता है अगर यह ऐसा नहीं करना चाहता है (उदाहरण के लिए, प्रतिक्रिया के आकार को कम करने के लिए)।

एक AXFR एक ज़ोन ट्रांसफ़र है और संभवतः वही है जो आप चाहते हैं। हालाँकि, ये आमतौर पर प्रतिबंधित हैं और तब तक उपलब्ध नहीं हैं जब तक कि आप ज़ोन को नियंत्रित नहीं करते हैं। आप आमतौर पर आधिकारिक सर्वर (नीचे @ ns1.google.com) से और अक्सर एक नाम सर्वर से प्रकाशित किया जा सकता है जो प्रकाशित नहीं किया जा सकता है (एक गुप्त नाम सर्वर)।

# This will return "Transfer failed"
dig @ns1.google.com google.com axfr

यदि आपके पास ज़ोन का नियंत्रण है, तो आप इसे TSIG कुंजी के साथ सुरक्षित स्थानान्तरण प्राप्त करने के लिए सेट कर सकते हैं। यह एक साझा रहस्य है जिसे क्लाइंट सर्वर को ट्रांसफर को अधिकृत करने के लिए भेज सकता है।


4
इसके लिए धन्यवाद (डेल्टैब को भी)। बहुत स्पष्ट स्पष्टीकरण, पुष्टि करता है कि मुझे क्या संदेह है - यह उपलब्ध है, लेकिन मेरे लिए नहीं (जब तक कि मैं अपने स्वयं के नेमसर्वर्स स्थापित करना शुरू नहीं करता)। जैसा कि मैं बहुत सारे डोमेन के बाद देखता हूं कि सभी DNS प्रविष्टियों को प्राप्त करने के लिए स्क्रिप्ट चलाने के लिए यह बहुत अच्छा होगा।
केन

13
जब मैंने यह कोशिश की तो अमेज़न के रूट 53 नामकरण में TXT, MX और SOA शामिल नहीं थे। के बाद मैं विशेष रूप से इन अभिलेखों को वे किसी भी जवाब में शामिल हैं, जहां। इसलिए इसे नमक के दाने के साथ लें।
पीटर

मुझे सिर्फ "कनेक्शन मना कर दिया गया"
niico

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

1
@NickBastin इस मसौदे ( tools.ietf.org/html/draft-ietf-dnsop-refuse-any-06 ) में वर्तमान में काम इस क्वेरी प्रकार के लिए उत्तरों के पैटर्न को कसने की कोशिश करता है। यह भी चर्चा करता है कि यह क्यों है / इसका उपयोग नहीं किया जाना चाहिए।
पैट्रिक मेवज़ेक

29

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

नई स्क्रिप्ट -xविस्तारित आउटपुट के लिए एक -s NSतर्क और एक विशिष्ट नेमसर्वर चुनने के लिए एक तर्क लेती है :dig -x example.com

#!/bin/bash
set -e; set -u
COMMON_SUBDOMAINS="www mail mx a.mx smtp pop imap blog en ftp ssh login"
EXTENDED=""

while :; do case "$1" in
  --) shift; break ;;
  -x) EXTENDED=y; shift ;;
  -s) NS="$2"; shift 2 ;;
  *) break ;;
esac; done
DOM="$1"; shift
TYPE="${1:-any}"

test "${NS:-}" || NS=$(dig +short  SOA "$DOM" | awk '{print $1}')
test "$NS" && NS="@$NS"

if test "$EXTENDED"; then
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
  wild_ips=$(dig +short "$NS" "*.$DOM" "$TYPE" | tr '\n' '|')
  wild_ips="${wild_ips%|}"
  for sub in $COMMON_SUBDOMAINS; do
    dig +nocmd $NS "$sub.$DOM" +noall +answer "$TYPE"
  done | cat  #grep -vE "${wild_ips}"
  dig +nocmd $NS "*.$DOM" +noall +answer "$TYPE"
else
  dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
fi

किसी डोमेन के TXT रिकॉर्ड का निरीक्षण dig -t txt +nocmd $NS "$DOM" +noall +answerकरने के लिए लाइनें जोड़ें (और संशोधित करें $DOM)।
मैक्स

19

ज़ोन ट्रांसफ़र करने की क्षमता के अभाव में, मैंने यह छोटा सा बैश स्क्रिप्ट लिखा dg:

#!/bin/bash
COMMON_SUBDOMAINS=(www mail smtp pop imap blog en ftp ssh login)
if [[ "$2" == "x" ]]; then
    dig +nocmd "$1" +noall +answer "${3:-any}"
    wild_ips="$(dig +short "*.$1" "${3:-any}" | tr '\n' '|')"
    wild_ips="${wild_ips%|}"
    for sub in "${COMMON_SUBDOMAINS[@]}"; do
        dig +nocmd "$sub.$1" +noall +answer "${3:-any}"
    done | grep -vE "${wild_ips}"
    dig +nocmd "*.$1" +noall +answer "${3:-any}"
else
    dig +nocmd "$1" +noall +answer "${2:-any}"
fi

अब मैं dg example.comDNS रिकॉर्ड्स की एक अच्छी, स्वच्छ सूची प्राप्त करने के लिए या dg example.com xअन्य लोकप्रिय उप-डोमेन का एक गुच्छा शामिल करने के लिए उपयोग करता हूं ।

grep -vE "${wild_ips}"रिकॉर्ड्स को फ़िल्टर करता है जो वाइल्डकार्ड DNS प्रविष्टि जैसे कि हो सकता है * 10800 IN A 1.38.216.82। अन्यथा, एक वाइल्डकार्ड प्रविष्टि ऐसा प्रतीत होगा जैसे कि प्रत्येक के लिए रिकॉर्ड थे $COMMON_SUBDOMAN

नोट: यह ANYप्रश्नों पर निर्भर करता है , जो कुछ DNS प्रदाताओं जैसे CloudFlare द्वारा अवरुद्ध होते हैं ।


3
मुझे पता है कि यह समाधान आदर्श से बहुत दूर है, लेकिन इसने मुझे बहुत समय बचाया है, इसलिए मुझे उम्मीद है कि यह किसी और के लिए उपयोगी होगा।
ज़ाज़

एक डोमेन के TXT रिकॉर्ड का निरीक्षण dig -t txt +nocmd "$1" +noall +answerकरने के लिए ( "*.$1"आदि को संशोधित करें ) जोड़ें ।
मैक्स

15

host -aके समान काम करता है dig any

ईजी:

$ host -a google.com
Trying "google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10403
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:
;google.com.            IN  ANY

;; ANSWER SECTION:
google.com.     1165    IN  TXT "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
google.com.     53965   IN  SOA ns1.google.com. dns-admin.google.com. 2014112500 7200 1800 1209600 300
google.com.     231 IN  A   173.194.115.73
google.com.     231 IN  A   173.194.115.78
google.com.     231 IN  A   173.194.115.64
google.com.     231 IN  A   173.194.115.65
google.com.     231 IN  A   173.194.115.66
google.com.     231 IN  A   173.194.115.67
google.com.     231 IN  A   173.194.115.68
google.com.     231 IN  A   173.194.115.69
google.com.     231 IN  A   173.194.115.70
google.com.     231 IN  A   173.194.115.71
google.com.     231 IN  A   173.194.115.72
google.com.     128 IN  AAAA    2607:f8b0:4000:809::1001
google.com.     40766   IN  NS  ns3.google.com.
google.com.     40766   IN  NS  ns4.google.com.
google.com.     40766   IN  NS  ns1.google.com.
google.com.     40766   IN  NS  ns2.google.com.

11
यह इस सवाल का जवाब नहीं देता है, कि डोमेन के DNS ज़ोन में अन्य रिकॉर्ड कैसे खोजे जाते हैं, यानी इसके अलावा सबडोमेन के लिए सभी रिकॉर्ड। यह कहना नहीं है कि host -aयह एक उपयोगी कमांड नहीं है, यह सिर्फ वही नहीं करता है जो ओपी देख रहा है।
spikyjt

13
  1. एक ज़ोन ट्रांसफ़र एकमात्र तरीका है जिससे आप सभी उपडोमेन रिकॉर्ड सुनिश्चित कर सकते हैं। यदि DNS सही तरीके से कॉन्फ़िगर किया गया है, तो आपको सामान्य रूप से बाहरी क्षेत्र स्थानांतरण करने में सक्षम नहीं होना चाहिए।

  2. Scans.io परियोजना DNS रिकॉर्ड्स डाउनलोड किया जा सकता है कि और उप डोमेन के लिए खोज के एक डेटाबेस है। इसके लिए 87GB DNS डेटा डाउनलोड करने की आवश्यकता होती है, वैकल्पिक रूप से आप https://hackertarget.com/find-dns-host-records/ पर डेटा की ऑनलाइन खोज की कोशिश कर सकते हैं


12

विंडोज के लिए:

आपको अपने डोमेन DNS रिकॉर्ड की स्थिति की जाँच करने की आवश्यकता हो सकती है, या सर्वर को खींचने वाले रिकॉर्ड को देखने के लिए नाम सर्वर की जाँच करें।

  1. प्रारंभ> कमांड प्रॉम्प्ट या रन> CMD के माध्यम से नेविगेट करके विंडोज कमांड प्रॉम्प्ट लॉन्च करें।

  2. NSLOOKUP टाइप करें और एंटर दबाएं। डिफ़ॉल्ट सर्वर आपके स्थानीय DNS पर सेट है, पता आपका स्थानीय IP होगा।

  3. DNS रिकॉर्ड प्रकार सेट करें जिसे आप टाइप करके set type=##देखना चाहते हैं जहां ## रिकॉर्ड प्रकार है, फिर Enter दबाएं। आप किसी भी, A, AAAA, A + AAAA, CNAME, MX, NS, PTR, SOA, या SRV का उपयोग रिकॉर्ड प्रकार के रूप में कर सकते हैं।

  4. अब उस डोमेन नाम को दर्ज करें जिसे आप क्वेरी करना चाहते हैं फिर Enter दबाएं। इस उदाहरण में, हम Managed.com का उपयोग करेंगे।

  5. NSLOOKUP अब आपके द्वारा दर्ज डोमेन के लिए रिकॉर्ड प्रविष्टियाँ लौटाएगा।

  6. आप उन नाम सर्वर को भी बदल सकते हैं जिन्हें आप क्वेरी कर रहे हैं। यह उपयोगी है यदि आप DNS को पूरी तरह से प्रचारित करने से पहले रिकॉर्ड की जाँच कर रहे हैं। नाम सर्वर प्रकार सर्वर [नाम सर्वर] को बदलने के लिए। उस नाम सर्वर के साथ [नाम सर्वर] को बदलें जिसे आप उपयोग करना चाहते हैं। इस उदाहरण में, हम इन्हें NSA.managed.com के रूप में सेट करेंगे।

  7. एक बार बदलने के बाद, क्वेरी प्रकार (चरण 3) को बदलें यदि आवश्यक हो तो एक नया डोमेन दर्ज करें (चरण 4)

लिनक्स के लिए:

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

2) NSlookup कमांड का उपयोग करके DNS रिकॉर्ड्स की जांच करें। इंटरनेट डोमेन नाम सर्वर को क्वेरी करने के लिए एक कार्यक्रम है। Nslookup में दो मोड इंटरैक्टिव और गैर-इंटरैक्टिव हैं।

इंटरएक्टिव मोड उपयोगकर्ता को विभिन्न होस्ट और डोमेन के बारे में जानकारी के लिए नाम सर्वर को क्वेरी करने या डोमेन में होस्ट की एक सूची मुद्रित करने की अनुमति देता है।

गैर-संवादात्मक मोड का उपयोग केवल नाम और किसी होस्ट या डोमेन के लिए जानकारी का अनुरोध करने के लिए किया जाता है। यह नेटवर्क प्रशासन उपकरण है जो उन्हें डीएनएस से संबंधित मुद्दों की जांच करने और उनका निवारण करने में मदद करेगा।

3) होस्ट कमांड होस्ट का उपयोग करके DNS रिकॉर्ड्स की जाँच करें DNS लुकअप करने के लिए एक सरल उपयोगिता है। आमतौर पर इसका उपयोग आईपी पते में नाम बदलने और इसके विपरीत करने के लिए किया जाता है। जब कोई तर्क या विकल्प नहीं दिया जाता है, तो होस्ट अपने कमांड लाइन के तर्कों और विकल्पों का एक छोटा सारांश प्रिंट करता है।


यह विंडोज 7 में मेरे लिए पूरी तरह से काम करता है, लेकिन विंडोज 10 में छोटी गाड़ी प्रतीत होती है, यह वही है जो मैंने विंडोज 10 में एक TXT रिकॉर्ड को डीबग करने के लिए किया था: nslookup -querytype = txt yourdomainnamehere.com

11

आप जो चाहते हैं उसे ज़ोन ट्रांसफ़र कहा जाता है । आप एक ज़ोन स्थानांतरण का उपयोग करके अनुरोध कर सकते हैं dig -t axfr

एक जोन एक डोमेन है और उसके नीचे के सभी डोमेन जो किसी अन्य सर्वर को नहीं सौंपे जाते हैं।

ध्यान दें कि ज़ोन स्थानांतरण हमेशा समर्थित नहीं होते हैं। वे सामान्य लुकअप में उपयोग नहीं किए जाते हैं, केवल सर्वर के बीच DNS डेटा की नकल करने में; लेकिन ऐसे अन्य प्रोटोकॉल हैं जिनका उपयोग उस के लिए किया जा सकता है (जैसे ssh पर rsync), नामों को उजागर करने से सुरक्षा जोखिम हो सकता है, और सामान्य DNS लुकअप की तुलना में उत्पन्न करने और भेजने के लिए ज़ोन स्थानांतरण प्रतिक्रियाएं अधिक खर्च होती हैं।


1

एक उदाहरण में एक डोमेन के लिए सभी DNS रिकॉर्ड प्राप्त करने का कोई आसान तरीका नहीं है। आप केवल उदाहरण के लिए कुछ रिकॉर्ड देख सकते हैं, यदि आप एक निश्चित डोमेन के लिए ए रिकॉर्ड देखना चाहते हैं, तो आप कमांड का उपयोग कर सकते हैं: एक (प्रकार का रिकॉर्ड) domain.com। यह उस डोमेन के लिए आपके द्वारा देखे जाने वाले अन्य सभी प्रकार के रिकॉर्ड के लिए समान है।

यदि आपका कमांड लाइन इंटरफ़ेस से परिचित नहीं है, तो आप mxtoolbox.com जैसी साइट का भी उपयोग कर सकते हैं। Wich एक डोमेन के रिकॉर्ड प्राप्त करने के लिए बहुत ही उपयोगी उपकरण है।

हम उम्मीद करते है कि यह आपके सवाल का जवाब दे देगा।

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