sysctl
Erscheinungsbild
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
|
| -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
| ||
| -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:
- /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
- 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
- sysctl.conf(5)
- regex(7)
Links
Projekt
Weblinks