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 e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *