TShark 1.2.15, Oracle Enterprise Linux 6.5

As part of a series on Wireshark, this is the first of many tips on using this versatile network tool.

If you run a DNS server, you may want to quickly see what types of queries are coming into the server as well as the response codes. The following query provides:

  1. Number of A (IPv4) queries in the last minute
  2. Number of AAAA (IPv6) queries in the last minute
  3. Number of CNAME …
  4. Number of MX …
  5. Number of NS …
  6. Number of PTR …
  7. Number of SOA …
  8. Number of SRV …
  9. Number of TXT …
  10. Number of AXFR (complete zone transfers) …
  11. Number of IXFR (incremental zone transfers) …
  12. Number of Successful queries, which are those where the response code was zero (rcode==0)
  13. Number of Unsuccessful queries, which are those where the response code was non-zero (rcode!=0)

A complete listing of rcodes can be found at http://www.iana.org/assignments/dns-parameters/dns-parameters.xml#dns-parameters-6

Note this query shows ingress and egress DNS traffic, so you'll see DNS queries/responses that were sent to the server where you are running shark as well as queries/responses that originated on the server where tshark is running.

tshark -i eth0 -qz "io,stat,60,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==A,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==AAAA,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==CNAME,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==MX,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==NS,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==PTR,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==SOA,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==SRV,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==TXT,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==AXFR,COUNT(dns.qry.type)dns.qry.type and dns.qry.type==IXFR,COUNT(dns.flags.rcode)dns.flags.rcode and dns.flags.rcode==0,COUNT(dns.flags.rcode)dns.flags.rcode and dns.flags.rcode!=0" dst port 53 and dst host 10.100.5.5

Press ^C after 60 seconds or more to see results

^C3380 packets captured

===================================================================
IO Statistics
Interval: 60.000 secs
Column #0: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==A
Column #1: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==AAAA
Column #2: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==CNAME
Column #3: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==MX
Column #4: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==NS
Column #5: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==PTR
Column #6: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==SOA
Column #7: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==SRV
Column #8: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==TXT
Column #9: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==AXFR
Column #10: COUNT(dns.qry.type)dns.qry.type and dns.qry.type==IXFR
Column #11: COUNT(dns.flags.rcode)dns.flags.rcode and dns.flags.rcode==0
Column #12: COUNT(dns.flags.rcode)dns.flags.rcode and dns.flags.rcode!=0
                |   Column #0    |   Column #1    |   Column #2    |   Column #3    |   Column #4    |   Column #5    |   Column #6    |   Column #7    |   Column #8    |   Column #9    |   Column #10   |   Column #11   |   Column #12
Time            |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT |          COUNT
000.000-060.000               110               59                0               12                6                0               71                0                0                0                8              114               16
060.000-120.000               108               86                0               12                8                4              124                0                0                0               26              167               29
120.000-180.000                40               44                0                0               10                0               29                0                0                0                0               44                8
===================================================================

In the example above, in the first 60 seconds, we had 110 A queries, 59 AAAA queries; 114 successful responses and 16 unsuccessful responses.