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.
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)
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
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)
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:
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.
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.
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.