我想在两台机器之间过滤ICMP数据包。
我已经创建了两个虚拟机,它们可以相互ping通。
我想在Wireshark和使用PCAP库的C程序中成功使用此过滤器。
假设第一台计算机的IP为10.0.0.1,第二台计算机的IP为10.0.0.2。
我使用this link在第一台机器的Wireshark的filter部分中编写了以下内容。
ip.dst == 10.0.0.2 && ip.src == 10.0.0.1 && !(icmp[0] == B ) && icmp
如果我对第二台机器ping 10.0.0.2
进行ping操作,则可以在Wireshark中看到过滤后的结果。但是,我不想看到这些以外的其他数据包。
如果我远程登录第二台机器telnet 10.0.0.2
,Wireshark还将捕获那些Telnet和TCP数据包。我不要。
此外,如果我ping外部网站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
函数中的pcap_compile
应该是什么?