我的 Solaris 10 计算机上的某些进程正在向远程计算机发送 TCP SYN。远程计算机从不响应,因此未建立连接。我如何找出哪个进程正在启动此操作?
我一直在研究 DTrace 脚本,但是 a) 我不太了解 Dtrace,无法创建自己的脚本,b) 没有找到现有脚本,c) 我发现有些脚本使用了我的版本中不可用的探针。
感谢您的任何见解。加里
答案1
如果您知道目标 IP 和端口,您可以运行:
pfiles $pid
对于系统上的每个进程,确定哪个进程打开了带有属性的套接字。尝试使用可能会更好
lsof -i
以 root 身份查看是否可以在套接字仍处于活动状态时获取该套接字。
由于机器是外部的,您可以尝试查看它属于谁以及您从他们那里获得了什么软件来限制您可能需要查看的进程。
答案2
看一下这个 Dtrace 脚本:连线
# ./conntrack -h
USAGE: ./conntrack [-h] [-p port] [-c command] [-u user]
-p port # filter by port (incompatible with user and command)
-c command # filter by command (incompatible with port and user)
-u user # filter by user (incompatible with port and command)
eg,
./conntrack -p 22 # snoop connections to port 22
答案3
对于系统上的每个进程,使用 暂停它kill -STOP $pid
,查看连接尝试是否停止,然后使用 恢复它kill -CONT $pid
。