debug d’une socket


Comment voir ce qui traverse une socket Unix ?

Vous êtes fans de tcpdump. Mais voilà, ce programme ne permet de sniffer que le trafic réseau, et pas les sockets.

Il y a un moyen de visualiser tout ce qui passe à travers une socket, à la condition de maîtriser une partie de la chaîne de transmission d’information : socat.

logiciel 1 → socket → logiciel 2

Si vous pouvez spécifier le nom de la socket dans « logiciel 1 », alors c’est gagné ! Il vous suffit de créer un relais, une socket « maison » qui va recevoir les données envoyées par « logiciel 1 » et les relayer proprement à la socket officielle (souvent créée par « logiciel 2 »).

Et concrètement, je fais quoi ?

root@server:~# socat -t2 -v UNIX-LISTEN:/run/proxy.socket,mode=777,reuseaddr,fork UNIX-CONNECT:/run/original.socket

Exemple d'utilisation

Nginx, configuration pour envoyer des données à un logiciel backend :

upstream fastcgiwrap {
    #server unix:/run/fcgiwrap.socket;
    server unix:/run/proxy.socket;
}

Socket temporaire :

root@server:~# socat -t2 -v UNIX-LISTEN:/run/jc.socat,mode=777,reuseaddr,fork UNIX-CONNECT:/run/fcgiwrap.socket

Et pour voir ce qui transite, il suffit de lire la sortie d’erreur (STDERR).


Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *