During Sean Wilkerson's talk at last nights DojoSec meeting (http://www.dojosec.com), Sean discussed some simple open source monitoring tools included in the dsniff suite including urlsnarf, mailsnarf, etc used for validating assumptions about your security infrastructure and products. One of the questions during the talk was for a tool similar to these for DNS snarfing. Twenty minutes and 6 lines of python later. The output is in bind query log format so you should be able to throw it into your favorite query log parsing tool.
from scapy import *
if DNS in pkt and pkt[UDP].dport == 53:
print pkt.sprintf("client %IP.src%#%UDP.sport%: query: ") + \
pkt[DNSQR].qname + " " + pkt[DNSQR].sprintf("%qclass% %qtype% +")
iface = (sys.argv if (len(sys.argv) > 1) else 'eth0')
sniff(iface=iface, prn=dns_callback, filter="udp and port 53", store=0)