¿Puerto de red abierto, pero no hay proceso conectado?

22

Tengo una situación extraña con un puerto de red abierto. Mi pregunta principal es, ¿por qué no habría un programa asociado con un puerto TCP abierto:

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      -  

Para mi caso específico, se supone que hay un nrpe daemon (instalación de opsview) escuchando en el puerto 5666, pero no se está ejecutando nrpe daemon. Si intento iniciarlo, sale inmediatamente.

lsof -i :5666tampoco muestra ningún resultado. No hay (x) inetd ejecutándose en mi sistema.

ACTUALIZAR

Sí, estaba ejecutando esos comandos como root. Telnet podría, pero nunca hubo respuesta.

Después de una investigación más profunda, encontré un error de kernel en dmesg: esta fue una instancia de EC2 (en realidad, varias de ellas) que ejecuta un kernel anterior (2.6.16 aparentemente es inestable). La solución para detener el bloqueo fue actualizar los núcleos .

Parece que la forma en que el núcleo se bloqueó hizo que el proceso desapareciera y dejara el puerto abierto.

Gary Richardson
fuente
2
¿Cuál es el resultado de: lsof -i tcp: 5666? ¿El puerto permanece allí cuando reinicia?
Dave Drager el
¿Es esta una nueva instalación de NRPE?
fpmurphy
Necesitas ejecutar netstat como root para ver los detalles del programa
Eckes
Siéntase libre de agregar una respuesta a sus propias preguntas ...
rogerdpack

Respuestas:

6

Los puertos abiertos por el núcleo no se mostrarán con el nombre del programa. Me vienen a la mente algunas cosas de NFS y OCFS. Tal vez es algo así?

O podría ser un error del kernel. Verifique los registros del kernel para OOPS y BUG.

Thomas
fuente
24

¿Has ejecutado netstat y lsof como root o con sudo? Observe la última columna:

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

Desde la página de manual de netstat:

También necesitará privilegios de superusuario para ver esta información en los sockets que no le pertenecen.

¿Cómo sabes que no hay uno corriendo? Si el puerto está en uso, tiene sentido que salga inmediatamente con un error de "socket en uso". ¿Qué pasa cuando telnet al puerto?

telnet localhost 5666
Kyle Brandt
fuente
4

ejecute 'netstat --tcp --udp --listening --program' como usuario root . de lo contrario, no dará PID / Nombre del programa

luego use el comando kill -9 PID

usuario de tomcat
fuente
3

De hecho, escribí un pequeño script de shell para ayudar a identificar estas preguntas ocasionales:

#! /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

guardar como / usr / local / bin / tracer; salida:

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

Necesitarás privilegios de root para usarlo

Greeblesnort
fuente
Bien, pero necesito más, necesito ejecutarlo para cada conexión en netstat. Entonces puedo identificar lo que está haciendo un solo programa. Es una caja sin lsof / fstat u otras utilidades agradables, y como root no puedo instalarlas debido a otros problemas.
Aki
3

Pude rastrear el proceso al obtener su inodo a través de netstat y luego usar ese inodo con lsof. Vea mi respuesta más detallada en /server//a/847910/94376 .

studgeek
fuente
2

A veces, los programas relacionados con nfs no se pueden ver en la lista de programas.

Además, los módulos de pam LDAP y libnss_ldap abren conexiones a los servidores ldap, pero no hay un proceso real que mantenga la conexión abierta, por lo que netstat -tnp muestra una conexión activa sin un proceso.

hayalci
fuente