【发布时间】:2015-04-06 09:50:31
【问题描述】:
我正在开发一个内核模块,它将使用 netfilter 钩子以各种方式破坏/过滤数据包,但是在这样做时,我想避免使用该钩子绕过其他任何东西(例如 iptables),因此我的模块不会不要干扰它们的正常运行。到目前为止,我的研究还没有提供任何关于访问同一个钩子的多个服务/模块如何交互的信息。
这可能吗(也许它已经自动发生了),如果可以,我可以设置挂钩触发服务/模块的顺序吗?
【问题讨论】:
-
你能显示一些代码吗?很久以前我用过
ebtables,但如果我有机会看一下代码,我可能会想出一些办法。理想情况下,您需要发布一个完整的内核模块来安装钩子(但钩子实际上不需要做任何事情)。 -
感谢沙巴兹的建议。在这个阶段我还没有编写任何代码,但我试图了解这是否可能,或者我是否需要在用户空间中做一些事情。如果在此期间没有其他任何内容弹出,我一定会在我启动并运行一些代码时发布一些代码。再次感谢您的帮助。
-
我明白了。 netfilter 是否支持特定事件的多个挂钩或单个事件?在较早的情况下,逻辑上应该有一种方法可以在“之前”或“之后”安装其他钩子或类似的东西。在后一种情况下,逻辑上应该有一种方法来获取旧处理程序,以便您可以自己调用它(如下所示:
old_handler = install_my_handler(my_handler);和稍后在my_handler中,您调用old_handler或者在右边的开头结束。不过,这些只是猜测,没有看到我无法判断的代码。
标签: linux-kernel kernel-module netfilter