小智 97
你可以使用socat。
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
Run Code Online (Sandbox Code Playgroud)
上面发生了什么:首先将原始套接字移动到 sock.original。Socat 在原始位置创建一个新套接字('UNIX-LISTEN')并将所有内容转发到原始位置('UNIX-connect')。-v 告诉 socat 也将输出打印到 STDERR。
小智 17
有一个人声称通过创建一个应用程序作为两个套接字之间的网关并记录所有流动的数据来做到这一点。所以你不能点击套接字,但如果你可以重新启动服务并调整它以使用这个家伙应用程序,你将能够看到所有流量。
这是帖子的链接:Unix Socket Sniffer
还有一种方法需要您找到附加到套接字的进程 id,然后使用 lsof 查找套接字的文件描述符,然后使用 strace 敲击文件描述符。
如果您可以停止使用套接字的任何客户端/服务器并重新配置它,我总是推荐第一种方法,第二种方法很棘手,需要您点击当前进程,这在某些应用程序上可能会导致它崩溃。
希望有人用另一种方式启发我们:)
祝你好运
小智 8
您也可以尝试在套接字任一侧的一个进程上使用 strace,因为这可以让您查看写入/读取的内容。我发现在我的生产环境中,我没有 socat,但有 strace。
对于任何有用的目的,必须将 -s 设置为大值。
小智 8
// backup the socket
sudo mv /var/run/docker.sock /var/run/docker.sock.original
// use tcp port 8089 proxy the original socket
sudo socat TCP-LISTEN:8089,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock.original
// use the new socket to proxy the 8089 port
sudo socat UNIX-LISTEN:/var/run/docker.sock,fork TCP-CONNECT:127.0.0.1:8089
Run Code Online (Sandbox Code Playgroud)
然后:
sudo tcpdump -i lo -netvv port 8089
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70633 次 |
| 最近记录: |