libpcap是否获得了数据包或实际数据包的副本?
通过复制,我的意思是:使用libpcap的应用程序获取数据包A,内核也获得数据包A.
实际上,我的意思是:仅使用libpcap的应用程序获取数据包A,但是内核没有得到它。
答案 0 :(得分:3)
内核将获取数据包然后通过一个过滤器列表(例如,通常有一个IPsec过滤器,一个防火墙等),一旦它通过所有这些过滤器,它就会将数据包传递给应用程序。 libpcap是另一个过滤器,但它只是将数据包添加到内部数据库进行处理,而不是检查数据包,修改或其他过滤器将执行的任何操作。
对于您想要做的事情,最简单的解决方案是使用防火墙。
答案 1 :(得分:3)
libpcap
不允许您按照自己的意愿行事。 pcap的目标是透明地接收系统中每个数据包的副本。
您应该研究如何与系统中的现有防火墙互操作,或者如何将自己的过滤器添加到netfilter系统(在Linux上)