要禁用 iptables 很简单,曲线救国,禁用掉模块就好了:
$ cat /etc/modprobe.d/blacklist-iptables.conf
alias ip_tables off
alias iptable off
alias iptable_nat off
alias iptable_filter off
alias nf_nat off
alias nf_conntrack_ipv4 off
alias nf_conntrack off
alias nf_defrag_ipv4 off
alias x_tables off
alias xt_limit off
alias xt_tcpudp off
alias xt_multiport off
alias ipt_REJECT off
alias ipt_LOG off
再启用上面的文件之前,记得先把 iptables 规则清空、rmmod 掉对应的模块。这也是另外一种防止 『dropping packet』 的方式。
netfilter 的模块在 /lib/modules/2.6.32-38-server/kernel/net/ipv4/netfilter/ 里面。
通过 systool 可以看到被加载模块的 section:
# systool -v -m ip_tables
Module = “ip_tables”
Attributes:
initstate = “live”
refcnt = “1”
srcversion = “DC18D42211BCD06DB350605”
Sections:
.bss = “0xffffffffa0032d60”
.data = “0xffffffffa00328e0”
.data.read_mostly = “0xffffffffa0032980”
.exit.text = “0xffffffffa00324fc”
.gnu.linkonce.this_module= “0xffffffffa0032b00”
.init.text = “0xffffffffa000c000”
.note.gnu.build-id = “0xffffffffa0032568”
.parainstructions = “0xffffffffa0032650”
.ref.text = “0xffffffffa0032550”
.rodata = “0xffffffffa00325a0”
.rodata.str1.1 = “0xffffffffa00325c8”
.rodata.str1.8 = “0xffffffffa0032680”
.strtab = “0xffffffffa000cf78”
.symtab = “0xffffffffa000c0c0”
.text = “0xffffffffa002f000”
__kcrctab = “0xffffffffa0032770”
__ksymtab = “0xffffffffa0032740”
__ksymtab_strings = “0xffffffffa0032788”
__mcount_loc = “0xffffffffa00327c0”
查看当前模块的所有的详细情况:
$ modprobe -c | less
module 也有 Alias 一说,因此 “alias my-mod really_long_modulename” 意味着你可以使用 “modprobe my-mod” 而非 “modprobe really_long_modulename” 来加载模块。所以上面的 off 就好理解了。
跟 module 相关的还有个 blacklist 概念:
$ cat /etc/modprobe.d/blacklist-iptables.conf
blacklist ip_tables
blacklist iptable
blacklist iptable_nat
blacklist iptable_filter
blacklist nf_nat
blacklist nf_conntrack_ipv4
blacklist nf_conntrack
blacklist nf_defrag_ipv4
blacklist x_tables
blacklist xt_limit
blacklist xt_tcpudp
blacklist xt_multiport
blacklist ipt_REJECT
blacklist ipt_LOG
这个可以在系统启动的时候禁止加载这个模块,但是,尽管启动的时候禁掉了,但是如果在进入系统之后执行:
# iptables -L -n
系统又会自动加载诸如:
iptable_filter 1841 0
ip_tables 18201 1 iptable_filter
x_tables 22361 1 ip_tables
等模块,因此这种方式并不是很好。顺便提一句,使用 “blacklist” 可能会遇到依赖的问题,因此使用下面这个方式会比上面的这个更好:
install MODULE_NAME /bin/false
ref:
https://wiki.archlinux.org/index.php/Kernel_modules
转载请注明:爱开源 » 通过 modprobe 彻底禁用 netfilter