pcap 和原始套接字

pcap 和原始套接字

我想开发一个应用程序(模块或用户级,如果可能的话)来在 RHEL 中创建一个原始套接字,直接从内核窃取所有 2 级数据包(不被其他打开的套接字路由或处理)。我想将数据包提供给 pcap 以编程方式处理某些数据包类型。这样做最好的办法是什么?我看过有关零复制网络、pcap、BPF 的文章,但我猜它们都在处理数据包捕获/副本?

答案1

不要为接口指定 IP 地址。只需打开它,然后使用 libpcap 捕获数据包即可。如果它没有 IP 地址,如果您担心的话,内核将不理会它。

如果您希望接口具有由内核处理的 IP 地址并仅将某些 IP 数据包重定向到您的应用程序,netfilter 可以做到这一点。查看 NFQUEUE 或 NFLOG iptables 目标。

如果您关心数据包捕获性能,请查看PF_RING

否则,也许你可以更详细地解释你想要做什么,因为我不清楚。

相关内容