अपडेट पर वापस जाएँ
New releaseJul 21, 2026

dnsdiag v2.9.4

DNS मापन, समस्या निवारण और सुरक्षा ऑडिटिंग टूलसेट

साझा करें

PyPI PyPI Downloads Downloads PyPI Docker Pulls GitHub stars

DNS मापन, समस्या निवारण और सुरक्षा ऑडिटिंग टूलसेट

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

dnsping से, आप किसी भी DNS सर्वर के प्रतिक्रिया समय को मनमाने क्वेरी के लिए माप सकते हैं। नियमित पिंग उपयोगिता के समान, dnsping DNS अनुरोधों के लिए समान कार्यक्षमता प्रदान करता है, जिससे आप सर्वर की प्रतिक्रियाशीलता की निगरानी कर सकते हैं।

आप dnstraceroute का उपयोग करके अपने DNS अनुरोध के गंतव्य तक के मार्ग का पता लगा सकते हैं, यह सत्यापित करते हुए कि इसे रिडायरेक्ट या इंटरसेप्ट नहीं किया जा रहा है। एक ही सर्वर पर भेजे गए DNS क्वेरी की तुलना करके, dnstraceroute आपको लिए गए मार्गों में किसी भी अंतर को देखने की अनुमति देता है, जो संभावित समस्याओं के प्रति आपको सचेत करता है।

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

स्थापना

इस टूलसेट का उपयोग करने के कई तरीके हैं, हालांकि हम इष्टतम लचीलापन और नियंत्रण के लिए इसे सीधे स्रोत कोड से चलाने की अनुशंसा करते हैं।

स्रोत कोड

  1. गिट रिपॉजिटरी को क्लोन करें और निर्भरताएँ स्थापित करें:
git clone https://github.com/farrokhi/dnsdiag.git
cd dnsdiag
pip3 install -r requirements.txt
  1. आप वैकल्पिक रूप से pip का उपयोग करके पैकेज स्थापित कर सकते हैं:
pip3 install dnsdiag

uv का उपयोग करना (अनुशंसित)

uv एक तेज़ पायथन पैकेज मैनेजर है जो बिना स्थापना के उपकरणों को सीधे चला सकता है:

# बिना स्थापना के dnsping को सीधे चलाएँ
uvx --from dnsdiag dnsping google.com

# विशिष्ट विकल्पों के साथ चलाएँ
uvx --from dnsdiag dnsping -c 5 --tls -s 8.8.8.8 example.com

# dnstraceroute चलाएँ
uvx --from dnsdiag dnstraceroute cloudflare.com

# dnseval चलाएँ
uvx --from dnsdiag dnseval -f public-servers.txt github.com

dnsdiag को स्थायी रूप से स्थापित करने के लिए:

# dnsdiag उपकरण स्थापित करें
uv tool install dnsdiag

# नवीनतम संस्करण में अपग्रेड करें
uv tool upgrade dnsdiag

बाइनरी पैकेज

समय-समय पर, विंडोज, मैक ओएस एक्स और लिनक्स के लिए बाइनरी पैकेज जारी किए जाएंगे। आप रिलीज़ पेज से नवीनतम रिलीज़ प्राप्त कर सकते हैं।

समर्थित प्लेटफ़ॉर्म

प्री-बिल्ट बाइनरी निम्नलिखित के लिए उपलब्ध हैं:

  • लिनक्स (x86_64, ARM64)
  • macOS (इंटेल, एप्पल सिलिकॉन)
  • विंडोज (x86_64)

विंडोज ARM64 वर्तमान में समर्थित नहीं है क्योंकि बिल्ड निर्भरताओं को देशी संकलन टूलचेन की आवश्यकता होती है जो आसानी से उपलब्ध नहीं हैं। यदि आप ARM पर विंडोज का उपयोग कर रहे हैं, तो आप विंडोज सबसिस्टम फॉर लिनक्स (WSL2) का उपयोग करके या स्रोत से सीधे स्थापित करके dnsdiag चला सकते हैं।

