CLOSE_WAIT berarti program Anda masih berjalan, dan belum menutup soket (dan kernel sedang menunggu untuk melakukannya). Tambahkan -p ke netstat untuk mendapatkan pid, lalu bunuh dengan lebih kuat (dengan SIGKILL jika diperlukan). Itu akan menghilangkan CLOSE_WAIT Anda soket. Anda juga dapat menggunakan ps untuk menemukan pid.
SO_REUSEADDR adalah untuk server dan TIME_WAIT soket, jadi tidak berlaku di sini.
Anda dapat menutup paksa soket dengan ss memerintah; ss perintah adalah alat yang digunakan untuk membuang statistik soket dan menampilkan informasi dengan cara yang serupa (walaupun lebih sederhana dan lebih cepat) ke netstat.
Untuk mematikan soket apa pun dalam status CLOSE_WAIT, jalankan ini (sebagai root)
$ ss --tcp state CLOSE-WAIT --kill
Anda juga dapat memfilter tindakan Anda
$ ss --tcp state CLOSE-WAIT '( dport = 22 or dst 1.1.1.1 )' --kill
Seperti yang dijelaskan oleh Crist Clark.
CLOSE_WAIT berarti ujung sambungan lokal telah menerima FIN dari ujung lainnya, tetapi OS sedang menunggu program di ujung lokal untuk benar-benar menutup sambungannya.
Masalahnya adalah program Anda yang berjalan di mesin lokal tidak menutup soketnya. Ini bukan masalah penyetelan TCP. Koneksi dapat (dan dengan benar) tetap di CLOSE_WAIT selamanya selama program menahan koneksi tetap terbuka.
Setelah program lokal menutup soket, OS dapat mengirim FIN ke ujung jarak jauh yang mentransisikan Anda ke LAST_ACK sementara Anda menunggu ACK dari FIN. Setelah diterima, koneksi selesai dan terputus dari tabel koneksi (jika akhir Anda dalam CLOSE_WAIT, Anda tidak berakhir dalam status TIME_WAIT).