移动UNIX域套接字如何使socat监视流量?


12

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返回任何结果。

Answers:


11

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

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

这仅适用于套接字的类型(对数据报套接字使用UNIX-RECVFROM/ ),并且仅当客户端仅在这些套接字上使用,而不能与辅助数据和其他奇特的东西一起使用时。UNIX-RECVread/write/send/recvsendmsg()

lsof将仅报告侦听进程(socat以及侦听和接受的套接字的服务器)。通常无法将客户端上已连接的套接字链接到该套接字的路径。

如果你这样做之前启动服务器,那么将无法正常工作的服务器将尝试/path/to/socks和失败,因为socat是在已经听。或者,您需要告诉服务器监听/path/to/sock.original

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.