netstat显示没有pid的侦听端口,但lsof却没有


21

这个问题类似于网络端口打开,但是没有附加进程吗?

我已经尝试了所有内容,查看了日志等等,但找不到任何东西。

我的netstat显示不带pid的TCP侦听端口和UDP端口。当我在lsof中搜索那些端口时,什么也没有出现。

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:44231           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:55234           0.0.0.0:*                           - 

以下命令不显示任何内容:

lsof | grep 44231
lsof | greo 55234
fuser -n tcp 44231
fuser -n udp 55234

重新启动后,除了新的端口号外,那些“相同”的两个连接在那里:

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:45082           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:37398           0.0.0.0:*                           - 

再次,lsof和fuser命令什么也不显示。

有什么想法吗?我应该关心他们吗?

Answers:


11

根据您提供的数据,我想说它与某些NFS挂载或使用RPC的挂载有关。

您可以使用来检查rpcinfo -p某些RPC相关服务可能使用的端口。

这是我系统上的样子

# netstat -nlp | awk '{if ($NF == "-")print $0}'
tcp        0      0 0.0.0.0:55349           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:18049           0.0.0.0:*                           - 

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  10249  status
    100024    1   tcp  10249  status
    100021    1   udp  18049  nlockmgr
    100021    3   udp  18049  nlockmgr
    100021    4   udp  18049  nlockmgr
    100021    1   tcp  55349  nlockmgr
    100021    3   tcp  55349  nlockmgr
    100021    4   tcp  55349  nlockmgr

1
如果您有此问题,并且想要强制nlockmgr使用特定端口,请尝试以下解决方案:fclose.com/39625/fixing-ports-used-by-nfs-server
瑞安·沃尔斯

13

某些进程/ pid仅可用于root用户。尝试

sudo netstat -antlp

它应该返回每个未处于TIME_WAIT状态的打开端口的pid


2
每个打开的TCP端口只能使用此命令。UDP端口将不会显示。
彼得

8

基于来自@ user202173和其他用户的提示,即使-在netstat中列出了端口,我也可以使用以下内容来跟踪拥有端口的进程。

这是我的出发情况。sudo netstat显示端口的PID /程序为-lsof -i什么也没显示。

$ sudo netstat -ltpna | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  -
$ sudo lsof -i :8785
$

现在去钓鱼。首先,通过添加-enetstat调用中来获取索引节点。

$ sudo netstat -ltpnae | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      199179     212698803   -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  0          0           -

下次使用lsof将进程附加到该inode。

$ sudo lsof | awk 'NR==1 || /212698803/'
COMMAND      PID    TID                USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
envelope_ 145661 145766               drees   15u     IPv6          212698803        0t0        TCP *:8785 (LISTEN)

现在我们知道了进程ID,因此我们可以查看该进程。不幸的是,这是一个已经失效的过程。而且其PPID为1,因此我们也不能杀死其父级(请参阅如何杀死其父级为init的进程?)。从理论上讲,init可能最终会对其进行清理,但是我已经厌倦了等待并重新启动。

$ ps -lf -p 145661
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 Z drees    145661      1  2  80   0 -     0 exit   May01 ?        00:40:10 [envelope] <defunct>

1
几个月来一直在寻找这种解决方案。谢谢你的这首歌
Prasad

多年来,我一直在寻找这样的解决方案。谢谢!这里的缺点之一是,如果NFS客户端或服务器陷入瘫痪,那么lsof | awk 'NR==1 || /212698803/'(即使lsof -N仅显示NFS)响应速度可能很慢,并且可能会超时。另一个缺点是,在您对此进行故障排除时,inode可能会更改。
Stefan Lasiewski

4

我不知道这些具体是什么,但是内核模块(例如NFS)没有与这些套接字关联的PID。在lsmod中寻找可疑的东西。


lsmod不返回任何内容。该服务器是NFS客户端。目前,这是我的第一嫌疑犯。
mhost 2011年

这可以解释为什么在内核的新实例之后客户端端口已更改。
andyortlieb 2011年

您不应该被否决,因为这是完全合法的答案。它帮助我找到了其他答案(使用rpcbind或lsof)没有帮助的情况。(是的,它是NFS。)谢谢!
彼得·汉森

嗯,我想知道为什么它不将PID分配给NFS客户端只是为了让您了解发生了什么……我想这要求它具有辅助线程或其他东西?
SamB

3

我不知道这是否有用。我遇到了同样的问题,我做了以下事情:首先,我使用选项-a(all)和-e(extended)调用了netstat。使用后一个选项,我可以看到与使用的端口关联的Inode。然后,我用获得的索引节点号调用lsof | grep,然后得到与该索引节点相关联的进程的PID。在我看来,这是可行的。


0

是否有任何流量从此端口进出,请通过tcpdump -vv -x s 1500 port 37398 -w trace.out将捕获保存在文件跟踪中进行检查。然后您可以使用wireshark打开它,或者tcpdump -vv port 37398直接查看发生了什么。

尝试远程登录到该端口,使用netcat作为udp套接字,也许您会得到一些帮助。

获取rkhunter并检查系统是否存在后门。

假设文件不在updatet中,将lsof / netstat的md5哈希与安装介质中的md5哈希进行比较。


我确实尝试将本地netcat都连接到两个端口,但它什么也不显示。对于tcp端口,如果我键入任何内容然后输入,它将关闭。UDP仅在按Ctrl + C时关闭。我有iptables,它不允许连接到这些端口,因此,除非它们绕过iptables,否则我无法想象有什么东西正在连接到它们。
mhost 2011年

DB,APP ..使用哪种服务器?
伊扎克,2011年

它是一台运行apache的Web服务器,除了cron和syslog之类的东西外几乎没有其他东西。
mhost
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.