GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Netzwerkport geöffnet, aber kein Prozess angeschlossen?

Lösung 1:

Hast du netstat und lsof als root oder mit sudo ausgeführt? Beachten Sie die letzte Spalte:

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

Von der Netstat-Manpage:

Sie benötigen außerdem Superuser-Berechtigungen, um diese Informationen auf Sockets anzuzeigen, die Sie nicht besitzen.

Woher weißt du, dass keiner läuft? Wenn der Port verwendet wird, ist es sinnvoll, dass er sofort mit dem Fehler „Socket in use“ beendet wird. Was passiert, wenn Sie sich per Telnet an den Port wenden?

telnet localhost 5666

Lösung 2:

Vom Kernel geöffnete Ports werden nicht mit dem Programmnamen angezeigt. Einige NFS- und OCFS-Sachen fallen mir ein. Vielleicht ist es so etwas?

Oder es könnte ein Kernel-Bug sein. Überprüfen Sie die Kernel-Protokolle auf OOPS und BUG.

Lösung 3:

Führen Sie 'netstat --tcp --udp --listening --program' als root user aus . Andernfalls wird PID/Programmname nicht angezeigt

Verwenden Sie dann den PID-Befehl kill -9

Lösung 4:

Ich habe tatsächlich ein kleines Shell-Skript geschrieben, um diese gelegentlichen Fragen zu beantworten:

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

unter /usr/local/bin/tracer speichern; Ausgabe:

[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

Sie benötigen Root-Rechte, um es zu verwenden

Lösung 5:

Ich konnte den Prozess aufspüren, indem ich seinen Inode über netstat erhielt und diesen Inode dann mit lsof verwendete. Siehe meine ausführlichere Antwort in https://serverfault.com/a/847910/94376.


Linux
  1. Telnet zu einem Port, um die Netzwerkkonnektivität zu testen

  2. Effizient testen, ob ein Port unter Linux offen ist?

  3. Geöffnete Dateien pro Vorgang zählen

  4. Wie kann man einen Port schließen oder (entbinden?), der von einer bösartigen Anwendung offen gelassen wurde?

  5. Überwachen Sie den TCP-Verkehr an einem bestimmten Port

Machen Sie Linux mit Firewalls stärker

Warum ist Port 1111 offen und ist das sicher?

Wie identifiziere ich einen Port zu einem Prozess?

Überprüfen Sie den ausgehenden Netzwerkverkehr

Wie kann ich feststellen, welcher Prozess einen bestimmten Port unter Linux geöffnet hat?

Überprüfen Sie, ob der Port auf einem Linux-Server geöffnet oder geschlossen ist?