Я бы хотел отфильтровать пакеты ICMP между двумя компьютерами.
Я создал две виртуальные машины, и они могут пинговать друг друга.
Я бы хотел, чтобы этот фильтр был успешным как в Wireshark, так и в программе на языке C, использующей библиотеку PCAP.
Допустим, IP-адрес первой машины - 10.0.0.1, IP-адрес второй - 10.0.0.2.
Я написал следующее в разделе фильтров Wireshark на первом компьютере, используя эту ссылку .
ip.dst == 10.0.0.2 && ip.src == 10.0.0.1 && !(icmp[0] == B ) && icmp
Если я пингую на второй компьютер ping 10.0.0.2
, я вижу отфильтрованный результат в Wireshark. Однако я не хочу видеть другие пакеты, кроме этих.
Если я подключаюсь к второй машине telnet 10.0.0.2
, Wireshark также перехватывает эти пакеты Telnet и TCP. Я этого не хочу.
Кроме того, если я пингую внешний веб-сайт ping 185.60.216.35
, Wireshark также фиксирует это. Адрес источника отображается как 10.0.0.1, а адрес назначения - 186.60.216.35.
Я просто хочу отфильтровать соединение между машиной 1 и машиной 2, и наоборот.
только фильтр ICMP-соединения.
Что я делаю не так?
ifconfig
первой машины:
eth0 Link encap:Ethernet HWaddr 08:00:27:55:70:a9
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
ifconfig
второй машины:
eth0 Link encap:Ethernet HWaddr 08:00:27:73:6d:62
inet addr:10.0.0.2 Bcast:10.0.0.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
Кроме того, какой должна быть функция pcap filter expression
in pcap_compile
?