No Linux, como posso saber qual processo está enviando pacotes Ethernet?


18

Estou executando o gkrellm, que mostra que algum processo no meu sistema Debian Linux está gravando aproximadamente 500 KB / s no eth0. Eu gostaria de descobrir qual é o processo. Eu sei um pouco sobre o netstat, mas ele mostra um zilhão de conexões TCP abertas e não consigo fazê-lo produzir nenhuma informação sobre tráfego.

Alguém sabe como posso obter uma lista de processos que realmente estão usando a interface eth0 para que eu possa rastrear o agressor?


SEGUIMENTO : A distribuição Debian Linux contém um nethogspacote que resolve esse problema definitivamente. Ferramentas relacionadas que não são bastante na marca incluem iftop, netstate lsof.


iptrafé bom
— Luv33preet 25/04

Isso funcionou para mim em trocas UDP de vida muito curta: serverfault.com/a/683327/119360
— Luc

Respostas:


16

Eu prefiro nethogs . É um pequeno programa de console baseado em ncurses que exibe o status do tráfego de rede por processo de maneira conveniente.


18

netstat -ptufornecerá os IDs de processo de propriedade (juntamente com as informações padrão do netstat) para todas as conexões tcp e udp. (Usuários normais não poderão identificar todos os processos.)

Se algo está enviando uma quantidade razoável de tráfego constante que você deve vê-lo em Recv-Qou Send-Qcolunas 2 e 3, respectivamente.

Exemplos:
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'

Se você suspeitar que esse processo está sendo acionado por outro processo ps axf.


(Não que a bandeira -u no necessário se você sabe que você está procurando conexões TCP.)
— Andol

5

Uma operação mais manual, se você estiver procurando apenas um processo de envio / recebimento de dados, seria executar o lsofcomando. Isso listará todos os arquivos abertos para cada processo, que incluirão conexões de rede, pois são descritores de arquivos para o sistema operacional.

Não tenho certeza se é isso que você está procurando.


4

Instale iftop(baseado em texto simples) ou ntop(gráfico).


11
iftopsomente exibe o uso da largura de banda em uma interface.
— quanta

Isso mostra muito mais que isso. Por padrão, ele divide por host.
— David Schwartz

Ele pode listar todos os processos que estão usando uma interface? Em caso afirmativo, você poderia nos mostrar o comando e as opções?
— Quanta 29/09

11
Não diretamente. Mas uma vez que você encontre o host, poderá encontrar o processo, por exemplo, com netstat -pn.
— David Schwartz

3

Use tcpdumppara cheirar alguns pacotes nesta interface:

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

Copie para o cliente e abra com o Wireshark para ver o que acontece.


Não é a maneira mais fácil de obter estatísticas simples, mas qualquer coisa ainda mais complicada e o wireshark brilharão!
— Silverfire
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.