Me encantaría si hubiera una única herramienta de línea de comandos para la detección de paquetes de un solo comando en Linux. algo así sniff dumpfile command
para que pueda simplemente ejecutar el comando que desea oler en la terminal y obtener un volcado de los paquetes en otro lugar.
Me gustaría volcar / guardar / ver solo el tráfico de red del comando único que ingreso, no todo el tráfico TCP en mi única interfaz de red. Entonces, si estaba conectado a mi computadora y tenía IRC ejecutándose en segundo plano, y lo hice sniff somefile wget http://www.google.com
, me gustaría ver todo el tráfico de red que hizo el comando wget para descargar http://www.google.com . No quiero que 'somefile' tenga el tráfico de red IRC confuso.
Hay muchos comandos de Linux / Unix que aceptan un comando diferente y hacen algo diferente. Desde sudo
(ejecutar como superusuario), nice
cambie el nivel agradable trickle
(limite el ancho de banda de un comando)
Respuestas:
No hay ninguno que yo sepa, pero en teoría no debería ser difícil obtener algo similar. Strace se puede utilizar para interceptar llamadas de sistema de red.
Esto le dará información sobre los datos enviados entre el núcleo y el proceso. La salida de strace no es exactamente lo que quieres. Sin embargo, strace utiliza la llamada al sistema ptrace para interceptar llamadas del sistema. Podría ser posible escribir un programa para generar los datos un poco más útil.
Alternativamente, también puede interceptar el buen socket útil, enlazar y escuchar llamadas al sistema. Podría ser posible escribir un pequeño programa que usara ptrace en estas llamadas y libpcap para cambiar dinámicamente el filtro de captura cada vez que se abre un nuevo socket.
fuente
Tracedump
Descarga y descripción aquí: http://mutrics.iitis.pl/tracedump
fuente
Prueba Wireshark: el comando será
tshark
O, ¿realmente solo quieres LSOF?
No creo que haya una herramienta que continúe filtrando dinámicamente para toda la comunicación asociada a un proceso. Sin embargo, podría intentar rastrear las comunicaciones del proceso con herramientas como,
lsof
y una vez que tenga un buen filtro que pueda aislar la comunicación de ese proceso del resto del tráfico que se ejecuta en su sistema, podría obtener la captura correcta.Por ejemplo, por lo
wget
general, la dirección IP de destino es distinta de otro tráfico relacionado con el proceso. Incluso si toma algo comoskype
el rango de puertos de destino, generalmente se fija para una instancia.Esto es un poco como el principio de incertidumbre. Por lo general, puede saber qué está pasando por un conjunto de rutas de comunicación (con un filtro sniffer en un grupo de flujos identificado) o dónde se están creando diferentes enlaces de comunicación (con lsof).
Realmente me gustaría saber si ambos se pueden hacer para una aplicación. Creo que debería ser factible. Pero, no he visto ninguna herramienta hacer eso todavía.
fuente
Aprende a usar expresiones de filtro.
Si bien esto no hará las cosas de rastreo elegantes que está pidiendo.
Le permitirá eliminar casi todas las "cosas confusas como IRC" de la captura.
Además, es muy útil conocer la sintaxis del filtro para una referencia rápida en el futuro.
fuente
Específicamente para un navegador web / página web, algo como el complemento Firebug para Firefox puede brindarle parte de la información que está buscando: http://getfirebug.com/net.html
Para aplicaciones más generales, es posible que necesite usar netstat para identificar los puertos utilizados por la aplicación y luego Wireshark / tshark / dtrace con un filtro para capturar solo ese tráfico. Aunque no es la respuesta de una línea que estabas buscando ...
fuente
Una idea, prueba VMWare
-configurar un vm
-configurar ese vm para usar una interfaz particular
-sniff en esa interfaz desde el host (es como un hombre en el medio ataque)
Si aísla qué aplicaciones de red se están ejecutando en esa máquina virtual, es posible que tenga su respuesta
Una solución más ideal, supongo, es hacer lo que VMWare hace en términos de cómo especifica cómo elige una interfaz para hablar. Creo que su magia proviene de los módulos del kernel que usa, en este caso, probablemente el módulo del kernel vmnet.
Que yo sepa, las aplicaciones no saben de qué interfaz hablan y creo que esto es así por diseño; no deberían tener que preocuparse por tales cosas.
Además,
tal vez ya exista un programa, no lo sé. Pero si uno fue escrito, podría llamarlo nettrace (por ejemplo) y Usage podría ser como
interfaz del programa nettrace
luego huela la interfaz que usa y agregue rutas (tal vez lo hace automáticamente) a su interfaz real
fuente
Suponiendo que usted es la única persona en la caja que intenta conectarse a Google en ese momento, creo que algo como esto debería funcionar:
tcpdump -w <outfile> -i <interface> tcp dst host www.google.com and dst port 80
Si no es la única conexión que intenta conectarse a Google en el cuadro, entonces si puede identificar la IP / puerto desde el que se está conectando, también puede especificar el puerto src / src ip.
Identificar el puerto src puede ser un problema a menos que pueda especificarlo en cualquier cliente que use. No estoy seguro si puedes con wget.
Sospecho firmemente que puede especificar los puertos src y dst con
netcat
lo que si realmente le interesaba google, podría hacer su GET (manualmente) a través de netcat.Por supuesto, la página del manual le dará detalles
fuente
La página de manual de tcpdump y muchos sitios web ofrecen ejemplos detallados de filtros, e incluso hay algunos repositorios en línea de expresiones de filtro de tcpdump. Debería poder hacer casi cualquier cosa con la que pueda soñar, suponiendo que sepa algo sobre el tráfico de la red (fuente, destino, puertos, protocolos, etc.) más allá de qué programa lo está generando.
Si está trabajando en un servidor o cuadro sin cabeza, siempre puede hacer que tcpdump escriba un archivo de volcado y luego lo abra en Wireshark en su estación de trabajo y obtenga un filtrado avanzado y una interfaz gráfica.
fuente
Tal vez este script haga lo que quiera con las modificaciones apropiadas al comando tshark:
Lea el archivo de volcado más tarde:
fuente
Dtrace debería permitir esto, aunque todavía no sé si ha llegado a Linux.
fuente