这是在 Linux 操作系统上。
我看到在某些机器上net.bridge.bridge-nf-call-iptables
modprobe
在过滤之前变量并不存在br_netfilter
。我还看到有些机器bridge
加载了模块并且本身引入了这个变量。
有没有办法知道我应该加载哪个模块才能获取特定变量?
答案1
没有自动数据库将 sysctl 变量与模块相关联。您可以搜索模块二进制文件,并希望在其他字符串中找不到该变量名称(这个不是)。搜索最后一部分,即bridge-nf-call-iptables
,完整的字符串不存在于二进制文件中,它是动态构造的。
grep -rl bridge-nf-call-iptables /lib/modules/`uname -r`
或者,您可以查看文档 - 但它并不总是告诉您,在这种情况下它没有说。所以你只剩下源代码。首先查找字符串(同样,仅查找最后一部分);在最近的内核中它位于net/bridge/br_netfilter_hooks.c
。现在检查makefile 在同一目录下看看这个源文件是如何构建的。相关行是
br_netfilter-y := br_netfilter_hooks.o
这意味着如果br_netfilter
模块已构建,那么它包含来自 的代码br_netfilter_hooks.c
,因此该br_netfilter
模块就是您需要的模块。