Statistik lalu lintas per port jaringan

15

Saya memiliki dua mesin dengan dua aplikasi yang saling berbicara pada beberapa port jaringan (TCP dan UDP). Saya ingin menghitung lalu lintas yang mereka kirim dan terima. Saya tidak hanya membutuhkan hitungan keseluruhan tetapi statistik per mesin per port per hari. Saya mencoba darkstat , tetapi tidak memberikan statistik per hari, tetapi hanya penghitung keseluruhan.

Apakah ada cara lain yang bisa saya hitung lalu lintas itu (saya bisa meletakkan beberapa proxy atau gateway antara dua mesin itu).

pbm
sumber

Jawaban:

16

iptables dapat memberi Anda statistik tentang berapa banyak setiap aturan dipicu, sehingga Anda dapat menambahkan aturan LOG pada port yang diminati (katakanlah port 20 & port 80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

lalu

iptables -n -L -v

akan memberi Anda jumlah paket dan byte yang dikirim melalui port ini. Tentu saja Anda harus mengurai dari output port yang menarik minat Anda.

Jika Anda membutuhkan nilai yang tepat, tambahkan -x:

iptables -n -L -v -x
mzet
sumber
4
Tidak perlu memasukkan LOGaturan (yang akan membanjiri file log Anda), cukup hitung berapa kali aturan dipicu.
Gilles 'SO- stop being evil'
4
Memang. Aturan tidak perlu memiliki tindakan. Pelajaran yang berguna untuk dipelajari: aturan tanpa -Jbaik untuk akuntansi.
Alexios
2

Anda dapat menambahkan aturan akuntansi ke konfigurasi iptables Anda. Ini harus terjadi sebelum Anda menerima lalu lintas ESTABLISHED dan TERKAIT atau Anda akan kehilangan penghitungan lalu lintas yang lewat. Untuk menghitung lalu lintas web, coba aturan seperti:

iptables -A INPUT -p tcp --dport 80 

Jika Anda memiliki banyak dari mereka, Anda mungkin ingin membuat rantai akuntansi sehingga Anda dapat melaporkan dan nol penghitung di dalamnya dalam isolasi dari rantai lain.

The Shorewall firewall memungkinkan Anda untuk dengan mudah menambahkan aturan akuntansi untuk mengatur aturan Anda.

BillThor
sumber
1

Jangan lupa sertakan statistik traffic output.

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443
Busindre
sumber
0

Manfaatkan tcpdump,

tcpdump -saya -nnn

output dari perintah di atas akan termasuk timestamp, alamat src / dest ip, port dan panjang paket. Dengan informasi itu, Anda dapat mencapai tujuan dengan mudah dengan skrip yang ditulis dengan baik.

Derui Si
sumber
0

Tidak jelas apakah Anda memerlukan penggunaan per IP tujuan, tetapi vnstat adalah alat yang berguna untuk merekam penggunaan lalu lintas per antarmuka. Instal dan jalankan vnstat -u -i eth0untuk setiap antarmuka yang ingin Anda pantau. Untuk kemudian mendapatkan penggunaan per hari vnstat -i eth0 -d.

Mgorven
sumber
1
Saya tidak berpikir bahwa menggunakan vnstatsaya bisa mendapatkan stat per port ... Atau apakah saya salah?
pbm
1
@ pbm Ah, maksud Anda port TCP / UDP. Tidak, vnstat tidak akan melakukan itu.
mgorven