Posso monitorar um soquete de domínio unix local como o tcpdump?

52

Gostaria de monitorar as respostas em um soquete unix sem perturbar as conexões originais e canalizá-las para um script para processamento.

Eu sei como fazer isso com o tcpdump para conexões tcp, mas não consigo encontrar uma solução para soquetes unix locais.

Isso é possível?

    
por ck_ 07.10.2012 / 22:23

3 respostas

13

Há um cara que afirma fazer isso criando um aplicativo que atua como um gateway entre dois soquetes e registrando todos os dados que fluem. Então você não pode tocar em um soquete, mas se você pode reiniciar o serviço e ajustá-lo para usar esse aplicativo cara, você será capaz de ver todo o tráfego.

Aqui está o link para a postagem: Unix Socket Sniffer

Existe uma outra maneira que precisa de você para encontrar o id do processo anexado ao socket, então encontre com lsof o descritor de arquivo do socket e depois toque no descritor de arquivo usando strace.

Se você puder parar qualquer cliente / servidor que esteja usando o soquete e reconfigurá-lo, eu recomendaria sempre o primeiro método, o segundo método é complicado e requer que você toque em um processo atual que, em alguns aplicativos, pode travar.

Espero que alguém nos ilumine com o modo anoter:)

Boa sorte

    
por 07.10.2012 / 23:39
71

você pode usar o socat.

sudo mv /path/to/sock /path/to/sock.original
sudo socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original

O que está acontecendo acima: Primeiro mova o soquete original para sock.original. Socat cria um novo socket ('UNIX-LISTEN') na localização original e encaminha tudo para o original ('UNIX-connect'). O -v diz socat também imprimir saída para STDERR.

    
por 01.04.2013 / 17:49
5

Você também pode tentar usar strace em um dos processos em ambos os lados do soquete, pois isso permitirá que você observe o que está escrito / lido. Eu encontrei em meus ambientes de produção, eu não tenho socat, mas tenho strace.

Para qualquer propósito útil, definir -s para algo grande é uma obrigação.

    
por 22.09.2014 / 01:04