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.