GNU/Linux >> Tutoriales Linux >  >> Linux

¿Puerto de red abierto, pero ningún proceso adjunto?

Solución 1:

¿Ha 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 sockets que no le pertenecen.

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

telnet localhost 5666

Solución 2:

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 sea algo así?

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

Solución 3:

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

luego use el comando kill -9 PID

Solución 4:

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:

[email protected]:/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

Solución 5:

Pude rastrear el proceso obteniendo su inodo a través de netstat y luego usándolo con lsof. Vea mi respuesta más detallada en https://serverfault.com/a/847910/94376.


Linux
  1. Cómo abrir los puertos 80 y 443 en FirewallD

  2. Linux – ¿Bloquear el acceso a la red de un proceso?

  3. CentOS/RHEL:¿Cómo saber si un puerto de red está abierto o no?

  4. Supervise el tráfico TCP en un puerto específico

  5. ¿Cómo identificar el puerto de un proceso?

Haga que Linux sea más fuerte con firewalls

¿Por qué está abierto el puerto 1111 y es seguro estarlo?

Comprobar el tráfico de red saliente

Matar el proceso que se ejecuta en el puerto 80

puerto abierto 8080 para escuchar

¿Cómo saber qué proceso tiene abierto un puerto específico en Linux?