Nf conntrack
Aus Doku-Wiki
Zur Navigation springenZur Suche springenInhaltsverzeichnis
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