在ARM上移植了iptables1.3.8后,运行出现问题:
$ iptables -A PREROUTING -i ppp0 -t mangle -p udp --dport 1234 -j MARK --set-mark 0x2
modprobe: module ip_tables not found.
modprobe: failed to load module ip_tables
modprobe: module ip_tables not found.
modprobe: failed to load module ip_tables
问题出在--set-mark上,但是我的filter中的所有模块全部编进内核了。
你是说ip_tables这个模块你直接编译进内核了,没有编译成模块的形式?
$ iptables -A PREROUTING -i ppp0 -t mangle -p udp --dport 1234 -j MARK --set-mark 0x2
modprobe: module ip_tables not found.
modprobe: failed to load module ip_tables
modprobe: module ip_tables not found.
modprobe: failed to load module ip_tables
问题出在--set-mark上,但是我的filter中的所有模块全部编进内核了。
不知道和IPTABLES相关的模块是如何加载的。纳闷中,求高手指点!
你是说ip_tables这个模块你直接编译进内核了,没有编译成模块的形式?
是的,有关IPTABLES的模块全部编进内核了。
其实iptables相关的内核模块就编译成内核模块好了,需要加载的时候,程序会根据实际的需求再去加载的。 你的这个错误应该是iptables命令行执行的时候要去检查这个模块没有加载,所以要执行加载的动作。但是modules下又没有。 |
iptables不是用内核的netfilter么? |
内核态使用的是Netfilter框架 |
iptables 使用的一些 module 是基于内核 netfilter 框架后续开发的 iptables 本身的 match module 或者 TARGET module 是挂载到自己的 iptables kernel module hook 上的 而 iptables kernel module 是挂载到内核的 netfilter 框架上的 |
问题解决,即使编进内核,命令依然会去modules中调取模块。必须编成模块。 |