网络端口已打开,但没有附加进程?


22

使用开放的网络端口时,我的情况很奇怪。我的主要问题是,为什么没有与打开的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      -  

对于我的特定情况,应该在端口5666上侦听一个nrpe守护程序(opsview安装),但是没有运行nrpe守护程序。如果我尝试启动它,它将立即退出。

lsof -i :5666也不显示任何输出。我的系统上没有正在运行的(x)inetd。

更新

是的,我以root用户身份运行这些命令。可以进行Telnet,但是从来没有任何回应。

经过进一步调查,我发现了一个内核错误dmesg:这是一个运行旧内核(2.6.16显然不稳定)的EC2实例(实际上是其中的几个)。阻止崩溃的解决方法是升级内核

看起来内核崩溃的方式导致进程消失并使端口保持打开状态。


2
lsof -i tcp:5666的结果是什么?重新启动时端口是否留在那里?
戴夫·德拉格

这是NRPE的新安装吗?
fpmurphy

您需要以root用户身份运行netstat才能查看程序详细信息
eckes

随时为您自己的问题添加答案...
rogerdpack

Answers:


6

内核打开的端口不会显示程序名称。想到了一些NFS和OCFS的东西。也许是这样吗?

也可能是内核错误。检查内核日志中的OOPS和BUG。


24

您是否已以root用户或sudo身份运行过netstat和lsof?请注意最后一列:

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

从netstat联机帮助页:

您还需要超级用户特权才能在您不拥有的套接字上查看此信息。

您怎么知道没有人在跑?如果端口在使用中,则将立即退出,并显示“ socket in use”错误。远程登录端口时会发生什么?

telnet localhost 5666

4

root用户身份执行'netstat -tcp -udp -listening -program' 。否则,您将不会给出PID /程序名称

然后使用kill -9 PID命令


3

我实际上写了一个小shell脚本来帮助识别这些偶然的问题:

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

另存为/ usr / local / bin / tracer; 输出:

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

您将需要root特权才能使用它


很好,但我还需要更多,我需要为netstat中的每个连接执行它。然后,我可以确定单个程序在做什么。这是一个没有lsof / fstat或其他不错的实用程序的盒子,由于其他问题,我无法以root用户身份安装它们。
Aki


2

有时,在程序列表中看不到与nfs相关的程序。

另外,LDAP pam模块和libnss_ldap会打开与ldap服务器的连接,但是没有实际的过程使该连接保持打开状态,因此netstat -tnp显示的是没有进程的活动连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.