Pantau jumlah byte yang ditransfer ke / dari alamat IP pada port

19

Adakah yang bisa merekomendasikan alat baris perintah linux untuk memantau jumlah byte yang ditransfer antara server lokal dan alamat IP / port tertentu.

Perintah tcpdump yang setara adalah:

tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com

yang keluaran:

46 packets captured
131 packets received by filter
0 packets dropped by kernel

Saya ingin sesuatu yang serupa yang dihasilkan:

54 bytes out, 176 bytes in

Saya ingin ini bekerja di RHEL dan bebas / open-source. Akan lebih baik jika ada alat yang sudah ada yang hilang juga!

Mike
sumber

Jawaban:

14

Anda bisa menggunakan iptables. Jika Anda belum menggunakannya, Anda dapat menggunakan konfigurasi Terima yang terbuka, tetapi miliki aturan untuk melakukan penghitungan.

Misalnya, di RHEL /etc/sysconfig/iptablesfile Anda dapat terlihat seperti:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -j INPUT
-A INPUT -s 10.10.1.1 -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -d 10.10.1.1 -p tcp -m tcp --dport 80 -j ACCEPT

Di mana 10.10.1.1:80 adalah host: port tujuan penghitungan lalu lintas (Anda tidak dapat menggunakan nama host). Anda kemudian dapat memeriksa lalu lintas yang dihitung dengan perintah iptables -nvxLsebagai root.

Contoh output:

Chain INPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       10.10.1.1            0.0.0.0/0              tcp spt:80


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
       0          0 INPUT      all  --  *      *       0.0.0.0/0            0.0.0.0/0       

Chain OUTPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.10.1.1              tcp dpt:80
brent
sumber
7
Juga sepenuhnya sah untuk memiliki aturan tanpa target, semata-mata untuk tujuan penghitungan, misalnya iptables -A INPUT -d 1.2.3.4 -p tcp --dport 3456. Ini tidak akan melakukan apa pun untuk lalu lintas, karena tidak ada argumen "-j", tetapi setiap paket yang cocok akan menambah jumlah.
MadHatter mendukung Monica
9

Saya akan menyarankan wireshark (untuk itu banyak fitur ' percakapan '), tetapi itu bukan alat baris perintah. Anda dapat mencoba tshark , yang merupakan alat penganalisa baris perintah yang tertutup untuk wireshark. Keluaran seharusnya memiliki (agak) apa yang Anda cari (contoh di bawah):

tshark -R "ip.addr == 10.2.3.67" -z conv,ip -p -f "tcp port 22"

Hasil:

                                     |       <-      | |       ->      | |     Total     |
                                     | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
10.2.3.23           <-> 10.2.3.67        42     15341      35      4890      77     20231
l0c0b0x
sumber
7

Ada juga alat yang disebut 'iftop' yang menampilkan penggunaan bandwidth pada antarmuka oleh tuan rumah. Saya pikir iftop dapat melakukan apa yang Anda gambarkan tetapi biasanya antarmuka adalah sesuatu seperti 'atas'.

Jadi untuk contoh Anda, saya pikir Anda bisa membuat file config untuk memberikan kode filter Anda.

Jadi di sini adalah kode-filter saya di file konfigurasi saya.

$ cat /tmp/conf
filter-code: port http and host google.com

Kemudian, saya menjalankan yang berikut untuk melihat jalur jaringan.

$ sudo iftop -c /tmp/conf

Tidak yakin apakah ini pilihan terbaik tetapi tentu saja salah satu cara untuk mencapai apa yang Anda butuhkan. HTH.

istudy0
sumber
3
Anda juga dapat menentukan filter pada baris perintah tanpa menggunakan file konfigurasi:iftop -f 'port 80 and host google.com'
gioele
Apakah Anda ingin total byte yang ditransfer, bukan bandwidth. Bisakah Anda iftopmenunjukkan itu?
arainone
3

Anda juga dapat mencoba "iptraf" yang ringan dan sederhana. Itu dapat menyaring berdasarkan port dan memberi Anda info tingkat tinggi, tidak ada data payload, dll.

dixie_flatline
sumber