Фильтр ICMP-пакетов с заданными IP-адресами - PullRequest
0 голосов
/ 18 января 2019

Я бы хотел отфильтровать пакеты 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?

...