DNScap : debug et trace DNS
dnscap fait parti de ces outils d’analyse de flux et de troubleshooting basé sur le sniff des échanges. Il pourrait se rapprocher du célèbre tcpdump, à ceci près qu’il est, comme son nom l’indique, entièrement dédié aux flux concernant le DNS.
L’installation est simple, concise, et l’outil est directement utilisable en l’état. Comme d’habitude, on récupère les sources, un coup de ./configure, un coup de make install.
$ wget http://dnscap.dns-oarc.net/dnscap-134.tar.gz $ tar zxvf dnscap-134.tar.gz && cd dnscap-134 $ ./configure $ make install mkdir -p /usr/local/bin /usr/local/share/man if [ -f /usr/local/bin/dnscap ]; then \\ mv -f /usr/local/bin/dnscap /usr/local/bin/dnscap.old; fi cp dnscap /usr/local/bin cp dnscap.cat1 /usr/local/man/cat1/dnscap.1 cp: ne peut créer le fichier régulier `/usr/local/man/cat1/dnscap.1': Aucun fichier ou dossier de ce type make: *** [install] Erreur 1
Ce que je vais faire n’est pas très beau, mais comme c’est d’un man dont on parle, ça rentre dans l’acceptable.
$ ln -s /usr/local/man/man1 /usr/local/man/cat1 $ make install mkdir -p /usr/local/bin /usr/local/share/man if [ -f /usr/local/bin/dnscap ]; then \\ mv -f /usr/local/bin/dnscap /usr/local/bin/dnscap.old; fi cp dnscap /usr/local/bin cp dnscap.cat1 /usr/local/man/cat1/dnscap.1
Jetons un oeil aux options disponibles, ça peut aider :
$ dnscap -help dnscap: usage error: -h takes only [ir] dnscap: version V1.0-OARC-r124 (2011-03-09) usage: dnscap [-?pd1g6fT] [-i <if>]+ [-r <file>]+ [-l <vlan>]+ [-u <port>] [-m [qun]] [-e [nytfsxir]] [-h [ir]] [-s [ir]] [-a <host>]+ [-z <host>]+ [-A <host>]+ [-Z <host>]+ [-w <base> [-k <cmd>]] [-t <lim>] [-c <lim>] [-x <pat>]+ [-X <pat>]+ [-B <datetime>]+ [-E <datetime>]+ note: the -? or -\\? option will display full help text
Et comme on est curieux, voyons ce que ça donne. Bien entendu, pour les besoins, j’ai pingué une machine qui n’était pas dans mon cache ARP et qui porte le doux nom de arctic. Les flux sont donc directement affichés, formatés en mode dig-like, et ça donne ça :
$ dnscap -i eth0 -g [61] 2011-11-16 13:38:51.505423 [#0 eth0 0] \\ [192.168.16.145].46889 [192.168.10.2].53 \\ dns QUERY,NOERROR,20694,rd \\ 1 arctic.k-tux.com,IN,A 0 0 0 [153] 2011-11-16 13:38:51.505824 [#1 eth0 0] \\ [192.168.10.2].53 [192.168.16.145].46889 \\ dns QUERY,NOERROR,20694,qr|aa|rd|ra \\ 1 arctic.k-tux.com,IN,A \\ 1 arctic.k-tux.com,IN,A,86400,192.168.20.43 \\ 2 k-tux.com,IN,NS,86400,dns1.k-tux.com \\ k-tux.com,IN,NS,86400,dns2.k-tux.com \\ 2 dns1.k-tux.com,IN,A,86400,192.168.10.2 \\ dns2.k-tux.com,IN,A,86400,192.168.10.3 [69] 2011-11-16 13:38:51.513186 [#2 eth0 0] \\ [192.168.16.145].41402 [192.168.10.2].53 \\ dns QUERY,NOERROR,59669,rd \\ 1 43.21.168.192.in-addr.arpa,IN,PTR 0 0 0 [174] 2011-11-16 13:38:51.513522 [#3 eth0 0] \\ [192.168.10.2].53 [192.168.16.145].41402 \\ dns QUERY,NOERROR,59669,qr|aa|rd|ra \\ 1 43.21.168.192.in-addr.arpa,IN,PTR \\ 1 43.21.168.192.in-addr.arpa,IN,PTR,86400,arctic.k-tux.com \\ 2 168.192.in-addr.arpa,IN,NS,86400,dns2.k-tux.com \\ 168.192.in-addr.arpa,IN,NS,86400,dns1.k-tux.com \\ 2 dns1.k-tux.com,IN,A,86400,192.168.10.2 \\ dns2.k-tux.com,IN,A,86400,192.168.10.3 ^Cdnscap: signalled break
Le principal intérêt est de vérifier que vous n’avez pas de pépin sur vos serveurs DNS, et notamment avec ce qu’ils répondent, cela va de soit.
Il existe un joli éventail d’outils dédiés aux checks du DNS signés de la même entité (OARC, comme vous pouvez le voir lors du run de dnscap) et qui sont à votre totale disposition. Il peut être bon d’y jeter un oeil et de les garder sous le coude au besoin :)