SYSCTL.D(5)

BEZEICHNUNG
sysctl.d - Kernel-Parameter beim Systemstart konfigurieren

ÜBERSICHT

    /etc/sysctl.d/*.conf
    /run/sysctl.d/*.conf
    /usr/local/lib/sysctl.d/*.conf
    /usr/lib/sysctl.d/*.conf

Schlüssel.Name.unter.proc.sys = ein Wert
Schlüssel/Name/unter/proc/sys = ein Wert
Schlüssel/mittel.Teil.mit.Punkten/foo = 123
Schlüssel.mittel/Teil/mit/Punkten.foo = 123
-Schlüssel.der.nicht.fehlschlagen.wird = Wert
Schlüssel.Muster.*.mit.Glob = irgendwas
-Schlüssel.Muster.ausgeschlossen.mit.Glob
Schlüssel.Muster.außerkraftgesetzt.mit.Glob = angepasst

BESCHREIBUNG

Beim Systemstart liest systemd-sysctl.service(8) Konfigurationsdateien aus den obigen Verzeichnissen, um sysctl(8)-Kernelparameter zu konfigurieren.

KONFIGURATIONSFORMAT

Die Konfigurationsdateien enthalten eine Liste von durch Zeilenumbrüchen getrennten Variablenzuweisungen. Leere Zeilen und Zeilen, deren erstes von Leerraumzeichen verschiedenes Zeichen ein »#« oder »;« ist, werden ignoriert.

Beachten Sie, dass entweder »/« oder ».« als Trenner innerhalb von Sysctl-Variablennamen benutzt werden kann. Falls der erste Trenner ein Schrägstrich ist, werden die restlichen Schrägstriche und Punkte unverändert gelassen. Falls der erste Trenner ein Punkt ist, werden Punkte und Schrägstriche ausgetauscht. »kernel.domainname=foo« und »kernel/domainname=foo« sind äquivalent und führen dazu, dass »foo« nach /proc/sys/kernel/domainname geschrieben wird. Sowohl »net.ipv4.conf.enp3s0/200.forwarding« als auch »net/ipv4/conf/enp3s0.200/forwarding« beziehen sich auf /proc/sys/net/ipv4/conf/enp3s0.200/forwarding. Zum Schreiben des gleichen Wertes in alle passenden Schlüssel kann ein glob(7)-Muster benutzt werden. Schlüssel, für die ein explizites Muster existiert, werden von sämtlichen Glob-Vergleichen ausgeschlossen. Zusätzlich kann das Setzen eines Schlüssels explizit ausgeschlossen werden, indem der Schlüsselname mit vorangestelltem »-« angegeben wird und ihm kein »=« folgt, siehe ÜBERSICHT.

Sämtliche Berechtigungsfehler und Versuche, Variablen zu schreiben, die auf dem lokalen System nicht vorhanden sind, werden auf der Debug-Stufe protokolliert, führen aber nicht zum Fehlschlag des Dienstes. Andere Fehlertypen beim Setzen von Variablen werden mit höherer Priorität protokolliert und führen dazu, dass der Dienst am Ende einen Fehlschlag zurückliefert (nachdem andere Variablen verarbeitet wurden). Wird einer Variablenzuweisung ein einzelnes »-«-Zeichen vorangestellt, so werden abweichend davon Fehler aus beliebigen Gründen, die Variable zu setzen, auf der Stufe »debug« protokolliert und dies wird nicht zu einem Fehlschlag des Dienstes führen.

Die mit den sysctl.d-Dateien konfigurierten Einstellungen werden früh während des Systemstarts angewandt. Die Netzwerkschnittstellen-spezifischen Optionen werden auch individuell auf jede Netzschnittstelle angewandt, wenn diese im System auftaucht. (Genauer net.ipv4.conf.*, net.ipv6.conf.*, net.ipv4.neigh.* and net.ipv6.neigh.*).

Viele Sysctl-Parameter werden nur verfügbar, wenn bestimmte Kernelmodule geladen werden. Module werden normalerweise bei Bedarf geladen, z.B. wenn bestimmte Hardware eingesteckt oder das Netz aktiviert wird. Dies bedeutet, dass systemd-sysctl.service(8), das während der frühen Systemstartphase läuft, solche Parameter nicht konfigurieren wird, nachdem es ausgeführt wurde. Um solche Parameter zu setzen, wird empfohlen, eine udev(7)-Regel hinzuzufügen, um diese Parameter zu setzen, wenn diese verfügbar werden. Alternativ ist eine leicht einfachere und weniger effiziente Option, die Module zu modules-load.d(5) hinzuzufügen, wodurch diese statisch geladen werden, bevor die Sysctl-Einstellungen angewandt werden (siehe Beispiel unten).

KONFIGURATIONSVERZEICHNISSE UND RANGFOLGE

Konfigurationsdateien werden aus Verzeichnissen in /etc/, /run/, /usr/local/lib/ und /usr/lib/, in dieser Rangfolge, gelesen, wie im Abschnitt ÜBERSICHT oben aufgeführt. Dateien müssen die Endung ».conf« haben. Dateien in /etc/ setzen Dateien mit dem gleichen Namen in /run/, /usr/local/lib/ und /usr/lib/ außer Kraft. Dateien in /run/ setzen Dateien mit dem gleichen Namen unter /usr/lib/ außer Kraft.

Alle Konfigurationsdateien werden in lexikographischer Reihenfolge sortiert, unabhängig davon, in welchem Verzeichnis sie sich befinden. Falls mehrere Dateien die gleiche Option angeben, wird der Eintrag in der Datei mit dem lexikographisch letzten Namen Vorrang erhalten. Daher kann die Konfiguration in einer bestimmten Datei entweder komplett ersetzt werden (indem eine Datei mit dem gleichen Namen in einem Verzeichnis mit höherer Priorität abgelegt wird) oder einzelne Einstellungen können geändert werden (indem zusätzliche Einstellungen in einer Datei mit einem anderen Namen, der später angeordnet ist, angegeben werden).

Pakete sollten ihre Konfigurationsdateien in /usr/lib/ (Distributionspakete) oder /usr/local/lib/ (lokale Installationen) installieren [1]. Dateien in /etc/ sind für den lokalen Administrator reserviert, der diese Logik verwenden kann, um die durch die Lieferantenpakete bereitgestellten Konfigurationsdateien außer Kraft zu setzen. Es wird empfohlen, allen Dateinamen eine zweistellige Zahl und einen Bindestrich voranzustellen, um die Sortierung der Dateien zu vereinfachen.

Es wird empfohlen, allen Dateinamen eine zweistellige Zahl und einen Bindestrich voranzustellen, um die Sortierung vereinfachen. Es wird empfohlen, den Bereich 10-40 für Konfigurationsdateien in /usr/ und den Bereich 60-90 für Konfigurationsdateien in /etc/ und /run/ zu verwenden um sicherzustellen, dass lokale und flüchtige Konfigurationsdateien Priorität gegenüber Konfigurationsdateien haben, die vom Betriebssystemlieferanten geliefert werden.

Falls der Administrator eine vom Lieferanten bereitgestellte Konfigurationsdatei deaktivieren möchte, wird empfohlen, einen Symlink im Konfigurationsverzeichnis in /etc/ mit dem gleichen Dateinamen wie die des Lieferanten auf /dev/null zu setzen. Falls die Lieferantendatei im Initrd-Image enthalten ist, muss das Image neu erstellt werden.

BEISPIELE

Beispiel 1. Den YP-Domain-Namen des Kernels setzen

/etc/sysctl.d/domain-name.conf:

    kernel.domainname=example.com

Beispiel 2. Einstellungen nur anwenden, wenn ein bestimmtes Modul geladen ist (Methode eins)

/etc/udev/rules.d/99-bridge.rules:

    ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", \
          RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/net/bridge"

/etc/sysctl.d/bridge.conf:

    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0

Diese Methode wendet die Einstellungen an, wenn das Modul geladen wird. Bitte beachten Sie, dass über Bridges weitergeleitete Pakete durch Netfilter nicht gefiltert werden, außer das Modul »br_netfilter« ist geladen (seit Kernel 3.18), daher reicht es aus, das Modul einfach nicht zu laden, um das Filtern zu vermeiden.

Beispiel 3. Einstellungen nur anwenden, wenn ein bestimmtes Modul geladen ist (Methode zwei)

/etc/modules-load.d/bridge.conf:

    br_netfilter

/etc/sysctl.d/bridge.conf:

    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0

Diese Methode erzwingt, dass das Modul immer geladen wird. Bitte beachten Sie, dass über Bridges weitergeleitete Pakete durch Netfilter nicht gefiltert werden, außer das Modul »br_netfilter« ist geladen (seit Kernel 3.18), daher reicht es aus, das Modul einfach nicht zu laden, um das Filtern zu vermeiden.

Beispiel 4. Setzen von Netzwerk-Routing-Eigenschaften für alle Schnittstellen

/etc/sysctl.d/20-rp_filter.conf:

    net.ipv4.conf.default.rp_filter = 2
    net.ipv4.conf.*.rp_filter = 2
    -net.ipv4.conf.all.rp_filter
    net.ipv4.conf.hub0.rp_filter = 1

Der Schlüssel rp_filter wird für alle Schnittstellen außer »hub0« auf »2« gesetzt. Wir setzen zuerst net.ipv4.conf.default.rp_filter, damit alle später hinzugefügten Schnittstellen diesen Wert erhalten (dies deckt auch alle während des Betriebs erkannten Schnittstellen ab). Der Glob passt auf alle früher erkannten Schnittstellen. Der Glob passt auch auf net.ipv4.conf.all.rp_filter, der überhaupt nicht gesetzt werden soll und daher explizit ausgeschlossen wird. Und »hub0« ist von dem Glob ausgeschlossen, da er eine explizite Einstellung hat.

SIEHE AUCH

systemd(1), systemd-sysctl.service(8), systemd-delta(1), sysctl(8), sysctl.conf(5), modprobe(8)

ANMERKUNGEN

1.  💣💥🧨💥💥💣 Bitte beachten Sie, dass diese Konfigurationsdateien zu allen Zeiten verfügbar sein müssen. Falls /usr/local/ eine separate Partition ist, könnte diese während des frühen Systemstarts nicht verfügbar sein und darf dann nicht für Konfiguration verwandt werden.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.