Netzwerkanschluss offen, aber kein Prozess angeschlossen?


22

Ich habe eine seltsame Situation mit einem offenen Netzwerkanschluss. Meine Hauptfrage ist, warum es kein Programm gibt, das mit einem offenen TCP-Port verbunden ist:

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      -  

In meinem speziellen Fall sollte ein nrpe-Daemon (opsview install) auf Port 5666 lauschen, aber es wird kein nrpe-Daemon ausgeführt. Wenn ich versuche, es zu starten, wird es sofort beendet.

lsof -i :5666zeigt auch keine Ausgabe. Auf meinem System läuft kein (x) inetd.

AKTUALISIEREN

Ja, ich habe diese Befehle als root ausgeführt. Telnet würde das können, aber es gab nie eine Antwort.

Nach weiteren Untersuchungen fand ich einen Kernelfehler in dmesg: Dies war eine EC2-Instanz (tatsächlich mehrere von ihnen), auf der ein älterer Kernel ausgeführt wurde (2.6.16 ist anscheinend instabil). Um den Absturz zu stoppen, mussten die Kernel aktualisiert werden .

Es sieht so aus, als hätte der Absturz des Kernels dazu geführt, dass der Prozess abgebrochen und der Port offen gelassen wurde.


2
Was ist das Ergebnis von: lsof -i tcp: 5666? Bleibt der Port dort, wenn Sie neu starten?
Dave Drager

Ist dies eine Neuinstallation von NRPE?
fpmurphy

Sie müssen netstat als root ausführen, um Programmdetails zu sehen
eckes

Fühlen Sie sich frei, eine Antwort auf Ihre eigenen Fragen hinzuzufügen ...
Rogerdpack

Antworten:


6

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.


24

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

Aus der netstat-Manpage:

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

Woher weißt du, dass da 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 du an den port telnetst?

telnet localhost 5666

4

führe 'netstat --tcp --udp --listening --program' als root aus . Andernfalls wird der PID- / Programmname nicht angegeben

Verwenden Sie dann den PID-Befehl kill -9


3

Ich habe tatsächlich ein kleines Shell-Skript geschrieben, um die folgenden 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

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

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

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


Gut, aber ich brauche mehr, ich muss es für jede Verbindung in Netstat ausführen. Dann kann ich identifizieren, was ein einzelnes Programm tut. Es ist eine Box ohne lsof / fstat oder andere nette Dienstprogramme, und als root kann ich sie wegen anderer Probleme nicht installieren.
Aki

3

Ich konnte den Prozess ausfindig machen, indem ich seinen Inode über netstat abrief und diesen Inode dann mit lsof verwendete. Meine ausführlichere Antwort finden Sie unter /server//a/847910/94376 .


2

Manchmal können nfs-bezogene Programme nicht in der Programmliste angezeigt werden.

Außerdem öffnen LDAP-Pam-Module und libnss_ldap Verbindungen zu LDAP-Servern, aber es gibt keinen tatsächlichen Prozess, der die Verbindung offen hält. Daher zeigt netstat -tnp eine aktive Verbindung ohne einen Prozess an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.