Port jaringan terbuka, tetapi tidak ada proses yang terpasang?

22

Saya memiliki situasi aneh yang terjadi dengan port jaringan terbuka. Pertanyaan utama saya adalah, mengapa tidak ada program yang terkait dengan port TCP terbuka:

netstat -ln --program
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      -  

Untuk kasus khusus saya, seharusnya ada daemon nrpe (opsview install) mendengarkan pada port 5666, tetapi tidak ada daemon nrpe yang berjalan. Jika saya mencoba memulainya, ia segera keluar.

lsof -i :5666tidak menunjukkan output apa pun. Tidak ada (x) inetd yang berjalan di sistem saya.

MEMPERBARUI

Ya, saya menjalankan perintah itu sebagai root. Telnet akan bisa, tetapi tidak pernah ada jawaban.

Setelah penyelidikan lebih lanjut, saya menemukan kesalahan kernel di dmesg: ini adalah contoh EC2 (sebenarnya beberapa dari mereka) menjalankan kernel yang lebih tua (2.6.16 tampaknya tidak stabil). Perbaikan untuk menghentikan crash adalah meng - upgrade kernel .

Sepertinya cara crash kernel menyebabkan proses untuk pergi dan membiarkan port terbuka.

Gary Richardson
sumber
2
Apa hasil dari: lsof -i tcp: 5666? Apakah port tetap di sana ketika Anda reboot?
Dave Drager
Apakah ini instalasi NRPE yang baru?
fpmurphy
Anda perlu menjalankan netstat sebagai root untuk melihat detail program
eckes
Jangan ragu untuk menambahkan jawaban ke pertanyaan Anda sendiri ...
rogerdpack

Jawaban:

6

Port yang dibuka oleh kernel tidak akan muncul dengan nama program. Beberapa hal NFS dan OCFS datang ke pikiran. Mungkin sesuatu seperti itu?

Atau bisa juga berupa bug kernel. Periksa log kernel untuk OOPS dan BUG.

Thomas
sumber
24

Sudahkah Anda menjalankan netstat dan lsof sebagai root atau dengan sudo? Perhatikan kolom terakhir:

netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

sudo netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3125/sshd

Dari manual netstat:

Anda juga akan memerlukan hak pengguna super untuk melihat informasi ini di soket yang tidak Anda miliki.

Bagaimana Anda tahu tidak ada yang berlari? Jika port sedang digunakan, masuk akal bahwa port itu akan segera keluar dengan kesalahan 'socket in use'. apa yang terjadi ketika Anda melakukan telnet ke port?

telnet localhost 5666
Kyle Brandt
sumber
4

jalankan 'netstat --tcp --udp --listening --program' sebagai pengguna root . selain itu Anda tidak akan memberikan PID / Nama Program

kemudian gunakan perintah kill -9 PID

pengguna kucing jantan
sumber
3

Saya sebenarnya menulis skrip shell kecil untuk membantu id pertanyaan sesekali ini:

#! /bin/bash
([ "$1" = "" ] || [ "$2" = "" ]) && echo "Usage: tracer <space> <port>" && exit 0
for i in `fuser -n $1 $2`
 do
  ps aux | grep $i | grep -v 'grep'
 done

simpan sebagai / usr / local / bin / tracer; keluaran:

root@mo-log:/usr/flows# tracer tcp 80
80/tcp:             
root     27904  0.0  0.0 111668  3292 ?        Ss   Aug04   0:03 /usr/sbin/apache2 -k start
www-data 32324  0.0  0.0 335332  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start
www-data 32327  0.0  0.0 335324  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start

Anda akan membutuhkan hak akses root untuk menggunakannya

Greeblesnort
sumber
Bagus tapi saya butuh lebih banyak, saya perlu menjalankannya untuk setiap koneksi di netstat. Kemudian saya dapat mengidentifikasi apa yang sedang dilakukan oleh satu program. Ini adalah kotak tanpa lsof / fstat atau utilitas bagus lainnya, dan sebagai root saya tidak dapat menginstalnya karena masalah lain.
Aki
3

Saya bisa melacak proses dengan mendapatkan inode-nya melalui netstat dan kemudian menggunakan inode itu dengan lsof. Lihat jawaban saya yang lebih terperinci di /server//a/847910/94376 .

studgeek
sumber
2

Terkadang, program terkait nfs tidak dapat dilihat pada daftar program.

Juga, modul pam LDAP dan libnss_ldap membuka koneksi ke server ldap, tetapi tidak ada proses aktual yang menahan koneksi terbuka, jadi netstat -tnp menunjukkan koneksi aktif tanpa proses.

hayalci
sumber