Mam maszynę SLES, która gromadzi połączenia TCP w stanie CLOSE_WAIT dla tego, co wydaje się być wieczne. Deskryptory te w końcu pochłaniają całą dostępną pamięć. W tej chwili mam ich 3037, ale przed ostatnim ponownym uruchomieniem było znacznie więcej.
Interesujące jest to, że nie są to połączenia z portami lokalnymi, które, jak się spodziewałem, mają procesy nasłuchiwania. Nie mają powiązanych PID, a ich liczniki wydają się wygasły.
# 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 -
Nie jestem czarnym pasem jeśli chodzi o stos TCP lub sieć jądra, ale konfiguracja TCP wydaje się rozsądna, ponieważ te wartości są domyślne, na stronę man:
# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
Co więc daje? Jeśli czas upłynął, czy stos nie powinien automatycznie wyczyścić tego? Skutecznie daję sobie długoterminową DoS, gdy te rzeczy się narastają.
linux
networking
tcp
pboin
źródło
źródło
sudo netstat -tonp
sprawdzić, z którym programem to się dzieje.Odpowiedzi:
Nie, nie ma limitu czasu
CLOSE_WAIT
. Myślę, że to właśnieoff
oznacza twój wynik.Aby wyjść
CLOSE_WAIT
, aplikacja musi jawnie zamknąć gniazdo (lub wyjść).Zobacz Jak złamać CLOSE_WAIT .
Jeśli
netstat
pokazuje się-
w kolumnie procesu:źródło
CLOSE_WAIT
wskazuje, że klient zamyka połączenie, ale aplikacja jeszcze go nie zamknęła lub klient nie. Powinieneś określić, który program lub programy mają ten problem. Spróbuj użyć,netstat -tonp 2>&1 | grep CLOSE
aby ustalić, które programy utrzymują połączenia.Jeśli na liście nie ma żadnych programów, usługa jest dostarczana przez jądro. Są to prawdopodobnie usługi RPC, takie jak
nfs
lubrpc.lockd
. Usługi jądra nasłuchiwania można wyświetlić za pomocąnetstat -lntp 2>&1 | grep -- -
.O ile usługi RPC nie są powiązane z ustalonymi portami, będą się łączyć z efemerycznymi portami, gdy wydaje się, że Twoje połączenia są wyświetlane. Możesz także sprawdzić procesy i podłączenia na drugim serwerze.
Możesz być w stanie powiązać swoje usługi NFS ze stałymi portami, wykonując następujące czynności:
/etc/services
--port 32763 --outgoing-port 32764
--port 32765
źródło