IPv6/proc
Kernel-Einstellungen im /proc-Dateisystem
Zugriff auf das /proc-Dateisystem
Verwendung von "cat" und "echo"
Mit ”cat” und ”echo” können Sie am einfachsten das /proc Dateisystem einsehen. Hierfür gibt es aber einige Voraussetzungen, die erfüllt sein müssen:
- Das /proc-Dateisystem muss im Kernel aktiviert sein. Hierfür muss die folgende Einstellung beim kompilieren des Kernels vorgenommen werden:
- Das /proc-Dateisystem muss zuerst gemountet sein. Dies kann wie folgt getestet werden:
- Sie benötigen Lese- und manchmal auch Schreib-Zugriff (normalerweise nur als Root-Benutzer) auf das /proc-Dateisystem.
Normalerweise sind, mit Ausnahme in /proc/sys/*, alle Einträge ausschließlich mit Leserechten ausgestattet. Die Einträge werden zum Zweck der Informationsgewinnung verwendet.
Wert anzeigen
Den Inhalt eines Eintrags können sie mit ”cat” anzeigen:
Wert einstellen
Mit ”echo” können sie einen neuen Wert zuweisen (nur wenn der Eintrag beschreibbar ist):
Verwendung von "sysctl"
Die Verwendung des Programms ”sysctl” ist eine zeitgemäße Methode zum Anzeigen der Kernel-Switches. Es funktioniert auch dann, wenn das /proc-Dateisystem nicht gemountet ist, wobei aber nur ein Zugriff auf /proc/sys/* möglich ist!
Das Programm ”sysctl” ist (auf Red Hat Linux Systemen) im Paket ”procps” enthalten.
- Das sysctl-Interface muss im Kernel aktiviert sein. Hierfür muss die folgende Einstellung beim kompilieren des Kernels vorgenommen werden:
Wert anzeigen
Der Wert eines Eintrags kann nun angezeigt werden:
Wert einstellen
Ein neuer Wert kann wie folgt zugewiesen werden (wenn der Eintrag beschreibbar ist):
Anmerkung: Verwenden Sie beim setzen eines Wertes keine Leerzeichen vor oder nach dem ”=”. Sollten Sie mehrere Werte in einer Zeile angeben, müssen sie diese mit Anführungszeichen umgeben:
Sonstiges
Anmerkung: Es gibt sysctl-Versionen im Umlauf, die anstelle des Punktes ”.” einen slash ”/” ausgeben.
Für weitere Details siehe die manpage von sysctl.
Hinweise: Um schnell einen Überblick über die Einstellungen zu bekommen, verwenden Sie einfach die Option ”-a” (anzeigen aller Einträge) sowie das Tool ”grep”.
Werte im /proc-Dateisystem
Es gibt im /proc-Dateisystem unterschiedliche Formate:
- BOOLEAN: einfach eine ”0” (falsch) oder eine ”1” (wahr)
- INTEGER: Wert ist eine Ganzzahl (kann auch eine unsigned int sein)
- Kompliziertere Zeilen mit verschiedenen Werten: manchmal wir eine Header-Zeile mit angezeigt... Sie können aber auch weitere Informationen zu den Werten und deren Bedeutung direkt in den Kernel Quellen beziehen.
/proc/sys/net/ipv6/
conf/default/*
Ändern der Interface-spezifischen Einstellungen.
conf/all/*
Ändern aller Interface-spezifischen Einstellungen.
Ausnahme: ”conf/all/forwarding” hat hier eine andere Bedeutung:
conf/all/forwarding
- Typ: BOOLEAN
Hiermit wird die globale IPv6 Weiterleitung zwischen allen Interfaces aktiviert.
In IPv6 ist kein forwarding per Device möglich. Die Steuerung der Weiterleitung muss mittels IPv6-netfilter Regel-Sets (mit dem Programm ip6tables) und der Bestimmung der Ein- und Ausgabe-Devices (siehe Firewalling/Netfilter6 für Details) vollzogen werden. In IPv4 ist das anders, forwarding per device ist hier möglich (hier wird am Interface, wo das Paket einlangt, die entsprechende Entscheidung getroffen).
Hiermit werden die Host/Router Einstellungen 'forwarding' aller Interfaces eingestellt (auch globales Forwarding genannt). Für weitere Details Siehe unten.
Ist der Wert gleich 0, dann ist IPv6 forwarding deaktiviert. Pakete verlassen in diesem Fall niemals ein anderes Interface (weder physikalische noch logische wie z.B. Tunnel).
conf/interface/*
Spezielle Einstellungen per Interface ändern.
Das funktionale Verhalten einzelner Einstellungen ist davon abhängig, ob lokales forwarding aktiviert ist oder nicht.
accept_ra
- Typ: BOOLEAN
- Standardeinstellung: aktiviert, wenn lokales forwarding deaktiviert ist. Deaktiviert, wenn lokales forwarding aktiviert ist.
Router Advertisements werden akzeptiert; das Interface wird mit Status 'received data' automatisch konfiguriert.
accept_redirects
- Typ: BOOLEAN
- Standardeinstellung: aktiviert, wenn lokales forwarding deaktiviert ist. Deaktiviert, wenn lokales forwarding aktiviert ist.
Akzeptiert von IPv6 Router gesendete Redirects.
autoconf
- Typ: BOOLEAN
- Funktionale Standardeinstellung: aktiviert, wenn accept_ra_pinfo aktiv ist. Deaktiviert, wenn accept_ra_pinfo deaktiviert ist.
Autokonfiguriert Adressen unter Benutzung der Prefix-Information eines Router-Advertisements.
dad_transmits
- Typ: INTEGER
- Standardwert: 1
Die Anzahl der gesendeten Proben zum entdecken von Adress-Duplikaten.
forwarding
- Typ: BOOLEAN
- Standardwert: FALSCH, wenn globale forwarding deaktiviert ist (Standard), ansonst WAHR
Konfigurieren von Interface-spezifischem Host/Router-Verhalten.
Anmerkung: Es wird die gleiche Konfiguration für alle Interfaces empfohlen; Gemischte Host/Router-Szenarios sind eher unüblich.
- Wert FALSCH: Per Standard wird von einem Host-Verhalten ausgegangen. Das bedeutet:
- Der Schalter IsRouter ist bei Router Advertisements nicht aktiviert.
- Router-Anfragen werden bei Bedarf gesendet.
- Wenn accept_ra WAHR ist (Standard), dann werden Router Advertisements akzeptiert (und starte die automatische Konfiguration).
- Wenn accept_redirects WAHR ist (Standard), dann akzeptiere Redirects.
- Wert WAHR: Ist lokales forwarding eingeschaltet, dann wird von einem Router-Verhalten ausgegangen. Das bedeutet genau das Gegenteil zu oben:
- Der Schalter IsRouter ist bei Router Advertisements aktiviert.
- Router-Anfragen werden nicht gesendet.
- Router Advertisements werden ignoriert.
- Redirects werden ignoriert.
hop_limit
- Typ: INTEGER
- Standardwert: 64
Der Standardwert für das Hop-Limit wird hiermit eingestellt.
mtu
- Type: INTEGER
- Standardwert: 1280 (Minimumwert in IPv6)
Der Standardwert für die Maximum Transfer Unit wird hiermit eingestellt.
router_solicitation_delay
- Typ: INTEGER
- Standardwert: 1
Die Anzahl der nach der Aktivierung eines Interfaces zu wartenden Sekunden bevor Router-Anfragen gesendet werden.
router_solicitation_interval
- Typ: INTEGER
- Standardwert: 4
Die Anzahl der Sekunden zwischen Router-Anfragen.
router_solicitations
- Typ: INTEGER
- Standardwert: 3
Die Anzahl der Router-Anfragen, bevor angenommen wird, dass keine Router verfügbar sind.
neigh/default/*
Standardeinstellungen der Neighbor-Erkennung und einige spezielle globale Intervall- sowie Threshold-Werte ändern:
gc_thresh1
- Typ: INTEGER
- Standardwert: 128
Mehr Infos hierzu in späteren Versionen.
gc_thresh2
- Typ: INTEGER
- Standardwert: 512
Mehr Infos hierzu in späteren Versionen.
gc_thresh3
- Typ: INTEGER
- Standardwert: 1024
Parameter zum Einstellen der Größe der Neighbour-Tabelle.
Wenn Sie viele Interfaces und Probleme mit inkorrekt oder nicht funktionierenden Routen haben, dann sollten Sie diesen Wert erhöhen. Ebenfalls erhöhen sollten Sie den Wert, wenn von einem aktiven Zebra (routing daemon) Folgendes angezeigt wird:
gc_interval
- Typ: INTEGER
- Standardwert: 30
Mehr Infos hierzu in späteren Versionen.
neigh/interface/*
Per Interface ändern spezieller Einstellungen zur Neighbor-Erkennung.
anycast_delay
- Typ: INTEGER
- Standardwert: 100
Mehr Infos hierzu in späteren Versionen.
gc_stale_time
- Typ: INTEGER
- Standardwert: 60
Mehr Infos hierzu in späteren Versionen.
proxy_qlen
- Typ: INTEGER
- Standardwert: 64
Mehr Infos hierzu in späteren Versionen.
unres_qlen
- Typ: INTEGER
- Standardwert: 3
Mehr Infos hierzu in späteren Versionen.
app_solicit
- Typ: INTEGER
- Standardwert: 0
Mehr Infos hierzu in späteren Versionen.
locktime
- Typ: INTEGER
- Standardwert: 0
Mehr Infos hierzu in späteren Versionen.
retrans_time
- Typ: INTEGER
- Standardwert: 100
Mehr Infos hierzu in späteren Versionen.
base_reachable_time
- Typ: INTEGER
- Standardwert: 30
Mehr Infos hierzu in späteren Versionen.
mcast_solicit
- Typ: INTEGER
- Standardwert: 3
Mehr Infos hierzu in späteren Versionen.
ucast_solicit
- Typ: INTEGER
- Standardwert: 3
Mehr Infos hierzu in späteren Versionen.
delay_first_probe_time
- Typ: INTEGER
- Standardwert: 5
Mehr Infos hierzu in späteren Versionen.
proxy_delay
- Typ: INTEGER
- Standardwert: 80
Mehr Infos hierzu in späteren Versionen.
route/*
Globale Routing-Einstellungen ändern.
flush
In neueren Kernel-Versionen wurde diese Option entfernt - mehr Infos hierzu in späteren Versionen.
gc_interval
- Typ: INTEGER
- Standardwert: 30
Mehr Infos hierzu in späteren Versionen.
gc_thresh
- Typ: INTEGER
- Standardwert: 1024
Mehr Infos hierzu in späteren Versionen.
mtu_expires
- Typ: INTEGER
- Standardwert: 600
Mehr Infos hierzu in späteren Versionen.
gc_elasticity
- Typ: INTEGER
- Standardwert: 0
Mehr Infos hierzu in späteren Versionen.
gc_min_interval
- Typ: INTEGER
- Standardwert: 5
Mehr Infos hierzu in späteren Versionen.
gc_timeout
- Typ: INTEGER
- Standardwert: 60
Mehr Infos hierzu in späteren Versionen.
min_adv_mss
- Typ: INTEGER
- Standardwert: 12
Mehr Infos hierzu in späteren Versionen.
max_size
- Typ: INTEGER
- Standardwert: 4096
Mehr Infos hierzu in späteren Versionen.
/proc/sys/net/ipv4/
- IPv6 relevante Einträge in /proc/sys/net/ipv4/
Zurzeit werden einige Schalter auch bei IPv6 eingesetzt (Dies bleibt so, bis IPv4 zur Gänze in ein unabhängiges Kernel-Modul umgewandelt wurde).
ip_*
ip_local_port_range
Diese Kontrolleinstellung wird ebenfalls bei IPv6 verwendet.
tcp_*
Diese Kontrolleinstellungen werden ebenfalls bei IPv6 verwendet.
icmp_*
Diese Kontrolleinstellungen werden bei IPv6 nicht verwendet. Zum aktivieren der ICMPv6 Quoten-Limitierung (auf Grund der ICMPv6 storms Auswirkungen sehr empfohlen) müssen netfilter-v6-Regeln eingesetzt werden.
Sonstige Einträge
Keine bekannt, bzw. von IPv6 vermutlich ungenutzt.
/proc/net/
- IPv6 relevante Einträge in /proc/net/
In /proc/net gibt es einige Einträge die ausschließlich Lese-Rechte besitzen. Mit ”sysctl” können Sie hier keine Informationen bekommen, verwenden Sie anstelle dessen z.B. ”cat”.
if_inet6
- Typ: Eine Zeile pro Adresse mit jeweils mehreren Werten
Alle konfigurierten IPv6 Adressen werden hier in einem speziellen Format angezeigt. Im Beispiel wird ein Loopback-Interface angezeigt. Die Werte werden unten erklärt (siehe ”net/ipv6/addrconf.c” für Details).
- IPv6 Adresse mit 32 hexadezimalen Zeichen ohne Doppelpunkte als Trennzeichen
- Netlink Device Nummer (Interface Index) im hexadezimalen Format (siehe auch ”ip addr”)
- Präfix-Länge in hexadezimaler Notation
- Wert des Gültigkeitsbereichs (s.a. Kernel Quellen ”include/net/ipv6.h” und ”net/ipv6/addrconf.c”)
- Interface flags (s.a. ”include/linux/rtnetlink.h” und ”net/ipv6/addrconf.c”)
- Devicename
ipv6_route
- Typ: Eine Zeile pro Route mit jeweils mehreren Werten
Alle konfigurierten IPv6 Routen werden hier in einem speziellen Format angezeigt. Im Beispiel wird ein Loopback-Interface angezeigt. Die Werte werden unten erklärt (siehe ”net/ipv6/route.c” für Details).
- IPv6 Zielnetzwerk mit 32 hexadezimalen Zeichen ohne Doppelpunkte als Trennzeichen
- IPv6 Ziel-Präfix-Länge in hexadezimaler Notation
- IPv6 Ursprungsnetzwerk mit 32 hexadezimalen Zeichen ohne Doppelpunkte als Trennzeichen
- IPv6 Ursprungs-Präfix-Länge in hexadezimaler Notation
- IPv6 next Hop mit 32 hexadezimalen Zeichen ohne Doppelpunkte als Trennzeichen
- Metrik in hexadezimaler Schreibweise
- Reference Counter
- Use Counter
- Flags
- Devicename
sockstat6
- Typ: Eine Zeile pro Protokoll mit Beschreibung und Wert
Statistiken über verwendete IPv6 Sockets. Beispiel:
tcp6
Mehr Infos hierzu in späteren Versionen.
udp6
Mehr Infos hierzu in späteren Versionen.
igmp6
Mehr Infos hierzu in späteren Versionen.
raw6
Mehr Infos hierzu in späteren Versionen.
ip6_flowlabel
Mehr Infos hierzu in späteren Versionen.
rt6_stats
Mehr Infos hierzu in späteren Versionen.
snmp6
- Typ: Eine Zeile pro SNMP Beschreibung und Wert
SNMP Statistiken; diese können mittels snmp server und entsprechender MIB Tabelle mit einer Network Management Software gewonnen werden.
ip6_tables_names
Verfügbare netfilter6 Tabellen