W systemie Linux, skąd mam wiedzieć, który proces wysyła pakiety Ethernet?

18

Używam gkrellm, który pokazuje, że jakiś proces w moim systemie Debian Linux zapisuje około 500 KB / s do eth0. Chciałbym dowiedzieć się, który to proces. Wiem trochę o netstat, ale pokazuje on miliard otwartych połączeń TCP i nie mogę sprawić, by generował jakiekolwiek informacje o ruchu.

Czy ktoś wie, jak mogę uzyskać listę procesów, które faktycznie używają interfejsu eth0, dzięki czemu mogę wyśledzić przestępcę?


FOLLOWUP : Dystrybucja Debian Linux zawiera nethogspakiet, który definitywnie rozwiązuje ten problem. Powiązane narzędzia, które nie są dość na znaku to iftop, netstati lsof.

Norman Ramsey
źródło
iptrafjest dobra
Luv33preet 25.04.17
To działało dla mnie w przypadku bardzo krótkotrwałych wymian UDP: serverfault.com/a/683327/119360
Luc

Odpowiedzi:

16

Wolę pająki . Jest to mały program konsolowy oparty na ncurses, który w wygodny sposób wyświetla stan ruchu sieciowego na proces.

Janne Pikkarainen
źródło
18

netstat -ptupoda ci identyfikatory procesu będącego właścicielem (wraz ze standardowymi informacjami o netstat) dla wszystkich połączeń tcp i udp. (Zwykli użytkownicy nie będą w stanie zidentyfikować wszystkich procesów).

Jeśli coś wysyła kwotę godziwą ciągłym ruchu należy je zobaczyć na Recv-Qlub Send-Qkolumny 2 i 3 odpowiednio.

Przykłady:
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'

Jeśli podejrzewasz, że proces ten jest uruchamiany przez inny proces ps axf.

84104
źródło
(Nie oznacza to, że flaga -u jest konieczna, jeśli wiesz, że szukasz połączeń TCP.)
andol
5

Bardziej ręczną operacją, jeśli szukasz tylko procesu wysyłania / odbierania danych, byłoby uruchomienie lsofpolecenia. Spowoduje to wyświetlenie listy wszystkich otwartych plików dla każdego procesu, które będą obejmować połączenia sieciowe, ponieważ są deskryptorami plików dla systemu operacyjnego

Nie jestem pewien, czy tego właśnie szukasz.

gdurham
źródło
4

Zainstaluj iftop(prosty tekstowy) lub ntop(graficzny).

David Schwartz
źródło
1
iftopwyświetla tylko użycie przepustowości w interfejsie.
kwanty
Pokazuje znacznie więcej. Domyślnie rozkłada się według hosta.
David Schwartz,
Czy może wyświetlić listę wszystkich procesów korzystających z interfejsu? Jeśli tak, czy możesz nam pokazać polecenie i opcje?
kwanty
1
Nie bezpośrednio. Ale gdy znajdziesz hosta, możesz znaleźć proces, na przykład za pomocą netstat -pn.
David Schwartz,
3

Użyj tcpdumpdo wąchania niektórych pakietów w tym interfejsie:

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

Skopiuj do klienta i otwórz za pomocą Wireshark, aby zobaczyć, co się stanie.

kwanty
źródło
Nie jest to najłatwiejszy sposób na uzyskanie prostych statystyk, ale coś jeszcze bardziej skomplikowanego i wireshark zabłyśnie!
Silverfire,