Capturing DNS Requests
How to capture DNS requests in Linux using the tcpdump utility.
Warning: There is a dot after the domain, this is intended output from tcpdump
The command is:
sudo tcpdump -l port 53 2>/dev/null | grep --line-buffered ' A? ' | cut -d' ' -f8Let me break it down:
sudo tcpdump -l port 53 2>/dev/null
sudo - We can't use tcpdump without root permissions.
tcpdump -l - Run tcpdump with the -l flag, which means that it will make stdout line buffered.
port 53 - DNS requests go through port 53 so we'll want to capture that
2>/dev/null - Send stderr to /dev/null.
grep --line-buffered ' A? '
grep --line-buffered - Run grep with the --line-buffered flag, which means that grep will use line buffering.
' A? ' - search for A? and only return lines that match.
cut -d' ' -f8
cut - Run the cut utility
-d' ' - Use a space as the delimeter
-f8 - Get the eigth column