草庐IT

linux - 如何在内核模块中捕获网络帧

我想在某个NIC接收到帧时捕获帧;从中提取一些信息(目前我需要捕获源MAC和源IP地址);将这些信息保存在一些公共(public)数据结构中;并让帧以它的方式上升到TCP/IP堆栈。我以前用过Netfilter,但显然它不提供链接层Hook。有什么办法可以做到这一点吗?我把它写成一个内核模块;运行Linux内核2.6.32 最佳答案 实际上Netfilter应该可以正常工作,因为它接收整个数据包(内部存储为sk_buff,其中包括链路层信息)。下面是一些可以帮助您入门的示例代码。此代码拦截给定设备的所有传入数据包并打印srcMAC和

linux - 如何在内核模块中捕获网络帧

我想在某个NIC接收到帧时捕获帧;从中提取一些信息(目前我需要捕获源MAC和源IP地址);将这些信息保存在一些公共(public)数据结构中;并让帧以它的方式上升到TCP/IP堆栈。我以前用过Netfilter,但显然它不提供链接层Hook。有什么办法可以做到这一点吗?我把它写成一个内核模块;运行Linux内核2.6.32 最佳答案 实际上Netfilter应该可以正常工作,因为它接收整个数据包(内部存储为sk_buff,其中包括链路层信息)。下面是一些可以帮助您入门的示例代码。此代码拦截给定设备的所有传入数据包并打印srcMAC和