J'ai une situation étrange avec un port réseau ouvert. Ma principale question est que savoir pourquoi n'aurait-il pas un programme associé à un fichier Open TCP:
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 -
Pour mon cas particulier, il est censé être un daemon NRPE (opsview install) à l'écoute du port 5666, mais il n'y a pas de démon NRPE en cours d'exécution. Si j'essaie de commencer, il sort immédiatement.
lsof -i :5666
ne montre aucune sortie non plus. Il n'y a pas de (x) inetd exécutant sur mon système.
[~ # ~ ~] Mise à jour [~ # ~]
Oui, je courais ces commandes en tant que root. Telnet pourrait, mais il n'y avait jamais de réponse.
Après une enquête supplémentaire, j'ai trouvé une erreur de noyau dans dmesg
: il s'agissait d'une instance EC2 (en fait plusieurs d'entre eux) d'un noyau plus âgé (2.6.16 est apparemment instable). La solution pour arrêter l'accident était de moderniser les noyaux .
Cela ressemble à la façon dont le noyau s'est écrasé causé le processus de disparaître et de laisser le port ouvert.
Les ports ouverts par le noyau ne s'affichent pas avec le nom du programme. Certaines choses NFS et OCFS viennent à l'esprit. Peut-être que c'est quelque chose comme ça?
Ou cela pourrait être un bug de noyau. Vérifiez les journaux du noyau pour Oops et Bug.
Avez-vous couru netstat et lsof en tant que root ou avec sudo? Notez la dernière colonne:
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
De NetStat Manpage:
Vous aurez également besoin de privilèges superutilisateurs pour voir ces informations sur les sockets que vous ne possédez pas.
Comment savez-vous qu'il n'y a pas une course? Si le port est utilisé, il est logique que cela sortait immédiatement avec une erreur "prise d'utilisation". Que se passe-t-il lorsque vous avez Telnet au port?
telnet localhost 5666
exécuter 'NetStat --TCP --UDP --LISTENDANT --PROGRAME' AS TILISATEUR ROOTD. autre sage vous, il ne donnera pas Nom PID/Programme
ensuite, utilisez la commande kill -9 pid
J'ai pu suivre le processus en obtenant son inode via NetStat, puis en utilisant cette inode avec LSOF. Voir ma réponse plus détaillée dans https://serverfault.com/a/847910/94376 .
En fait, j'ai écrit un petit script shell pour aider à identifier ces questions occulatrices:
#! /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
enregistrer sous/USR/local/bin/traceur; sortir:
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
Vous aurez besoin de privilèges root pour l'utiliser
Parfois, les programmes liés à NFS ne peuvent être observés sur la liste des programmes.
De plus, LDAP PAM MODULES ET LIBNSSS_LDAP Ouvrir les connexions à des serveurs LDAP, mais il n'y a pas de processus réel qui maintient la connexion ouverte, de sorte que NetStat -TNP montre une connexion active sans processus.