sysctl.d - Kernel-Parameter beim Systemstart konfigurieren
/etc/sysctl.d/*.conf
/run/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
Beim Systemstart liest
systemd-sysctl.service(8) Konfigurationsdateien
aus den obigen Verzeichnissen, um
sysctl(8)-Kernelparameter zu
konfigurieren.
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).
Konfigurationsdateien werden aus Verzeichnissen in /etc/, /run/, /usr/local/lib/
und /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 /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. 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.
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.
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+="/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:
/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.
systemd(1),
systemd-sysctl.service(8),
systemd-delta(1),
sysctl(8),
sysctl.conf(5),
modprobe(8)
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann
<
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 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