Tantangan saya
Saya perlu melakukan tcpdumping banyak data - sebenarnya dari 2 antarmuka yang tersisa dalam mode promiscuous yang dapat melihat banyak lalu lintas.
Singkatnya
- Log semua lalu lintas dalam mode promiscuous dari 2 antarmuka
- Antarmuka tersebut tidak diberi alamat IP
- file pcap harus diputar per ~ 1G
- Ketika 10 TB file disimpan, mulailah memotong yang tertua
Apa yang saya lakukan saat ini
Saat ini saya menggunakan tcpdump seperti ini:
ifconfig ethX promisc
ifconfig ethX promisc
tcpdump -n -C 1000 -z /data/compress.sh -i any -w /data/livedump/capture.pcap $FILTER
The $FILTER
berisi filter src / dst sehingga saya bisa menggunakan -i any
. Alasan untuk ini adalah, bahwa saya memiliki dua antarmuka dan saya ingin menjalankan dump dalam satu utas daripada dua.
compress.sh
menangani pemberian tar ke inti CPU lain, kompres data, berikan nama file yang masuk akal dan pindahkan ke lokasi arsip.
Saya tidak dapat menentukan dua antarmuka, jadi saya memilih untuk menggunakan filter dan membuang dari any
antarmuka.
Saat ini, saya tidak melakukan pembersihan, tetapi saya berencana untuk memonitor disk dan ketika saya memiliki 100G kiri saya akan mulai menghapus file tertua - ini seharusnya baik-baik saja.
Dan sekarang; masalahku
Saya melihat paket yang jatuh. Ini dari dump yang telah berjalan selama beberapa jam dan mengumpulkan sekitar 250 gigs file pcap:
430083369 packets captured
430115470 packets received by filter
32057 packets dropped by kernel <-- This is my concern
Bagaimana saya bisa menghindari begitu banyak paket yang jatuh?
Hal-hal ini sudah saya coba atau lihat
Mengubah nilai /proc/sys/net/core/rmem_max
dan /proc/sys/net/core/rmem_default
yang memang membantu - sebenarnya hanya menangani sekitar setengah dari paket yang dijatuhkan.
Saya juga telah melihat tegukan - masalah dengan tegukan adalah, bahwa itu tidak mendukung banyak antarmuka dalam satu proses dan itu menjadi marah jika antarmuka tidak memiliki alamat IP. Sayangnya, itu adalah pemecah kesepakatan dalam kasus saya.
Masalah berikutnya adalah, bahwa ketika lalu lintas mengalir melalui pipa, saya tidak bisa mendapatkan rotasi otomatis. Mendapatkan satu file 10 TB besar tidak terlalu efisien dan saya tidak memiliki mesin dengan 10TB + RAM yang dapat saya jalankan wireshark, jadi itu keluar.
Apakah Anda punya saran? Mungkin bahkan cara yang lebih baik untuk melakukan dump traffic sama sekali.