डॉकर

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

docker run --network host -it --rm farrokhi/dnsdiag dnsping.py

dnsping

dnsping आपको एक DNS रिज़ॉल्वर को "पिंग" करने की अनुमति देता है, जिसमें मनमाने DNS क्वेरी को कई बार भेजा जाता है। समर्थित कमांड-लाइन विकल्पों की पूरी सूची के लिए --help का उपयोग करें। यहाँ कुछ प्रमुख फ़्लैग दिए गए हैं:

  • परिवहन प्रोटोकॉल का चयन करने के लिए --tcp, --tls, --doh, --quic या --http3 का उपयोग करें (डिफ़ॉल्ट UDP है)। ये विकल्प परस्पर अनन्य हैं; प्रति कमांड केवल एक प्रोटोकॉल निर्दिष्ट किया जा सकता है।
  • प्रति प्रतिक्रिया के लिए प्रतिक्रिया फ़्लैग प्रदर्शित करने के लिए --flags का उपयोग करें, जिसमें EDNS फ़्लैग शामिल हैं।
  • उपलब्ध होने पर DNSSEC सत्यापन का अनुरोध करने के लिए --dnssec का उपयोग करें।
  • विस्तारित DNS त्रुटि संदेश (RFC 8914) उपस्थित होने पर स्वचालित रूप से प्रदर्शित होते हैं।
  • उपलब्ध होने पर नाम सर्वर पहचानकर्ता (NSID) प्रदर्शित करने के लिए --nsid का उपयोग करें (RFC 5001)।
  • भौगोलिक रूटिंग अनुकूलन के लिए EDNS क्लाइंट सबनेट जानकारी शामिल करने के लिए --ecs का उपयोग करें।
  • प्रतिक्रियाओं में उपस्थित होने पर DNS कुकीज़ प्रदर्शित करने के लिए --cookie का उपयोग करें (RFC 7873).
./dnsping.py -c 5 --dnssec --flags --tls -t AAAA -s 8.8.8.8 brokendnssec.net
dnsping.py DNS: 8.8.8.8:853, hostname: brokendnssec.net, proto: TLS, class: IN, type: AAAA, flags: [RD]
75  bytes from 8.8.8.8: seq=1   time=73.703 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=2   time=69.523 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=3   time=58.058 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=4   time=54.235 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=5   time=57.806 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]

--- 8.8.8.8 dnsping statistics ---
5 requests transmitted, 5 responses received, 0% lost
min=54.235 ms, avg=22.665 ms, max=69.523 ms, stddev=38.202 ms

dnsping न्यूनतम, अधिकतम और औसत प्रतिक्रिया समय के साथ-साथ जिटर (मानक विचलन) और पैकेट हानि जैसे आँकड़े भी प्रदान करता है।

यहाँ dnsping के कुछ दिलचस्प उपयोग के मामले दिए गए हैं:

  • विभिन्न परिवहन प्रोटोकॉल (जैसे, UDP बनाम DoH) में प्रतिक्रिया समय की तुलना करना।
  • जिटर और पैकेट हानि को मापकर अपने DNS सर्वर की विश्वसनीयता का मूल्यांकन करना।
  • --dnssec फ़्लैग का उपयोग करके DNSSEC सक्षम होने पर प्रतिक्रिया समय मापना।
  • भू-स्थान-जागरूक प्रतिक्रियाओं के लिए EDNS क्लाइंट सबनेट व्यवहार का परीक्षण करना:
./dnsping.py -c 3 --ecs 203.0.113.0/24 -s 94.140.14.14 google.com
dnsping.py DNS: 94.140.14.14:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
66  bytes from 94.140.14.14: seq=1   time=31.407 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=2   time=29.156 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=3   time=30.892 ms  NOERROR [ECS:203.0.113.0/24/24]

--- 94.140.14.14 dnsping statistics ---
3 requests transmitted, 3 responses received, 0% lost
min=29.156 ms, avg=30.485 ms, max=31.407 ms, stddev=1.176 ms
  • NSID विकल्प का उपयोग करके DNS सर्वरों की पहचान करना:
