En Linux, ¿cómo puedo saber qué proceso está enviando paquetes Ethernet?

18

Estoy ejecutando gkrellm que muestra que algún proceso en mi sistema Debian Linux está escribiendo aproximadamente 500 KB / s en eth0. Me gustaría saber qué proceso es. Sé un poco sobre netstat, pero muestra un millón de conexiones TCP abiertas y parece que no puedo hacer que produzca información sobre el tráfico.

¿Alguien sabe cómo puedo obtener una lista de los procesos que realmente utilizan la interfaz eth0 para poder localizar al delincuente?


SEGUIMIENTO : La distribución Debian Linux contiene un nethogspaquete que resuelve este problema definitivamente. Las herramientas relacionadas que no son del todo en la marca incluyen iftop, netstaty lsof.

Norman Ramsey
fuente
iptrafes bueno
Luv33preet
Esto funcionó para mí para intercambios UDP de muy corta duración: serverfault.com/a/683327/119360
Luc

Respuestas:

16

Prefiero nethogs . Es un pequeño programa de consola basado en ncurses que muestra el estado del tráfico de red por proceso de una manera conveniente.

Janne Pikkarainen
fuente
18

netstat -ptule proporcionará los identificadores del proceso de propiedad (junto con la información estándar de netstat) para todas las conexiones tcp y udp. (Los usuarios normales no podrán identificar todos los procesos).

Si algo está enviando una buena cantidad de tráfico constante que debe verlo en Recv-Qo Send-Qcolumnas 2 y 3 respectivamente.

Ejemplos:
Recv-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k2'

Send-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k3'

Si sospecha que ese proceso está siendo activado por otro proceso ps axf.

84104
fuente
(No es que la bandera -u sea necesaria si sabes que estás buscando conexiones TCP.)
andol
5

Una operación más manual si está buscando solo un proceso de envío / recepción de datos sería ejecutar el lsofcomando. Esto enumerará todos los archivos abiertos para cada proceso que incluirá conexiones de red, ya que son descriptores de archivos para el sistema operativo

No estoy seguro si esto es lo que estás buscando.

gdurham
fuente
4

Instalar iftop(basado en texto simple) o ntop(gráfico).

David Schwartz
fuente
1
iftopsolo muestra el uso de ancho de banda en una interfaz.
quanta
Muestra mucho más que eso. Por defecto, lo desglosa por host.
David Schwartz
¿Puede enumerar todos los procesos que utilizan una interfaz? Si es así, ¿podría mostrarnos el comando y las opciones?
quanta
1
No directamente. Pero una vez que encuentre el host, puede encontrar el proceso, por ejemplo con netstat -pn.
David Schwartz
3

Use tcpdumppara oler algunos paquetes en esta interfaz:

# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap

Copie al cliente y abra con Wireshark para ver qué sucede.

quanta
fuente
¡No es la forma más fácil de obtener estadísticas simples, pero cualquier cosa incluso un poco más complicada y Wirehark brillará!
Silverfire