NF_INET_LOCAL_IN挂钩不适用于Linux 4.19中的网桥docker

问题描述

拓扑是

physical x86 server  -> linux bridge -> docker(on same x86 server)

流量如下

client -> server -> bridge -> docker 

我们有一个内核模块(通过_nf_register_hook注册),该模块具有nf个钩子,如下所示:

        .hook = my_hook,#if LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
        .owner = THIS_MODULE,#endif
        .pf = PF_INET,.hooknum = NF_INET_LOCAL_IN,.priority = NF_IP_PRI_FirsT,

我们发现了一个奇怪的情况(模块已在服务器上加载):

  • 对于Linux 3.10,my_hook函数可以很好地处理到docker的流量,
  • 对于Linux 4.19 my_hook不会触发到docker的流量。

顺便说一句,我们启用

net.bridge.bridge-nf-call-iptables = 1

仅用于记录目的。

看起来与名称空间相关,但是_nf_register_hook循环所有名称空间。

有人可以给我一些建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)