一位运行 Windows 的客户遇到了两个使用 TCP 相互通信的服务器组件的问题。通常这两个组件位于两个单独的服务器上,因此 Wireshark 让我能够轻松地在字节级别查看所有通信,但在这种情况下,组件必须位于同一台服务器上。
Wireshark 提供了一些建议用于通过环回接口进行捕获,但我犹豫是否要求客户安装环回适配器(根据该页面它甚至可能无法工作)或弄乱生产机器的路由表。
我认为最好的办法可能是某种日志记录 TCP 代理(我看到了类似的帖子这里),但我需要一个可以记录单个字节的程序(这样我以后就可以用十六进制编辑器愉快地分析它们)。我可能可以在不到一个小时的时间内写一个,但我确信有人(我只是找不到)已经在这个一次性项目上做得比我好得多,而且我不可能是唯一遇到这种问题的人。
答案1
我有一个本地通信的服务,我需要以与您几周前描述的完全相同的方式进行调试。
我选择使用 rinetd (http://www.boutell.com/rinetd/) 程序,该程序在您引用的同一线程中引用。我重新配置了服务器,以将流量发送到运行 rinetd 的日志计算机,并将流量直接代理回源服务器计算机上的实际目标端口。
对我来说,连接起来非常容易,如果服务器进程允许您配置流量流,以便您可以将其发送到监控机器,那么对您来说也应该如此。