我正在运行CentOS 5.3,并希望禁用nf_conntrack模块来提高haproxy的networking性能。 我用一些简单的规则运行iptables。 我并不需要连接跟踪。
我正在Rackspace云服务器上运行,所以我无法运行自定义内核。 我试过运行modprobe,但是这是行不通的。
[mmarano@w1 w1]$ sudo modprobe -n -r nf_conntrack FATAL: Module nf_conntrack is in use. [mmarano@w1 w1]$ uname -a Linux w1.somewhere.com 2.6.24-23-xen #1 SMP Mon Jan 26 03:09:12 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux [mmarano@w1 w1]$ cat /etc/redhat-release CentOS release 5.3 (Final)
撕掉这个之后,我想继续运行iptables,所以我不能完全抛弃netfilter。 任何人有任何想法?
删除对iptables中的状态模块的任何引用。 所以没有规则
-Ainput-m状态 – 状态RELATED,ESTABLISHED -j接受
状态模块需要nf_conntrack(ip_conntrack)模块
请在/ etc / sysconfig / iptables-config中删除以下行(如果存在)
IPTABLES_MODULES = “ip_conntrack_netbios_ns”
该模块需要ip_conntrack,我们正试图沟通。
无需您的状态规则重新加载iptables。
sudo iptables -F
#添加你的真实规则
放下模块。 我不得不使用:
sudo modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state
sudo modprobe -r nf_conntrack
确认您没有对/ proc / net / nf_conntrack的引用
把模块添加到/etc/modprobe.d/blacklist.conf怎么样?
你有没有尝试过:
rmmod -f modulename
虽然:
-f --force
这个选项可能是非常危险的,除非这个选项没有效果
编译内核时CONFIG_MODULE_FORCE_UNLOAD被设置。
有了这个选项,你可以删除正在使用的模块,
或者不是被devise为被删除,或者被标记为
不安全(见lsmod(8))。
如果您正在运行Haproxy,则需要在iptables中使用两种types的规则来禁用端口80中的conntrack:从客户端到您的平衡器的连接以及从平衡器到后端的其他连接。
这是一个有效的例子:
iptables -t raw -I PREROUTING -p tcp --dport 80 -j NOTRACK iptables -t raw -I PREROUTING -p tcp --sport 80 -j NOTRACK iptables -t raw -I OUTPUT -p tcp --dport 80 -j NOTRACK iptables -t raw -I OUTPUT -p tcp --sport 80 -j NOTRACK
当我做“modprobe -rf xt_state”和“modprobe -rf nf_conntrack_ipv6”它说:“致命:模块xt_state正在使用。”(在centos上)。
“modused”可能是有用的,它可以减less任何模块的使用次数: http ://www2.informatik.uni-freiburg.de/~danlee/fun/modused/
关键是:服务ip6tables停止
并将nf_conntrack,xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ipv6添加到/etc/modprobe.d/blacklist.conf