dhcpdump: Monitor DHCP Traffic For Debugging Purpose
How do I dump DHCP packets under Linux / UNIX for monitoring or debugging purpose
You can parse DHCP packets using tcpdump and dhcpdump programs. dhcpdump provides a tool for visualization of DHCP packets as recorded and output by tcpdump to analyze DHCP server responses.
Example for tcpdump:
# tcpdump -lenx -i eth0 -s 1500 port bootps or port bootpc
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 1500 bytes
15:40:56.555424 00:19:d1:2a:ba:a8 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:d1:2a:ba:a8, length 300
0x0000: 4510 0148 0000 0000 8011 3996 0000 0000
0x0010: ffff ffff 0044 0043 0134 b321 0101 0600
0x0020: ba97 e476 0000 0000 0000 0000 0000 0000
0x0030: 0000 0000 0000 0000 0019 d12a baa8 0000
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000
0x0100: 0000 0000 0000 0000 6382 5363 3501 0132
0x0110: 04c0 a802 020c 0d76 6976 656b 2d64 6573
0x0120: 6b74 6f70 370d 011c 0203 0f06 770c 2c2f
0x0130: 1a79 2aff 0000 0000 0000 0000 0000 0000
0x0140: 0000 0000 0000 0000
15:41:02.005243 00:19:d1:2a:ba:a8 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:d1:2a:ba:a8, length 300
0x0000: 4510 0148 0000 0000 8011 3996 0000 0000
0x0010: ffff ffff 0044 0043 0134 b31b 0101 0600
0x0020: ba97 e476 0006 0000 0000 0000 0000 0000
0x0030: 0000 0000 0000 0000 0019 d12a baa8 0000
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000
0x0100: 0000 0000 0000 0000 6382 5363 3501 0132
0x0110: 04c0 a802 020c 0d76 6976 656b 2d64 6573
0x0120: 6b74 6f70 370d 011c 0203 0f06 770c 2c2f
0x0130: 1a79 2aff 0000 0000 0000 0000 0000 0000
0x0140: 0000 0000 0000 0000
15:41:02.007532 00:22:41:2f:f4:0a > 00:19:d1:2a:ba:a8, ethertype IPv4 (0x0800), length 342: 192.168.2.1.67 > 192.168.2.2.68: BOOTP/DHCP, Reply, length 300
0x0000: 4500 0148 74c1 0000 ff11 c08f c0a8 0201
0x0010: c0a8 0202 0043 0044 0134 6e61 0201 0600
0x0020: ba97 e476 0000 0000 0000 0000 c0a8 0202
0x0030: c0a8 0201 0000 0000 0019 d12a baa8 0000
0x0040: 0000 0000 0000 0000 5669 7665 6b2d 4769
0x0050: 7465 732d 4d61 6342 6f6f 6b2e 6c6f 6361
0x0060: 6c00 0000 0000 0000 0000 0000 0000 0000
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000
0x0100: 0000 0000 0000 0000 6382 5363 3501 0236
0x0110: 04c0 a802 0133 0400 014e 2001 04ff ffff
0x0120: 0003 04c0 a802 0106 04c0 a802 01ff 0000
0x0130: 0000 0000 0000 0000 0000 0000 0000 0000
0x0140: 0000 0000 0000 0000
15:41:02.007682 00:19:d1:2a:ba:a8 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:19:d1:2a:ba:a8, length 300
0x0000: 4510 0148 0000 0000 8011 3996 0000 0000
0x0010: ffff ffff 0044 0043 0134 0323 0101 0600
0x0020: ba97 e476 0006 0000 0000 0000 0000 0000
0x0030: 0000 0000 0000 0000 0019 d12a baa8 0000
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000
0x0100: 0000 0000 0000 0000 6382 5363 3501 0336
0x0110: 04c0 a802 0132 04c0 a802 020c 0d76 6976
0x0120: 656b 2d64 6573 6b74 6f70 370d 011c 0203
0x0130: 0f06 770c 2c2f 1a79 2aff 0000 0000 0000
0x0140: 0000 0000 0000 0000
15:41:02.085415 00:22:41:2f:f4:0a > 00:19:d1:2a:ba:a8, ethertype IPv4 (0x0800), length 342: 192.168.2.1.67 > 192.168.2.2.68: BOOTP/DHCP, Reply, length 300
0x0000: 4500 0148 74c2 0000 ff11 c08e c0a8 0201
0x0010: c0a8 0202 0043 0044 0134 6b61 0201 0600
0x0020: ba97 e476 0000 0000 0000 0000 c0a8 0202
0x0030: c0a8 0201 0000 0000 0019 d12a baa8 0000
0x0040: 0000 0000 0000 0000 5669 7665 6b2d 4769
0x0050: 7465 732d 4d61 6342 6f6f 6b2e 6c6f 6361
0x0060: 6c00 0000 0000 0000 0000 0000 0000 0000
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000
0x0100: 0000 0000 0000 0000 6382 5363 3501 0536
0x0110: 04c0 a802 0133 0400 014e 2001 04ff ffff
0x0120: 0003 04c0 a802 0106 04c0 a802 01ff 0000
0x0130: 0000 0000 0000 0000 0000 0000 0000 0000
0x0140: 0000 0000 0000 0000
Above output is not very useful. So you can use the dhcpdump command as follows:
# dhcpdump -i eth0
TIME: 2010-05-06 15:42:33.000
IP: 0.0.0.0 (0:19:d1:2a:ba:a8) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: e16fef09
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:19:d1:2a:ba:a8:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 3 (DHCPREQUEST)
OPTION: 50 ( 4) Request IP address 192.168.2.2
OPTION: 12 ( 13) Host name vivek-desktop
OPTION: 55 ( 13) Parameter Request List 1 (Subnet mask)
28 (Broadcast address)
2 (Time offset)
3 (Routers)
15 (Domainname)
6 (DNS server)
119 (Domain Search)
12 (Host name)
44 (NetBIOS name server)
47 (NetBIOS scope)
26 (Interface MTU)
121 (Classless Static Route)
42 (NTP servers)
---------------------------------------------------------------------------
TIME: 2010-05-06 15:42:40.003
IP: 0.0.0.0 (0:19:d1:2a:ba:a8) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: e16fef09
SECS: 7
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:19:d1:2a:ba:a8:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION: 53 ( 1) DHCP message type 3 (DHCPREQUEST)
OPTION: 50 ( 4) Request IP address 192.168.2.2
OPTION: 12 ( 13) Host name vivek-desktop
OPTION: 55 ( 13) Parameter Request List 1 (Subnet mask)
28 (Broadcast address)
2 (Time offset)
3 (Routers)
15 (Domainname)
6 (DNS server)
119 (Domain Search)
12 (Host name)
44 (NetBIOS name server)
47 (NetBIOS scope)
26 (Interface MTU)
121 (Classless Static Route)
42 (NTP servers)
---------------------------------------------------------------------------
TIME: 2010-05-06 15:42:40.006
IP: 192.168.2.1 (0:22:41:2f:f4:a) > 192.168.2.2 (0:19:d1:2a:ba:a8)
OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
XID: e16fef09
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 192.168.2.2
SIADDR: 192.168.2.1
GIADDR: 0.0.0.0
CHADDR: 00:19:d1:2a:ba:a8:00:00:00:00:00:00:00:00:00:00
SNAME: viveksrouter_devel
FNAME: .
OPTION: 53 ( 1) DHCP message type 5 (DHCPACK)
OPTION: 54 ( 4) Server identifier 192.168.2.1
OPTION: 51 ( 4) IP address leasetime 85536 (23h45m36s)
OPTION: 1 ( 4) Subnet mask 255.255.255.0
OPTION: 3 ( 4) Routers 192.168.2.1
OPTION: 6 ( 4) DNS server 192.168.2.1
---------------------------------------------------------------------------