如何在不重新编译内核的情况下禁用CentOS 5.3中的nf_conntrack内核模块

我正在运行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。 任何人有任何想法?

  1. 删除对iptables中的状态模块的任何引用。 所以没有规则

    -Ainput-m状态 – 状态RELATED,ESTABLISHED -j接受

    状态模块需要nf_conntrack(ip_conntrack)模块

  2. 请在/ etc / sysconfig / iptables-config中删除以下行(如果存在)

    IPTABLES_MODULES = “ip_conntrack_netbios_ns”

    该模块需要ip_conntrack,我们正试图沟通。

  3. 无需您的状态规则重新加载iptables。

    sudo iptables -F

    #添加你的真实规则

  4. 放下模块。 我不得不使用:

    sudo modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state

    sudo modprobe -r nf_conntrack

  5. 确认您没有对/ 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