To expand on l0c0b0x‘s comment about using
bootp.type == 2as a filter. The bootp.type filter is only available in Wireshark/tshark. It is not available in tcpdump which the contextual location of his comment inclined me to believe.
Tshark works perfectly for this.
We have our network divided up into numerous broadcast domains, each with their own Linux-based probe with a point of presence on the “local” broadcast domain and on an administrative subnet in one fashion or another. Tshark combined with ClusterSSH allows me to easily look for DHCP traffic or (anything else for that matter) on the further flung corners of the network.
This will find DHCP replies using Linux:
# ifconfig ethX promisc # tshark -i ethX -n port 68 -R 'bootp.type == 2'