./dnsping.py -c 2 --nsid -s 8.8.8.8 google.com
dnsping.py DNS: 8.8.8.8:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
68  bytes from 8.8.8.8: seq=1   time=36.399 ms  NOERROR [NSID:gpdns-ams]
68  bytes from 8.8.8.8: seq=2   time=32.156 ms  NOERROR [NSID:gpdns-ams]

--- 8.8.8.8 dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=32.156 ms, avg=34.278 ms, max=36.399 ms, stddev=2.122 ms
  • उन्नत सुरक्षा और कैश अनुकूलन के लिए DNS कुकीज़ का परीक्षण करना:
./dnsping.py -c 2 --cookie -s anyns.pch.net quad9.net
dnsping.py DNS: anyns.pch.net:53, hostname: quad9.net, proto: UDP, class: IN, type: A, flags: [RD]
82  bytes from anyns.pch.net: seq=1   time=30.552  ms  NOERROR [COOKIE:27f609c017bb2ec4ea70de5c68eec3fc39f6a53ee49c55f8]
82  bytes from anyns.pch.net: seq=2   time=24.794  ms  NOERROR [COOKIE:719631dd9fcce722d3ac859b68eec3fd2e5430b5c8a7f8cf]

--- anyns.pch.net dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=24.794 ms, avg=27.673 ms, max=30.552 ms, stddev=4.072 ms

DNSSEC और सुरक्षा-संबंधित फ़्लैग की व्याख्या

--dnssec और --flags का उपयोग करते समय, dnsping DNS प्रोटोकॉल फ़ील्ड को उजागर करता है जो सीधे DNS सुरक्षा सत्यापन से संबंधित हैं। ये मान इंगित करते हैं कि क्या कोई रिज़ॉल्वर DNSSEC को मान्य करने में सक्षम है और क्या कोई प्रतिक्रिया सफलतापूर्वक सत्यापित की गई थी।

सामान्य फ़्लैग:

  • DO (DNSSEC OK)
    इंगित करता है कि क्लाइंट DNSSEC-संबंधित रिकॉर्ड का अनुरोध कर रहा है। इसकी उपस्थिति दर्शाती है कि रिज़ॉल्वर DNSSEC क्वेरी का समर्थन करता है।

  • AD (Authenticated Data)
    मान्य करने वाले रिज़ॉल्वर द्वारा तब सेट किया जाता है जब प्रतिक्रिया को DNSSEC का उपयोग करके क्रिप्टोग्राफिक रूप से मान्य किया गया हो। यह एक मजबूत संकेत है कि DNSSEC सत्यापन सक्रिय और सफल है।

सामान्य पैटर्न:

परिणामअर्थ
NOERROR AD फ़्लैग के साथDNSSEC सत्यापन सफल
SERVFAIL DO फ़्लैग के साथDNSSEC सत्यापन विफल (अक्सर टूटे हस्ताक्षर या गलत कॉन्फ़िगरेशन के कारण)
कोई AD फ़्लैग उपस्थित नहींरिज़ॉल्वर DNSSEC सत्यापन नहीं कर रहा है

विस्तारित DNS त्रुटियाँ (EDE, RFC 8914) DNSSEC सत्यापन विफल होने पर अतिरिक्त नैदानिक जानकारी प्रदान करती हैं। उदाहरण के लिए:

  • EDE:10DNSSEC Bogus (अमान्य या टूटा DNSSEC डेटा)
  • EDE:6DNSSEC Signature Expired
  • EDE:7DNSSEC Signature Not Yet Valid

ये संकेतक dnsping को न केवल प्रदर्शन परीक्षण के लिए, बल्कि यह सत्यापित करने के लिए भी उपयोगी बनाते हैं कि क्या रिज़ॉल्वर DNSSEC को सही ढंग से लागू करते हैं और DNSSEC तैनाती के मुद्दों का निदान करने के लिए।

dnstraceroute

