我打算在内核中找到某些数据包数据并拦截它(丢弃某些数据包或重定向它们)。一种自然的方式是以某种方式捕获所有数据包,检查其数据并丢弃/重定向某些数据包。
我试图直接在内核代码here中拦截它们,在point将数据复制到用户空间中,但无法访问服务器推送的数据而没有请求那里。
另一种选择可能是像this post这样的netfilter钩子。但是,这样的钩子在TCP层之下,似乎还没有处理重新排序和丢包。
所以我想知道是否有任何优雅的解决方案来捕获数据包并在TCP层上对它们进行操作?
谢谢!
答案 0 :(得分:2)
如果你只想收到特定的东西而丢弃不匹配的东西,你能打开一个附有BFP过滤器的raw / tcp套接字吗?
前 - https://www.kernel.org/doc/Documentation/networking/filter.txt