- also updated README and TODO - made a symlink to dns directory under dnspython module directory (I could not figure out an smarter way to do this)
58 lines
2.7 KiB
Markdown
58 lines
2.7 KiB
Markdown
# dnstools
|
|
DNS Diagnostics and Performance Measurement Tools
|
|
|
|
# prerequisites
|
|
This script requires python3 as well as latest [dnspython](http://www.dnspython.org/).
|
|
Please note that "dnstraceroute" requires a modified version of dnspython module, which is included. You just need to run `git submodule update --init`
|
|
|
|
# dnsping
|
|
dnsping pings a DNS resolver by sending an arbitrary DNS query for given number of times:
|
|
```
|
|
% ./dnsping.py -c 3 -s 8.8.8.8 -t MX wikipedia.org
|
|
|
|
DNSPING 8.8.8.8: hostname=wikipedia.org rdatatype=MX
|
|
101 bytes from 8.8.8.8: seq=0 time=161.607 ms
|
|
101 bytes from 8.8.8.8: seq=1 time=156.355 ms
|
|
101 bytes from 8.8.8.8: seq=2 time=145.201 ms
|
|
|
|
--- 8.8.8.8 dnsping statistics ---
|
|
3 requests transmitted, 3 responses received, 0% lost
|
|
min=145.201 ms, avg=154.388 ms, max=161.607 ms, stddev=8.378 ms
|
|
```
|
|
This script calculates minimum, maximum and average response time as well as jitter
|
|
|
|
# dnsperf
|
|
dnsperf is a bulk ping utility that sends an arbitrary DNS query to a give list of DNS servers. This script is meant for comparing response time of multiple DNS servers at once:
|
|
```
|
|
% ./dnsperf.py wikipedia.org
|
|
server avg(ms) min(ms) max(ms) stddev(ms) lost(%)
|
|
--------------------------------------------------------------------------
|
|
4.2.2.1 151.067 131.270 221.742 28.643 %10
|
|
4.2.2.2 142.175 132.921 178.133 13.348 %0
|
|
64.6.64.6 133.047 109.145 162.938 20.609 %0
|
|
64.6.65.6 377.270 97.669 661.471 172.717 %0
|
|
8.8.4.4 389.048 294.581 511.134 67.953 %0
|
|
8.8.8.8 0.000 0.000 0.000 0.000 %100
|
|
208.67.222.222 179.068 135.975 258.582 50.681 %0
|
|
208.67.220.220 137.817 135.822 140.113 1.504 %0
|
|
```
|
|
|
|
# dnstraceroute
|
|
dnstraceroute is a traceroute utility to figure out the path that your DNS request is passing through to get to its destination. You may want to compare it to your actual network traceroute and make sure your DNS traffic is not routed to any unwanted path.
|
|
|
|
```
|
|
% ./dnstraceroute.py -s 4.2.2.1 yahoo.com
|
|
dnstraceroute.py 4.2.2.1: hostname=yahoo.com rdatatype=A
|
|
1 192.168.199.57 (192.168.199.57) 47 ms
|
|
2 192.168.198.21 (192.168.198.21) 21 ms
|
|
3 192.168.169.169 (192.168.169.169) 27 ms
|
|
4 192.168.168.137 (192.168.168.137) 28 ms
|
|
5 so-5-0-0.franco71.fra.seabone.net (89.221.34.6) 23 ms
|
|
6 xe-5-3-1.fra44.ip4.gtt.net (89.149.129.185) 62 ms
|
|
7 * 1126 ms
|
|
8 ae-1-60.edge5.Frankfurt1.Level3.net (4.69.154.9) 62 ms
|
|
9 ae-1-60.edge5.Frankfurt1.Level3.net (4.69.154.9) 12 ms
|
|
10 a.resolvers.level3.net (4.2.2.1) 171 ms
|
|
```
|
|
|