dnstraceroute एक उपयोगिता है जो आपके DNS अनुरोधों के गंतव्य तक के पथ का पता लगाती है। आप इसकी तुलना अपने वास्तविक नेटवर्क ट्रेसरूट से करना चाह सकते हैं ताकि यह सुनिश्चित हो सके कि आपका DNS ट्रैफ़िक किसी अवांछित मार्ग से नहीं भेजा जा रहा है।

dnstraceroute कई परिवहन प्रोटोकॉल का समर्थन करता है (परस्पर अनन्य):

  • UDP (डिफ़ॉल्ट) - पारंपरिक DNS क्वेरी
  • TCP (--tcp) - TCP पर DNS
  • DoQ (--quic) - QUIC पर DNS (AdGuard DNS द्वारा समर्थित)
  • DoH3 (--http3) - HTTP/3 पर DNS (Google DNS और Cloudflare द्वारा समर्थित)
./dnstraceroute.py --expert --asn -C -t A -s 8.8.4.4 facebook.com

आप आधुनिक DNS प्रोटोकॉल का भी परीक्षण कर सकते हैं:

# AdGuard DNS के साथ DNS over QUIC का परीक्षण
./dnstraceroute.py --quic -s 94.140.14.14 -c 3 google.com

# Google DNS के साथ DNS over HTTP/3 का परीक्षण
./dnstraceroute.py --http3 -s 8.8.8.8 -c 3 google.com
dnstraceroute.py DNS: 8.8.4.4:53, hostname: facebook.com, rdatatype: A
1	192.168.0.1 (192.168.0.1) 1 ms
2	192.168.28.177 (192.168.28.177) 4 ms
3	192.168.0.1 (192.168.0.1) 693 ms
4	172.19.4.17 (172.19.4.17) 3 ms
5	dns.google (8.8.4.4) [AS15169 GOOGLE, US] 8 ms

=== Expert Hints ===
 [*] public DNS server is next to a private IP address (possible hijacking)

dnstraceroute के साथ --expert फ़्लैग का उपयोग करने से विशेषज्ञ संकेत प्रदर्शित होंगे, जिसमें संभावित DNS ट्रैफ़िक अपहरण के बारे में चेतावनियाँ शामिल हैं।

dnseval

dnseval एक बल्क पिंग उपयोगिता है जो DNS सर्वरों की एक निर्दिष्ट सूची में मनमाने DNS क्वेरी भेजती है, जिससे आप एक साथ उनके प्रतिक्रिया समय की तुलना कर सकते हैं।

आप dnseval का उपयोग करके विभिन्न परिवहन प्रोटोकॉल में प्रतिक्रिया समय का मूल्यांकन कर सकते हैं, जिसमें UDP (डिफ़ॉल्ट), TCP, DoT (TLS पर DNS), DoH (HTTPS पर DNS), DoQ (QUIC पर DNS), और DoH3 (HTTP/3 पर DNS) शामिल हैं, क्रमशः --tcp, --tls, --doh, --quic, और --http3 फ़्लैग का उपयोग करके। ये प्रोटोकॉल विकल्प परस्पर अनन्य हैं; प्रति कमांड केवल एक निर्दिष्ट किया जा सकता है।

प्रोटोकॉल समर्थन सारांश

उपकरणUDPTCPTLS (DoT)DoHDoQDoH3
dnsping
dnstraceroute--
dnseval

DoQ: QUIC पर DNS, DoH3: HTTP/3 पर DNS

