如何使用原始套接字只监听有用的流量?

时间:2014-07-29 14:34:13

标签: linux iptables libpcap raw-sockets bpf

三个相关问题:

  1. 原始套接字是否有任何过滤方法等同于内核内BPF(由libpcap使用)?

  2. 打开原始套接字是否意味着它在机器上接收每个 IP数据包?

  3. iptables如何与原始套接字交互 - 原始套接字是否看到iptables丢弃的数据包?

  4. BPF - http://lwn.net/Articles/599755/

1 个答案:

答案 0 :(得分:2)

  
      
  1. 原始套接字是否有任何过滤方法等同于内核内BPF(由libpcap使用)?
  2.   

他们确实做到了,而且它不仅仅是等价的:它们本身也支持BPF过滤器。你会附上这样的套接字:

 setsockopt(socket, SOL_SOCKET, SO_ATTACH_FILTER, &bpf_filter, sizeof(bpf_filter));

this question中有一个完整的例子。)

在过去的几年里,BPF在Linux上经历了很多变化,你现在可以将它附加到各种网络连接:套接字,还有tc入口/出口接口,XDP(在带有兼容驱动程序的网卡上) 。另外:kprobes,tracepoints,perf事件,cgroups,或许更多...用于跟踪/监控。

我不太清楚回答问题2和3,抱歉。