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.


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:



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.


(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.


4

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


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.


Nie jest to najłatwiejszy sposób na uzyskanie prostych statystyk, ale coś jeszcze bardziej skomplikowanego i wireshark zabłyśnie!
Silverfire,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.