我目前正在尝试在启动时设置 net.netfilter.nf_conntrack_buckets。我最初假设这可以通过 sysctl.conf 来完成,但 net.netfilter.nf_conntrack_buckets(和其他 net.netfilter 配置)根本没有应用。将 sysctl -p 添加到 rc.local 允许应用除 net.netfilter.nf_conntrack_buckets 之外的所有 net.netfilter 配置。我还要注意,尝试使用 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
哪里是做这件事的正确地方?
答案1
我认为 sysctl 参数仅供查看。您需要使用/sys/module/nf_conntrack/parameters/hashsize
界面进行运行时更改,并使用hashsize
模块选项在初始模块加载期间进行设置。
你可能希望/etc/modprobe.d/
文件中的一个条目看起来像这样:
options nf_conntrack hashsize=XXXXX
答案2
进一步回答 Andrew B 的问题:
由于某种原因,RHEL 文档建议将可执行的 shell 脚本放入,其名称类似于nf_conntrack_hashsize.modules
extension /etc/sysconfig/modules
。我不知道为什么。内容看起来如下:
#!/bin/sh
exec /sbin/modprobe nf_conntrack hashsize=262144
答案3
您需要将一个名为 localhost 的文件放在 /etc/modprobe.d/ 目录中。
在此文件中,添加以下行(值是示例):
options nf_conntrack hashsize=333333
现在,更快的解决方案是重新启动,另一个选择是尝试重新加载 nf_conntrack 内核模块,这有点困难,因为它与其他正在运行的模块相连。
使用以下命令检查结果:
cat /sys/module/nf_conntrack/parameters/hashsize