2009-09-03 5 views
3

У нас есть приложение, в котором встроенное устройство разговаривает с weblogic через Apache. Weblogic и Apache находятся на одном сервере Solaris, и мы используем модуль weblogic для Apache.Обнюхивание/захват всего трафика между Apache и Weblogic на Solaris

Связь работает над HTTP

Он не работает над HTTPS, хотя эта проблема не кажется, непосредственно связанных с HTTPS (SSL сессии переговоров в порядке, а некоторые назад и вперед, бывает). По-видимому, устройство обрабатывает сообщение по-разному, когда используется https.

Мы хотели бы просмотреть запросы http/https и ответы, чтобы отладить это.

Мы можем записывать данные между устройством и сервером, используя (например,) wirehark, но это зашифровано, поэтому это не очень помогает. Wireshark (или snoop) не видит локальный трафик на сервере между Apache и Weblogic. Примечание: в Linux мы могли бы это сделать, но не в Solaris.

На самом деле нам не нужен захват пакетов низкого уровня Wireshark - захват заголовков и тела HTTP-запросов и ответов будет достаточным.

Кто-нибудь знает, как это сделать? Есть ли способ apache, который будет регистрировать все запросы и ответы, которые проходят, возможно (Google не показал ничего очевидного). Любые другие творческие способы сделать это?

ответ

1

Возможно, это поможет. http://httpd.apache.org/docs/2.2/mod/mod_log_forensic.html

+0

Спасибо. Это может стоить попробовать, но у меня неприятное чувство, что нам тоже понадобится тело. –

+0

Ваш ответ заставил меня посмотреть в правильном направлении. Это похоже на то, что мы хотим: http://httpd.apache.org/docs/2.2/mod/mod_dumpio.html –

+0

Wow. Рад, что я могу помочь! – vpram86

1

Я asked аналогичный вопрос о ServerFault, и самый лучший ответ, казалось, настроить TCP прокси на другой машине, и заставить все коммуникации подпрыгивать через него.

Таким образом, вместо:

Weblogic -> Apache 

Вы бы:

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

Тогда вы могли бы делать все, что ТСРйитр/wiresharking, что вы хотите. Я использовал rinetd, который работал хорошо, но я знаю, по крайней мере, по Linux, встроенный inetd также имеет возможность выполнять проксирование (и протоколирование).

Update: Если вы не можете ничего сделать по сети, вы можете использовать ту же концепцию, и что-то вроде TcpProxy или что-то подобное (возможно, даже ваш обычный Inetd), чтобы сделать проксирование и протоколирования. Вы могли бы использовать Netcat как TCP Proxy. У кого-то еще есть suggested, используя DTrace для отслеживания трафика loopback, поскольку он может подключаться прямо к ядру.

+0

Да, это сработает. К сожалению, из-за того, где сидит сервер (в жестко контролируемой защищенной среде), отскакивание от другого сервера затруднительно –

+0

Отвечено обновлено еще пару идей –

0

Вы можете использовать truss для захвата сокетов, чтения и записи, выполняемых одним из процессов.

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 и кодирует все как hex. При использовании портов> 1024 он работает нормально, как не root.

Смежные вопросы