在Solaris上嗅探/捕获Apache和Weblogic之间的所有流量

时间:2009-09-03 12:40:52

标签: apache weblogic solaris packet-capture sniffing

我们有一个应用程序,其中嵌入式设备通过Apache与weblogic对话。 Weblogic和Apache位于同一个Solaris服务器上,我们正在使用Apache的weblogic模块。

通讯工作在http

它不能通过https工作,虽然问题似乎与https没有直接关系(SSL会话协商正常,而且有些来回发生)。当使用https时,设备似乎会以不同方式处理通信。

我们希望看到http / https请求和响应来调试它。

我们可以使用(例如)wireshark捕获设备和服务器之间的数据,但这是加密的,因此不是很好的帮助。 Wireshark(或snoop)在Apache和Weblogic之间看不到服务器上的本地流量。注意:在Linux上我们可以这样做 - 但不是在Solaris上。

我们实际上并不需要Wireshark的低级别数据包捕获 - 捕获http请求和响应的标题和正文就足够了。

任何人都知道如何做到这一点?是否有一个apache mod会记录通过的所有请求和响应,可能(谷歌没有显示任何明显的东西)。还有其他创造性的方法吗?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

I asked关于ServerFault的类似问题,最好的答案似乎是在另一台机器上设置TCP代理,并强制所有通信都在那里反弹。

所以而不是:

Weblogic -> Apache

你会:

Weblogic -> (across network) TCP Proxy -> (across network) -> Apache

然后你可以做任何你想要的tcpdump / wiresharking。我使用rinetd运行良好,但至少在Linux上我知道,内置的inetd也能够进行代理(和记录)。

更新:如果您无法通过网络执行任何操作,则可以使用相同的概念,例如TcpProxy或类似的东西(可能甚至是您的常规inetd)来执行代理和记录。您甚至可以将Netcat用作TCP Proxy。其他人也suggested使用DTrace来窥探环回流量,因为它可以直接连接到内核。

答案 2 :(得分:1)

我选择的TCP捕获程序名为 balance

 _           _
| |__   __ _| | __ _ _ __   ___ ___
| '_ \ / _` | |/ _` | '_ \ / __/ _ \
| |_) | (_| | | (_| | | | | (_|  __/
|_.__/ \__,_|_|\__,_|_| |_|\___\___|
  this is balance 3.42
  Copyright (c) 2000-2007,2008
  by Inlab Software GmbH, Gruenwald, Germany.
  All rights reserved.

它设计为tcp负载均衡器实用程序,但使用-p数据包转储标志,它可以很好地记录所有流量。它以ASCII格式显示ASCII,并将所有内容编码为十六进制。当使用端口> 1024时,它以非root身份运行正常。

答案 3 :(得分:0)

您可以使用 truss 来捕获其中一个进程执行的套接字读写操作。