移动 unix 域套接字如何使 socat 能够监控流量?

移动 unix 域套接字如何使 socat 能够监控流量?

socat可用于监控 Unix 域套接字上的流量:

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

我不太明白这个机制是如何运作的,希望有人能解释一下。特别是,如果进程已经在侦听套接字文件,那么移动套接字文件如何工作?另外,移动后:既不lsof /path/to/sock也不/path/to/sock.original返回任何结果。

答案1

当您要监视的服务器当前正在侦听时,必须运行这些命令/path/to/sock。然后,如果您重命名/path/to/sock,服务器将不会受到影响。

socat命令插入中间人。它监听/path/to/socks客户端的所有流量并将其转发到/path/to/socks.original(并将其记录在进程中-v)。

这只适用于溪流插座类型(使用UNIX-RECVFROM/UNIX-RECV用于数据报套接字),并且仅当客户端仅read/write/send/recv使用这些套接字时,而不是sendmsg()使用辅助数据和其他花哨的东西。

lsof只会报告侦听进程(socat以及侦听和接受套接字的服务器)。一般情况下是无法链接的连接的客户端上的套接字到套接字的路径。

如果你这样做启动服务器,那么这将不起作用,因为服务器会尝试开启/path/to/socks并失败,因为socat已经在监听了。或者您需要告诉服务器进行监听/path/to/sock.original

相关内容