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.


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.


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.


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


4

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


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.


Bukan cara termudah untuk mendapatkan statistik sederhana tetapi apa pun yang bahkan sedikit lebih rumit dan wireshark akan bersinar!
Silverfire
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.