Wo ist der richtige Ort, um net.netfilter.nf_conntrack_buckets einzustellen?

12

Ich versuche gerade, net.netfilter.nf_conntrack_buckets beim Booten zu setzen. Ich ging zunächst davon aus, dass dies über sysctl.conf möglich ist, aber net.netfilter.nf_conntrack_buckets (und andere net.netfilter-Konfigurationen) wurden überhaupt nicht angewendet. Durch Hinzufügen von sysctl -p zu rc.local konnten alle net.netfilter-Konfigurationen mit Ausnahme von net.netfilter.nf_conntrack_buckets angewendet werden. Ich werde auch bemerken, dass der Versuch, dies über das Terminal mit sysctl -w einzustellen, zu "Fehler: Berechtigung für Schlüssel" net.netfilter.nf_conntrack_buckets "verweigert" führt.

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

Wo ist der richtige Ort dafür?

KelchM
quelle

Antworten:

11

Ich denke, dass Sysctl-Parameter nur zum Anzeigen ist. Sie möchten die /sys/module/nf_conntrack/parameters/hashsizeSchnittstelle für Laufzeitänderungen und die hashsizeModuloption verwenden, um sie beim ersten Laden des Moduls festzulegen.

Sie möchten einen Eintrag in einer /etc/modprobe.d/Datei, die ungefähr so ​​aussieht:

options nf_conntrack hashsize=XXXXX

Andrew B
quelle
Mir ist aufgefallen, dass wenn Sie die Hashgröße über / sys / module / nf_conntrack / parameters / hashsize einstellen, das net.netfilter.nf_conntrack_buckets sysctl nicht aktualisiert wird, während es geändert wird, wenn Sie es über modprobe und dann neu starten. Bedeutet das, dass das Ändern des Werts über die erste Methode den neuen Wert nicht vollständig anwendet?
andresp
5

Weiter zur Antwort von Andrew B:

Aus irgendeinem Grund wird in der RHEL-Dokumentation empfohlen, stattdessen ein ausführbares Shell-Skript mit einem Namen wie nf_conntrack_hashsize.modulesextension zu /etc/sysconfig/modulesverwenden. Ich habe keine Idee warum. Der Inhalt würde so aussehen:

#!/bin/sh
exec /sbin/modprobe nf_conntrack hashsize=262144
Richard Barrell
quelle
Scheint so, als ob dies benötigt wird, wenn Sie zusätzliche Module laden möchten, die sonst nicht geladen worden wären. [quote] Sie können angeben, welche zusätzlichen Module geladen werden sollen, indem Sie ein neues <Dateiname> .modules erstellen. [/ quote]
hbogert
1

Sie müssen eine Datei mit dem Namen localhost im Verzeichnis /etc/modprobe.d/ ablegen.

Fügen Sie in dieser Datei die folgenden Zeilen hinzu (Wert ist ein Beispiel):

options nf_conntrack hashsize=333333

Und nun, die schnellere Lösung ist ein Neustart. Die andere Option ist, das Kernelmodul nf_conntrack neu zu laden. Dies ist etwas schwierig, da es mit anderen Modulen verbunden ist, die Module ausführen.

Überprüfen Sie das Ergebnis mit:

cat /sys/module/nf_conntrack/parameters/hashsize
Ricardo Fraile
quelle