Ich habe eine SLES-Maschine, die TCP-Verbindungen in einem CLOSE_WAIT-Status für immer ansammelt. Diese Deskriptoren saugen schließlich den gesamten verfügbaren Speicher auf. Im Moment habe ich 3037 davon, aber es war viel höher, bevor kürzlich ein schneller Neustart durchgeführt wurde.
Interessant ist, dass sie nicht von Verbindungen zu lokalen Ports stammen, von denen ich einen Abhörprozess erwarte. Sie haben keine zugeordneten PIDs und ihre Timer scheinen abgelaufen zu sein.
# netstat -ton | grep CLOSE_WAIT
tcp 176 0 10.0.0.60:54882 10.0.0.12:31663 CLOSE_WAIT off (0.00/0/0)
tcp 54 0 10.0.0.60:60957 10.0.0.12:4503 CLOSE_WAIT off (0.00/0/0)
tcp 89 0 10.0.0.60:50959 10.0.0.12:3518 CLOSE_WAIT off (0.00/0/0)
# netstat -tonp | grep CLOSE_WAIT
tcp 89 0 10.0.0.59:45598 10.0.0.12:1998 CLOSE_WAIT -
tcp 15 0 10.0.0.59:60861 10.0.0.12:1938 CLOSE_WAIT -
tcp 5 0 10.0.0.59:56173 10.0.0.12:1700 CLOSE_WAIT -
Ich bin kein Schwarzgurt, wenn es um den TCP-Stack oder das Kernel-Networking geht, aber die TCP-Konfiguration scheint vernünftig zu sein, da diese Werte laut Manpage Standard sind:
# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
Also was gibt es? Wenn die Timer abgelaufen sind, sollte der Stack diese Informationen dann nicht automatisch löschen? Ich gebe mir effektiv einen langfristigen DoS, wenn sich diese Dinge aufbauen.
sudo netstat -tonp
mit welchem Programm dies geschieht.