Насколько я понимаю, для IPv4 мне нужно было бы захватывать
а для IPv6 мне понадобится
Я хочу захватить трафик, связанный с DHCP, с помощью tcpdump или wirehark для последующего анализа.
Хотя я хочу сделать фильтр как можно более конкретным, чтобы получить небольшой файл захвата, я не хочу пропустить некоторые важные пакеты, подобные тем, которые используются для проверки того, что IP-адрес еще не занят.
Я что-то упускаю?
Я остановился на следующем фильтре 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 вообще не нужен.
Фильтр port 67 or port 68
даст вам сам диалог DHCP, это правильно.
Фильтр arp
должен захватывать трафик arp в подсети. Это широковещательный характер, поэтому его можно перехватить с любого порта подсети.
И запросы ICMP, которые вы уже обрисовали.
Я бы сказал, что у вас есть исчерпывающий список.
Вы хотите отфильтровать весь трафик BOOTP, поскольку DHCP использует протокол BOOTP как протокол связи. Посмотри это: