如何拦截内核中TCP层的数据包来分析数据?

时间:2016-06-01 16:42:38

标签: linux networking tcp linux-kernel

我打算在内核中找到某些数据包数据并拦截它(丢弃某些数据包或重定向它们)。一种自然的方式是以某种方式捕获所有数据包,检查其数据并丢弃/重定向某些数据包。

我试图直接在内核代码here中拦截它们,在point将数据复制到用户空间中,但无法访问服务器推送的数据而没有请求那里。

另一种选择可能是像this post这样的netfilter钩子。但是,这样的钩子在TCP层之下,似乎还没有处理重新排序和丢包。

所以我想知道是否有任何优雅的解决方案来捕获数据包并在TCP层上对它们进行操作?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果你只想收到特定的东西而丢弃不匹配的东西,你能打开一个附有BFP过滤器的raw / tcp套接字吗?

前 - https://www.kernel.org/doc/Documentation/networking/filter.txt