2009-09-03 5 views
3

Nous avons une application où un périphérique embarqué parle à weblogic via Apache. Weblogic et Apache sont sur le même serveur Solaris, et nous utilisons le module weblogic pour Apache.Renifler/capturer tout le trafic entre Apache et Weblogic sur Solaris

La communication fonctionne sur http

Il ne fonctionne pas sur https, bien que le problème ne semble pas être en relation directe avec https (la session SSL est négocié fin et un peu en arrière et se etc.). Il semble que le périphérique gère la communication différemment lorsque https est utilisé.

Nous aimerions voir les requêtes http/https et les réponses pour le déboguer.

Nous pouvons capturer les données entre le périphérique et le serveur en utilisant (par exemple) wireshark, mais cela est crypté, ce qui n'est pas d'une grande aide. Wireshark (ou snoop) ne voit pas le trafic local sur le serveur entre Apache et Weblogic. Remarque: sous Linux, nous pourrions le faire - mais pas sous Solaris.

Nous n'avons pas vraiment besoin de la capture de paquets bas niveau de Wireshark - capturer les en-têtes et le corps des requêtes http et les réponses seraient suffisantes.

Quelqu'un sait-il comment faire? Y a-t-il un mod apache qui enregistrera toutes les requêtes et réponses qui transitent, peut-être (Un google n'affiche rien d'évident). D'autres moyens créatifs de le faire?

Répondre

1
+0

Merci. Cela vaut peut-être la peine d'essayer, mais j'ai le mauvais pressentiment que nous aurons aussi besoin du corps. –

+0

Votre réponse m'a fait regarder dans la bonne direction. Cela ressemble exactement à ce que nous voulons: http://httpd.apache.org/docs/2.2/mod/mod_dumpio.html –

+0

Wow. Content que je puisse être utile! – vpram86

1

Je asked une question similaire sur ServerFault, et la meilleure réponse semblait être de mettre en place un proxy TCP sur une autre machine, et la force de toutes les communications à rebondir par là.

Ainsi, au lieu de:

Weblogic -> Apache 

Vous auriez:

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

Ensuite, vous pouvez faire tout ce que tcpdump/wiresharking que vous voulez. J'ai utilisé rinetd qui a bien fonctionné, mais je sais sur Linux au moins, l'inetd intégré a également la possibilité de faire des proxys (et de la journalisation).

Mise à jour: Si vous ne pouvez pas faire quoi que ce soit à travers le réseau, vous pouvez utiliser le même concept et quelque chose comme TcpProxy ou quelque chose de similaire (peut-être même votre inetd régulière) pour faire le mandatement et l'exploitation forestière. Vous pouvez même utiliser Netcat comme TCP Proxy. Quelqu'un d'autre a également suggested en utilisant DTrace pour snooper sur le trafic de bouclage, car cela peut se connecter directement dans le noyau.

+0

Oui, cela fonctionnerait. Malheureusement, à cause de l'endroit où le serveur est assis (dans un environnement sécurisé étroitement contrôlé), rebondir sur un autre serveur est difficile –

+0

Réponse mis à jour avec quelques autres idées –

0

Vous pouvez utiliser truss pour capturer les lectures de socket et les écritures effectuées par l'un des processus.

1

Mon programme de capture TCP de choix est appelé balance.

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

Il est le design comme un utilitaire de équilibreur de charge tcp, mais en utilisant le drapeau de vidage de paquets -p cela fonctionne assez bien pour enregistrer tout le trafic et sortir. Il affiche ASCII en ASCII et encode tout comme hex. Il tourne bien en tant que non-root lors de l'utilisation de ports> 1024.

Questions connexes