据我了解,对于 IPv4,我需要捕获
- UDP 端口 67 和 68,
- 地址地址解析协议,
- ICMP 回显请求和答复,
对于 IPv6,我需要
- UDP 端口 546 和 547,
- 所有与 DHCP 相关的多播地址,
- ICMPv6 邻居发现。
我想使用 tcpdump 或 wireshark 捕获 DHCP 相关流量以供后续分析。
虽然我想使过滤器尽可能具体以获得较小的捕获文件,但我不想错过一些重要的数据包,例如用于验证 IP 地址尚未被占用的数据包。
我是否遗漏了什么?
答案1
我选择了以下 PCAP 过滤器:
( udp and ( port 67 or port 68 ) )
or arp
or ( icmp and (icmp[icmptype] == 8 or icmp[icmptype] == 0 ) )
or ( udp and ( port 546 or port 547 ) )
or ( icmp6 and ( ip6[40] == 135 or ip6[40] == 136 ) )
or dst net ff02:0:0:0:0:1:ff00::/104
or dst host ff01::1
or dst host ff02::1
or dst host ff02::1:2
or ( icmp6 and ( ip6[40] == 128 or ip6[40] == 129 ) )
前三行捕获 DHCPv4、ARP(重复地址检测)和 PING。
第四行捕获 DHCPv6,第五至第八行捕获 IPv6 的重复地址检测。第九行捕获 DHCPv6 代理的多播,最后一行用于 PING6。
当然,这会捕获许多与 DHCP 流量无关的数据包。这些必须在事后进行整理。
也许根本不需要 PING 和 PING6 流量。
答案2
过滤器port 67 or port 68
将为您提供 DHCP 对话本身,这是正确的。
过滤器arp
应捕获子网上的 arp 流量。这本质上是广播,因此可以从子网上的任何端口捕获。
并且您已经概述了 ICMP 请求。
我想说你有一个完整的清单。
答案3
您希望过滤所有 BOOTP 流量,因为 DHCP 使用 BOOTP 作为通信协议。请参见: