¿Cómo mover un socket de dominio Unix permite a Socat monitorear el tráfico?


12

socat se puede usar para monitorear el tráfico a través de un socket de dominio Unix:

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

No entiendo bien cómo funciona este mecanismo, esperando que alguien pueda explicarlo un poco. En particular, ¿cómo funciona mover el archivo socket si un proceso ya lo está escuchando? Además, después del movimiento: ni lsof /path/to/socktampoco /path/to/sock.originaldevuelve ningún resultado.

Respuestas:


11

Esos comandos deben ejecutarse cuando el servidor que desea monitorear está escuchando actualmente /path/to/sock. Luego, si cambia /path/to/sockel nombre , el servidor no se verá afectado.

El socatcomando inserta un hombre en el medio. Escucha /path/to/socksy reenvía todo el tráfico de los clientes /path/to/socks.original(y lo registra en el proceso con -v).

Eso solo funciona para los tipos de flujo de sockets (use UNIX-RECVFROM/ UNIX-RECVpara sockets de datagramas ) y solo si los clientes solo lo hacen read/write/send/recven esos sockets, no sendmsg()con datos auxiliares y otras cosas elegantes.

lsofsolo informará los procesos de escucha ( socaty el servidor para los sockets de escucha y aceptados). Por lo general, no es posible vincular un socket conectado en el cliente a la ruta del socket.

Si lo hace antes de iniciar el servidor, a continuación, que no va a funcionar como el servidor intentará escuchar en /path/to/socksy fallar como socatya se está escuchando en ese. O necesita decirle al servidor que escuche en su /path/to/sock.originallugar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.