GNU/Linux >> Linux Esercitazione >  >> Linux

Porta di rete aperta, ma nessun processo collegato?

Soluzione 1:

Hai eseguito netstat e lsof come root o con sudo? Nota l'ultima colonna:

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

Dalla manpage di netstat:

Avrai anche bisogno dei privilegi di superutente per vedere queste informazioni sui socket che non possiedi.

Come fai a sapere che non ce n'è uno in esecuzione? Se la porta è in uso, ha senso che esca immediatamente con un errore "socket in use". cosa succede quando ti colleghi alla porta tramite telnet?

telnet localhost 5666

Soluzione 2:

Le porte aperte dal kernel non verranno visualizzate con il nome del programma. Mi vengono in mente alcune cose relative a NFS e OCFS. Forse è qualcosa del genere?

Oppure potrebbe essere un bug del kernel. Controlla i log del kernel per OOPS e BUG.

Soluzione 3:

eseguire 'netstat --tcp --udp --listening --program' come utente root . altrimenti non darà PID/Program Name

quindi usa il comando kill -9 PID

Soluzione 4:

In realtà ho scritto un piccolo script di shell per aiutare a identificare queste domande occasionali:

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

salva come /usr/local/bin/tracer; uscita:

[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

Avrai bisogno dei privilegi di root per usarlo

Soluzione 5:

Sono stato in grado di rintracciare il processo ottenendo il suo inode tramite netstat e quindi utilizzando quell'inode con lsof. Vedi la mia risposta più dettagliata in https://serverfault.com/a/847910/94376.


Linux
  1. Linux:bloccare l'accesso alla rete di un processo?

  2. Testare in modo efficiente se una porta è aperta su Linux?

  3. Come aprire la porta in Linux

  4. Conteggio dei file aperti per processo

  5. Come chiudere o (svincolare?) una porta lasciata aperta da un'applicazione non autorizzata?

Rendi Linux più forte con i firewall

Perché la porta 1111 è aperta ed è sicuro esserlo?

Controlla il traffico di rete in uscita

aprire la porta 8080 per l'ascolto

Come sapere quale processo ha una porta specifica aperta su Linux?

Controlla se la porta è aperta o chiusa su un server Linux?