web-dev-qa-db-fra.com

netstat -ntap ne montre pas le nom de PID / processus pour certaines connexions?

J'ai un serveur Ubuntu/Hardy, avec le noyau 2.6.24-23-Server et NetStat:

# netstat --version
net-tools 1.60
netstat 1.42 (2001-04-15)

Le problème est que nous avons beaucoup de connexions établies qui ne montrent pas PID ni nom de programme dans netstat -ntap sortir. NetStat a été appelé à partir de root, il n'y a pas de chroots, de GRSecurity, ni de rien comme ça (ou donc on m'a dit :).

Une idée de ce qui pourrait être faux?

METTRE À JOUR

lsof -n -i fonctionne bien et montre le nom PID/processus pour les connexions.

10
user13185

Cela se produira avec des processus de noyau comme NFS, mais se produit également parfois avec des applications régulières: Rhel 5 a le même comportement.

# netstat -taupen | grep 30715
tcp        0      0 0.0.0.0:30715           0.0.0.0:*               LISTEN      66558      81467710   - 

Notez que LSOF, d'autre part, les mots correctement:

# lsof -i:30715
AppName 1598 useracct   78u     IPv4           81467710                   TCP *:30715 (LISTEN)
4
mikemaccana
198_141:~ # netstat  -anp|grep 33000
tcp        0      0 0.0.0.0:53000           0.0.0.0:*               LISTEN       -                   
198_141:~ # lsof -i:33000
COMMAND   PID USER   FD   TYPE     DEVICE SIZE NODE NAME
vsftpd  28147 root    3u  IPv4 4089990174       TCP *:33000 (LISTEN)
198_141:~ # id
uid=0(root) gid=100(users) groups=16(dialout),100(users)
198_141:~ # 

à mon avis, il pourrait y avoir deux situations:

1) l'utilisateur de privilège normal exécuté "netstat" ne peut pas voir ces processus lancés par root

2) Certains processus fonctionnent dans le noyau

3
Yans Ruan

J'ai le même comportement et je suppose que le comportement de NetStat a peut-être changé. Par exemple, je vois le port et le programme de 'wget', mais pas pour Apache PHP processus, qui sont les plus importants pour moi.

Solution de contournement: j'ai réécrit mon script à utiliser lsof à la place (voir l'indice ci-dessus)

1
Pascal

Arrivée ici parce que ces jours-ci, je rencontre la même question sur Ubuntu 18.04 LTS (NetStat est la même version netstat 1.42 (2001-04-15)), sans réponse sans réponse après 8 ans. Après avoir parcouru le code source des outils Net-outils, je peux le trouver.

Dans le code source NetStat:

  1. tous les dossiers de processus IN/ProC sont itéRés, chaque répertoire FD IN/PROC // FD est cochée pour créer une carte à partir de la prise de la prise en pid/progname.

  2. ensuite,/proc/net/TCP est vérifié pour obtenir des informations de prise TCP (par la fonction TCP_Info), y compris la prise de la prise.

  3. lors de la sortie des informations de prise TCP, le PID/Progname est interrogé sur la carte à l'étape 1 via la prise de la prise. Si rien n'est trouvé, '-' sorties.

Si la prise est créée après la construction de la carte, le PID/Progname ne sera pas trouvé sur la carte.

0
zenkj