如何在CentOS 5.3中禁​​用nf_conntrack内核模块而不重新编译内核


10

我正在运行CentOS 5.3,并希望禁用nf_conntrack模块以提高haproxy的网络性能。我正在使用一些简单的规则运行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,所以我不能完全放弃所有netfilters。有人有什么想法吗?

Answers:


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

    -A输入-m状态-状态相关,已确定-j接受

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

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

    IPTABLES_MODULES =“ ip_conntrack_netbios_ns”

    该模块需要ip_conntrack,我们正在尝试放弃它。

  3. 无需状态规则即可重新加载iptables。

    须藤iptables -F

    #添加您的真实规则

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

    须藤modprobe -r xt_NOTRACK nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state

    须藤modprobe -r nf_conntrack

  5. 确认您没有对/ proc / net / nf_conntrack的引用


1
非常感谢haproxy的创建者Willy Tarreau,为haproxy邮件列表提供了很棒的帮助!
2009年

有人知道您是否需要撤销第4步?
UpTheCreek 2014年

当我执行“ modprobe -rf xt_state”和“ modprobe -rf nf_conntrack_ipv6”时,它说“ FATAL:模块xt_state正在使用。”(在centos上),我该怎么办?
diyism

在ubuntu上,我可以运行“ iptables -F”和“ modprobe -rf xt_state nf_conntrack_ipv4”,而不会出现任何错误。
diyism

5
  • 如何添加模块/etc/modprobe.d/blacklist.conf

  • 你有没有尝试过:

    rmmod -f modulename
    

    虽然:

           -f --force
              此选项可能非常危险:除非有任何作用,否则它不会起作用
              编译内核时设置了CONFIG_MODULE_FORCE_UNLOAD。
              使用此选项,您可以删除正在使用的模块,
              或并非旨在删除或已标记为
              不安全的(请参见lsmod(8))。
    

4

如果您正在运行Haproxy,则需要在iptables中使用两种类型的规则来禁用端口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

0

当我执行“ modprobe -rf xt_state”和“ modprobe -rf nf_conntrack_ipv6”时,它说“ FATAL:模块xt_state正在使用。”(在centos上)。

“已使用”可能有用,它可以减少任何模块的使用次数: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中

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.