./dnseval.py --skip-warmup --dnssec -c10 -f public-servers.txt ripe.net
server                   avg(ms)  min(ms)  max(ms)  stddev(ms)  lost(%)  ttl      flags                      response
---------------------------------------------------------------------------------------------------------------------
1.0.0.1                  29.01    14.15    45.36    8.60        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.1.1.1                  23.90    18.14    42.07    7.83        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.0.0.2                  25.90    21.36    31.58    4.26        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.1.1.2                  22.68    18.36    32.15    3.96        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.0.0.3                  22.53    18.98    32.52    3.94        %0       300      QR -- -- RD RA AD -- DO     NOERROR
1.1.1.3                  21.70    20.25    22.97    0.77        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1001     21.70    19.13    27.50    2.28        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1111     22.63    20.42    30.18    3.13        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1002     24.97    20.89    44.63    7.16        %0       299      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1112     23.24    21.37    25.87    1.48        %0       298      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1003     21.68    19.28    24.88    1.65        %0       298      QR -- -- RD RA AD -- DO     NOERROR
2606:4700:4700::1113     22.61    19.86    26.09    1.73        %0       299      QR -- -- RD RA AD -- DO     NOERROR
195.46.39.39             25.56    16.42    55.37    15.37       %0       300      QR -- -- RD RA -- -- --     NOERROR
195.46.39.40             19.08    16.51    23.86    2.24        %0       300      QR -- -- RD RA -- -- --     NOERROR
2a05:d014:939:3300::39   0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
2a05:d014:939:3300::40   0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
208.67.220.220           30.60    14.54    120.64   31.88       %0       300      QR -- -- RD RA AD -- DO     NOERROR
208.67.222.222           21.78    17.42    36.45    6.06        %0       50       QR -- -- RD RA AD -- DO     NOERROR
2620:0:ccc::2            29.48    19.23    98.29    24.22       %0       299      QR -- -- RD RA AD -- DO     NOERROR
2620:0:ccd::2            22.36    17.90    30.18    3.98        %0       299      QR -- -- RD RA AD -- DO     NOERROR
216.146.35.35            172.53   114.46   360.87   71.47       %0       299      QR -- -- RD RA AD -- DO     NOERROR
216.146.36.36            187.36   118.21   324.32   59.08       %0       110      QR -- -- RD RA AD -- DO     NOERROR
209.244.0.3              46.49    25.23    115.86   28.19       %0       300      QR -- -- RD RA -- -- DO     NOERROR
209.244.0.4              58.33    28.09    109.18   29.20       %0       299      QR -- -- RD RA -- -- DO     NOERROR
4.2.2.1                  64.58    30.21    86.79    30.19       %25      299      QR -- -- RD RA -- -- DO     NOERROR
4.2.2.2                  40.54    22.69    74.80    20.76       %0       70       QR -- -- RD RA -- -- DO     NOERROR
4.2.2.3                  90.62    90.62    90.62    0.00        %50      70       QR -- -- RD RA -- -- DO     NOERROR
4.2.2.4                  31.53    23.80    70.93    14.51       %0       294      QR -- -- RD RA -- -- DO     NOERROR
4.2.2.5                  24.11    24.05    24.18    0.09        %33      294      QR -- -- RD RA -- -- DO     NOERROR
80.80.80.80              0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
80.80.81.81              0.00     0.00     0.00     0.00        %100     N/A      -- -- -- -- -- -- -- --     No Response
8.8.4.4                  28.35    20.85    39.14    7.24        %0       300      QR -- -- RD RA AD -- DO     NOERROR
8.8.8.8                  21.22    16.22    24.93    2.39        %0       299      QR -- -- RD RA AD -- DO     NOERROR

आप आगे की प्रक्रिया के लिए परिणामों को JSONL प्रारूप में भी सहेज सकते हैं। आउटपुट फ़ाइल की प्रत्येक पंक्ति एक मान्य JSON ऑब्जेक्ट है जिसमें एक DNS सर्वर के लिए पूर्ण माप परिणाम होते हैं।

./dnseval.py -c 5 -j results.jsonl -f public-servers.txt example.com

आउटपुट को jq जैसे मानक JSON टूल से पंक्ति दर पंक्ति पार्स किया जा सकता है।

cat results.jsonl | jq -r 'select(.data.r_lost_percent == 0) | .data.resolver'

लेखक

बाबक फ़र्रोख़ी

लाइसेंस

dnsdiag को 2 खंडों वाले BSD लाइसेंस के तहत जारी किया गया है।

श्रेणियाँ