设置net.netfilter.nf_conntrack_buckets的正确位置在哪里?


12

我目前正在尝试在启动时设置net.netfilter.nf_conntrack_buckets。我最初以为可以通过sysctl.conf完成此操作,但是根本没有应用net.netfilter.nf_conntrack_buckets(和其他net.netfilter配置)。将sysctl -p添加到rc.local可以应用所有net.netfilter配置,但net.netfilter.nf_conntrack_buckets除外。我还将注意到,尝试使用sysctl -w在终端上进行设置会导致``错误:键'net.netfilter.nf_conntrack_buckets''上的权限被拒绝''

# This should be applied at boot
net.netfilter.nf_conntrack_max=1966080
net.netfilter.nf_conntrack_buckets=245760

正确的位置在哪里?

Answers:


11

我认为sysctl参数仅用于查看。您将需要使用该/sys/module/nf_conntrack/parameters/hashsize接口进行运行时更改,并使用hashsize模块选项在初始模块加载期间进行设置。

您想要一个/etc/modprobe.d/看起来像这样的文件中的条目:

options nf_conntrack hashsize=XXXXX


我已经注意到,如果您通过/ sys / module / nf_conntrack / parameters / hashsize设置了hashsize,则net.netfilter.nf_conntrack_buckets sysctl不会更新,而如果您通过modprobe进行重新启动,则会更改它。这是否意味着通过第一种方法更改值不会完全应用新值?
andresp '19

5

进一步回答Andrew B:

出于某种原因,RHEL文档建议将带有nf_conntrack_hashsize.modules扩展名的可执行Shell脚本放入其中/etc/sysconfig/modules。我不知道为什么。内容如下所示:

#!/bin/sh
exec /sbin/modprobe nf_conntrack hashsize=262144

如果您想加载其他原本不会加载的模块,则似乎需要这样做。[quote]您可以通过创建一个新的<file_name> .modules [/ quote]指定要加载的其他模块
hbogert

1

您需要在/etc/modprobe.d/目录中放置一个名为localhost的文件。

在此文件中,添加以下行(值是一个示例):

options nf_conntrack hashsize=333333

现在,更快速的解决方案是重新启动,另一种选择是尝试重新加载nf_conntrack内核模块,这有点困难,因为它与其他正在运行的模块链接在一起。

用以下方法检查结果:

cat /sys/module/nf_conntrack/parameters/hashsize
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.