Ferramentas para efetuar o debug de DNS sempre são um achado para a maioria de nós, SysAdmins.
Boa parte dos problemas encontrados em uma rede no suporte
diário aos usuários é causado por alguma configuração mal feita de DNS na outra ponta, ou até, algum problema que o computador do usuário tenha ( algum malware instalado modifica requisições DNS, e outras coisitas mais ).
Lendo o meu feed a algum tempo atrás, me deparei com uma ferramenta altamente mão na roda. Ela se chama DNSCAP.
O Dnscap é uma comando que permite que você veja todas as requisições de DNS que estão pssando por uma interface em um formato parecido com o dig ou então, em binário. Apesar do tcpdump te mostrar as saídas da porta 53, o dnscap já filtra isto e lhe mostra em um formato super amigável tudo que você precisa saber para debugar mais rapidamente qualquer coisa nas requisições DNS.
O exemplo abaixo foi feito no meu notebook, usando a opção -i , que está na cara que é a interface. A opção -g que foi usada abaixo mostra as saída no em um formato bem parecido com o dig. Se fosse usado o -b ela estaria em formato binário ( formato este bem parecido com o gerado pelo tcpdump ).
[ataliba@neo ~]$ sudo dnscap -i wlan0 -g
;@ 2011-02-07 17:02:13.054917 - 63 octets via wlan0 (msg #0)
;: [10.10.255.100]:50637 -> [10.10.255.1]:53
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36647
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; www.google.com.br, type = A, class = IN
--
;@ 2011-02-07 17:02:13.054984 - 63 octets via wlan0 (msg #1)
;: [10.10.255.100]:50637 -> [10.10.255.1]:53
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1530
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; www.google.com.br, type = AAAA, class = IN
--
;@ 2011-02-07 17:02:13.056597 - 137 octets via wlan0 (msg #2)
;: [10.10.255.1]:53 -> [10.10.255.100]:50637
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36647
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; www.google.com.br, type = A, class = IN
www.google.com.br. 3d22h54m11s IN CNAME www.google.com.
www.google.com. 6d23h38m36s IN CNAME www.l.google.com.
www.l.google.com. 2m50s IN A 64.233.163.104
--
;@ 2011-02-07 17:02:13.200449 - 111 octets via wlan0 (msg #3)
;: [10.10.255.1]:53 -> [10.10.255.100]:50637
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1530
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; www.google.com.br, type = AAAA, class = IN
www.google.com.br. 3d22h54m10s IN CNAME www.google.com.
www.google.com. 6d23h38m35s IN CNAME www.l.google.com.
--
Outro uso legal, é se estiveremos em um gateway e precisarmos pegar somente as requisições de um host da lan, como o 192.168.45.60 :
# dnscap -i eth0 -r 192.168.45.60 -g
Assim, conseguimos na tela somente as requisições deste host em específico.
Ou seja, usando a criatividade dá para encontrar milhares de possíveis uso para isto aqui. Eu pelo menos estou me divertindo até aqui no Desktop vendo as trocentas requisições que cada site gera para ser carregado :-)