Di Linux, bagaimana saya bisa tahu proses mana yang mengirim paket Ethernet?

18

Saya menjalankan gkrellm yang menunjukkan bahwa beberapa proses pada sistem Linux Debian saya menulis sekitar 500KB / s ke eth0. Saya ingin mengetahui prosesnya. Saya tahu sedikit tentang netstat, tetapi ini menunjukkan trilyun koneksi TCP terbuka dan sepertinya saya tidak dapat membuatnya menghasilkan informasi tentang lalu lintas.

Adakah yang tahu bagaimana saya bisa mendapatkan daftar proses yang sebenarnya menggunakan antarmuka eth0 sehingga saya bisa melacak pelaku?


FOLLOWUP : Distribusi Debian Linux berisi nethogspaket yang menyelesaikan masalah ini secara definitif. Alat terkait yang tidak cukup pada sasaran meliputi iftop, netstat, dan lsof.

Norman Ramsey
sumber
iptrafitu bagus
Luv33berhormat
Ini bekerja untuk saya untuk pertukaran UDP yang sangat singkat: serverfault.com/a/683327/119360
Luc

Jawaban:

16

Saya lebih suka nethogs . Ini adalah program konsol kecil berbasis ncurses yang menampilkan status lalu lintas jaringan per proses dengan cara yang mudah.

Janne Pikkarainen
sumber
18

netstat -ptuakan memberi Anda id proses kepemilikan (bersama dengan info netstat standar) untuk semua konvensi tcp dan udp. (Pengguna normal tidak akan dapat id semua proses.)

Jika ada sesuatu yang mengirimkan cukup banyak lalu lintas konstan Anda harus melihatnya di Recv-Qatau Send-Qkolom 2 dan 3 masing-masing.

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

Jika Anda mencurigai bahwa proses itu dipicu oleh proses lain ps axf.

84104
sumber
(Bukan flag -u yang diperlukan jika Anda tahu bahwa Anda mencari koneksi TCP.)
andol
5

Operasi yang lebih manual jika Anda hanya mencari proses pengiriman / penerimaan data untuk menjalankan lsofperintah. Ini akan mencantumkan semua file yang terbuka untuk setiap proses yang akan menyertakan koneksi jaringan karena mereka adalah deskriptor file ke os

Tidak yakin apakah ini yang Anda cari.

gdurham
sumber
4

Instal iftop(berbasis teks sederhana) atau ntop(grafis).

David Schwartz
sumber
1
iftophanya menampilkan penggunaan bandwidth pada antarmuka.
quanta
Ini menunjukkan lebih dari itu. Secara default, itu rusak oleh host.
David Schwartz
Bisakah ia mendaftar semua proses yang menggunakan antarmuka? Jika demikian, bisakah Anda menunjukkan kepada kami perintah dan opsi?
quanta
1
Tidak secara langsung. Tetapi begitu Anda menemukan tuan rumah, Anda dapat menemukan prosesnya, misalnya dengan netstat -pn.
David Schwartz
3

Gunakan tcpdumpuntuk mengendus beberapa paket pada antarmuka ini:

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

Salin ke klien dan buka dengan Wireshark untuk melihat apa yang terjadi.

kuanta
sumber
Bukan cara termudah untuk mendapatkan statistik sederhana tetapi apa pun yang bahkan sedikit lebih rumit dan wireshark akan bersinar!
Silverfire