Nf conntrack: Unterschied zwischen den Versionen
Aus Doku-Wiki
Zur Navigation springenZur Suche springen (Die Seite wurde neu angelegt: „=nf_conntrack: table full, dropping packet= Kategorie:Fehlermeldung“) |
Uli (Diskussion | Beiträge) (→Lösung) |
||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | =nf_conntrack: table full, dropping packet= | + | =Fehlermeldung= |
+ | nf_conntrack: table full, dropping packet | ||
+ | |||
+ | =Fehler Beschreibung= | ||
+ | * [http://pc-freak.net/blog/resolving-nf_conntrack-table-full-dropping-packet-flood-message-in-dmesg-linux-kernel-log/ Ausführliche Doku zum Problem nf_conntrack] | ||
+ | Diese Meldung wurde bei mir durch eine IPtables Regel verursacht. Kann aber auch durch DDOS Attacken verursacht werden. | ||
+ | iptables -A log_rule -m limit --limit 5/min -j LOG --log-prefix "ACCEPT Forward LIMIT " | ||
+ | Durch die '''--limit''' Anweisung muss sich der Kernel die Verbindungen merken. Wenn nun ein hoher Durchsatz auf dem Server dazu kommt, werden die Kernel-Tables gefüllt bis sie den MAX Wert überschreiten. | ||
+ | |||
+ | =Werte ermitteln= | ||
+ | * ip_conntrack_max | ||
+ | cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max | ||
+ | * Aktuellen '''nf_conntrack_count''' | ||
+ | /sbin/sysctl net.netfilter.nf_conntrack_count | ||
+ | Wenn der Wert '''ip_conntrack_max''' zu klein gewählt ist, kann man diesen erhöhen. Dabei gibt es noch einen zweiten Wert, der dann verändert werden sollte: | ||
+ | |||
+ | * Kernel Inhalte | ||
+ | /sbin/sysctl -a|grep -i nf_conntrack_max | ||
+ | |||
+ | * NAT Verbindungen | ||
+ | /sbin/lsmod | egrep 'ip_tables|conntrack' | ||
+ | |||
+ | * Geladene Kernelmodule die nf_conntrackt nutzen | ||
+ | /sbin/lsmod | egrep 'ip_tables|conntrack' | ||
+ | |||
+ | * nf_conntrack Default Werte | ||
+ | sysctl -a | grep conntrack | grep timeout | ||
+ | |||
+ | =Lösung= | ||
+ | Entweder verwendet man die IPtables Rules nicht mehr, oder man erhöht die entsprechenden Werte und/oder verringert die Timeouts. | ||
+ | ==Werte temporär anpassen== | ||
+ | * '''ip_conntrack_max''' erhöhen | ||
+ | sysctl -w net.netfilter.nf_conntrack_max=131072 | ||
+ | * '''hashsize''' anpassen | ||
+ | Der Hashsize sollte '''1/4 des nf_conntrack_max''' betragen | ||
+ | echo 32768 > /sys/module/nf_conntrack/parameters/hashsize | ||
+ | |||
+ | ==Werte permanent anpassen== | ||
+ | * ip_conntrack_max | ||
+ | vi /etc/sysctl.conf // Am Ende einfügen | ||
+ | net.netfilter.nf_conntrack_count = 131072 | ||
+ | |||
+ | * hashsize | ||
+ | vi /etc/rc.local | ||
+ | echo 32768 > /sys/module/nf_conntrack/parameters/hashsize | ||
+ | |||
+ | ==Weitere Werte anpassen== | ||
+ | * Am Ende der Datei '''/etc/sysctl.conf''' einfügen | ||
+ | net.ipv4.netfilter.ip_conntrack_generic_timeout = 120 | ||
+ | net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 54000 | ||
+ | |||
[[Kategorie:Fehlermeldung]] | [[Kategorie:Fehlermeldung]] |
Aktuelle Version vom 14. November 2013, 15:30 Uhr
Inhaltsverzeichnis
Fehlermeldung
nf_conntrack: table full, dropping packet
Fehler Beschreibung
Diese Meldung wurde bei mir durch eine IPtables Regel verursacht. Kann aber auch durch DDOS Attacken verursacht werden.
iptables -A log_rule -m limit --limit 5/min -j LOG --log-prefix "ACCEPT Forward LIMIT "
Durch die --limit Anweisung muss sich der Kernel die Verbindungen merken. Wenn nun ein hoher Durchsatz auf dem Server dazu kommt, werden die Kernel-Tables gefüllt bis sie den MAX Wert überschreiten.
Werte ermitteln
- ip_conntrack_max
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
- Aktuellen nf_conntrack_count
/sbin/sysctl net.netfilter.nf_conntrack_count
Wenn der Wert ip_conntrack_max zu klein gewählt ist, kann man diesen erhöhen. Dabei gibt es noch einen zweiten Wert, der dann verändert werden sollte:
- Kernel Inhalte
/sbin/sysctl -a|grep -i nf_conntrack_max
- NAT Verbindungen
/sbin/lsmod | egrep 'ip_tables|conntrack'
- Geladene Kernelmodule die nf_conntrackt nutzen
/sbin/lsmod | egrep 'ip_tables|conntrack'
- nf_conntrack Default Werte
sysctl -a | grep conntrack | grep timeout
Lösung
Entweder verwendet man die IPtables Rules nicht mehr, oder man erhöht die entsprechenden Werte und/oder verringert die Timeouts.
Werte temporär anpassen
- ip_conntrack_max erhöhen
sysctl -w net.netfilter.nf_conntrack_max=131072
- hashsize anpassen
Der Hashsize sollte 1/4 des nf_conntrack_max betragen
echo 32768 > /sys/module/nf_conntrack/parameters/hashsize
Werte permanent anpassen
- ip_conntrack_max
vi /etc/sysctl.conf // Am Ende einfügen net.netfilter.nf_conntrack_count = 131072
- hashsize
vi /etc/rc.local echo 32768 > /sys/module/nf_conntrack/parameters/hashsize
Weitere Werte anpassen
- Am Ende der Datei /etc/sysctl.conf einfügen
net.ipv4.netfilter.ip_conntrack_generic_timeout = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 54000