在重新启动时持续nf_conntrack_max

/proc我有两个条目nf_conntrack_max:

的/ proc / SYS /网/ netfilter的/ nf_conntrack_max
的/ proc / SYS /网/ nf_conntrack_max

似乎指向相同的价值作为改变一个也改变另一个。 将这两个设置在/etc/sysctl.conf

 net.netfilter.nf_conntrack_max = 65528
 net.ipv4.netfilter.ip_conntrack_max = 65535

重新启动后,该值仍为32764,因此更改无效。 有没有人遇到过这个? 我的猜测是,这些值是在相关的模块加载之前应用的,但希望也许有人已经知道解决scheme。

这是因为/proc/sys/net/nf_conntrack_max依赖于模块nf_conntrack 。 但是系统启动时这个模块默认不会被加载。

但如果你跑步

 iptables -t nat -L 

要么

 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

这个模块会自动加载并设置为你系统支持的最大数量(如果你的RAM大于4G,最大数量是65536,但是在不同的系统中会有所不同)。你可以在/etc/sysctl.conf设置一个更大的数字(比如6553600) /etc/sysctl.conf )。

解答

在文件/etc/modules的末尾添加一行:

 nf_conntrack 

这个模块会在执行sysctl之前在系统启动时加载。

我不使用Ubuntu,但是在我的CentOS思路中想到了这一点,我提出了同样的假设 – 系统pipe理已经被应用得太早了。 一些seaching显示这是自2006年以来的一个存档错误 。

它看起来像把另一个符号链接在优先> S40再次运行procps初始化脚本可能会做你所需要的。 根据bug总结,看起来像是对Ubuntu的sysctl方法进行了一些重新devise(有趣的是,这个bug被分配给了一个不知道它被分配的人,并且不能帮助它)。

因为它应该是:

 net.netfilter.nf_conntrack_max = 65535 

现在,您可以在不使用以下命令重新启动的情况下进行设置: sysctl -p /etc/sysctl.conf