Zum Inhalt springen

sysctl

Aus Foxwiki

sysctl - Kernel-Parameter zur Laufzeit konfigurieren

Beschreibung

sysctl stellt ein Benutzerraum-Frontend für Kernel-Parameter im virtuellen Dateisystem /proc/sys bereit

  • Der Zugriff auf diese Parameter erfolgt über das Pseudo-Dateisystem Procfs, das auf /proc eingehängt sein muss
  • Schreibzugriffe über sysctl -w ändern Werte im laufenden Kernel, sind jedoch nicht dauerhaft und gehen nach einem Neustart verloren
Einstellungen

Persistent

Konfigurationsfragmente

  • /run/sysctl.d
  • /etc/sysctl.d
  • /usr/local/lib/sysctl.d
  • /usr/lib/sysctl.d
  • /lib/sysctl.d

Installation

sysctl ist Teil des Pakets procps

Aufruf

sysctl [options] [variable[=value]] [...]
sysctl -p [file or regexp] [...]

Optionen

Unix GNU Parameter Beschreibung
-n --values Nur den Wert ausgeben, ohne Parameternamen
-e --ignore Fehler für unbekannte Parameter ignorieren
-N --names Nur Parameternamen ausgeben (z. B. für programmierbare Completion)
-q --quiet Werte nicht auf stdout ausgeben
-w --write Kernel-Parameter (sysctl-Einstellungen) ändern
-p --load [=FILE] Einstellungen aus der angegebenen Datei laden, standardmäßig /etc/sysctl.conf
  • "-" als Dateiname: Lesen der Einstellungen von der Standardeingabe
  • Mit dieser Option werden Argumente von sysctl als Dateinamen interpretiert und in der angegebenen Reihenfolge eingelesen
  • Der Dateiname kann als regulärer Ausdruck angegeben werden
-a --all Alle aktuell verfügbaren Parameter und Werte anzeigen
--deprecated Veraltete Parameter in die Ausgabe von --all einbeziehen
-b --binary Wert ohne abschließenden Zeilenumbruch ausgeben
--system Einstellungen aus allen Systemkonfigurationsdateien laden
  • /run/sysctl.d/*.conf
  • /etc/sysctl.d/*.conf
  • /usr/local/lib/sysctl.d/*.conf
  • /usr/lib/sysctl.d/*.conf
  • /lib/sysctl.d/*.conf
  • /etc/sysctl.conf
-r --pattern pattern Nur Parameter anwenden bzw. anzeigen, deren Name zum Muster passt (erweiterte reguläre Ausdrücke)
-A Alias für -a
-d Alias für -h
-f Alias für -p
-X Alias für -a
-o Ohne Funktion, nur aus BSD-Kompatibilitätsgründen vorhanden
-x Ohne Funktion, nur aus BSD-Kompatibilitätsgründen vorhanden
-h --help Hilfetext anzeigen und beenden
-V --version Versionsinformation anzeigen und beenden

Anwendung

Alle verfügbaren Kernel-Parameter anzeigen:

/sbin/sysctl -a

Nur den aktuellen Hostnamen ausgeben:

/sbin/sysctl -n kernel.hostname

Den Domainnamen zur Laufzeit setzen:

/sbin/sysctl -w kernel.domainname="example.com"

Einstellungen aus der Konfigurationsdatei neu einlesen:

/sbin/sysctl -p/etc/sysctl.conf

Nur Parameter auflisten, deren Name forward enthält:

/sbin/sysctl -a --pattern forward

Nur Parameter auflisten, deren Name auf forward endet:

/sbin/sysctl -a --pattern forward$

Mit regulärem Ausdruck nur ARP-Parameter für eth0/wlan0 anzeigen:

/sbin/sysctl -a --pattern 'net.ipv4.conf.(eth|wlan)0.arp'

Systemweit alle Konfigurationsdateien einlesen und nur IPv6-Parameter anzeigen:

/sbin/sysctl --system --pattern '^net.ipv6'

Konfiguration

Dateien

Datei Beschreibung
/proc/sys Virtuelles Verzeichnis mit Kernel-Parametern. Laufzeit-Interface, auf das sysctl lesend und schreibend zugreift
/etc/sysctl.conf Klassische globale Konfigurationsdatei für persistente Kernel-Parameter. Wird nach den Dateien aus sysctl.d eingelesen
/run/sysctl.d/*.conf Temporäre, zur Laufzeit erzeugte Konfigurationsfragmente mit höchster Priorität
/etc/sysctl.d/*.conf Vom Administrator verwaltete persistente Konfigurationsfragmente. Überschreiben Einträge aus /usr/lib/sysctl.d und /lib/sysctl.d
/usr/local/lib/sysctl.d/*.conf Konfigurationsfragmente für lokal installierte Software außerhalb der Distribution
/usr.lib/sysctl.d/*.conf Von der Distribution bereitgestellte Standardkonfiguration für Kernel-Parameter
/lib/sysctl.d/*.conf Zusätzlicher Pfad für distributionsseitige Konfiguration auf bestimmten Systemen


Lade-Reihenfolge und Priorität

Lade-Reihenfolge und Priorität

Die Konfigurationsdateien werden je nach System unterschiedlich eingelesen:

  • Auf klassischen Systemen mit sysctl lädt der Aufruf
  • sysctl --system standardmäßig:
  1. /run/sysctl.d/*.conf,
  2. /etc/sysctl.d/*.conf,
  3. /usr/local/lib/sysctl.d/*.conf,
  4. /usr/lib/sysctl.d/*.conf,
  5. /lib/sysctl.d/*.conf
  6. /etc/sysctl.conf
  • Spätere Einträge überschreiben frühere mit demselben Schlüssel


  • Auf systemd-basierten Systemen werden Kernel-Parameter beim Booten von systemd-sysctl anhand der Dateien in sysctl.d gesetzt
  • Je nach Distribution wird /etc/sysctl.conf dabei möglicherweise nicht mehr ausgewertet


  • Für lokale Anpassungen wird empfohlen, eine eigene Datei wie /etc/sysctl.d/99-local.conf anzulegen, statt /etc/sysctl.conf direkt zu bearbeiten

Bespiel

Router
# /etc/sysctl.d/99-local.conf
# Router: IP-Forwarding und Connection-Tracking

# IPv4-Forwarding aktivieren (Routing/NAT/VPN)
net.ipv4.ip_forward = 1

# Reverse-Path-Filter gegen IP-Spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Redirects deaktivieren
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# ICMP: einfache Schutzmaßnahmen
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Connection-Tracking für viele Verbindungen (NAT)
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_tcp_timeout_established = 600
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 15
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60



Anhang

Siehe auch

Dokumentation

Man-Page

Links

Projekt

  1. https://github.com/klaver/sysctl

Weblinks