Мой вызов
Мне нужно сделать tcpdumping много данных - на самом деле из 2 интерфейсов, оставленных в случайном режиме, которые могут видеть много трафика.
Подвести итог
- Журнал всего трафика в случайном режиме с 2 интерфейсов
- Этим интерфейсам не назначен IP-адрес
- pcap файлы должны быть повернуты на ~ 1G
- Когда сохранено 10 ТБ файлов, начните усечение самого старого
Чем я сейчас занимаюсь
Прямо сейчас я использую tcpdump вот так:
ifconfig ethX promisc
ifconfig ethX promisc
tcpdump -n -C 1000 -z /data/compress.sh -i any -w /data/livedump/capture.pcap $FILTER
$FILTER
Содержит SRC / Dst фильтры , так что я могу использовать -i any
. Причина этого в том, что у меня есть два интерфейса, и я хотел бы запустить дамп в одном потоке, а не в двух.
compress.sh
заботится о назначении tar другому ядру процессора, сжимает данные, дает ему разумное имя файла и перемещает его в место архивирования.
Я не могу указать два интерфейса, поэтому я решил использовать фильтры и дамп из any
интерфейса.
Прямо сейчас я не занимаюсь уборкой, но планирую следить за диском, и когда у меня останется 100G, я начну стирать самые старые файлы - это должно быть хорошо.
И сейчас; моя проблема
Я вижу упавшие пакеты. Это из дампа, который работал несколько часов и собрал примерно 250 гигов файлов pcap:
430083369 packets captured
430115470 packets received by filter
32057 packets dropped by kernel <-- This is my concern
Как я могу избежать потери большого количества пакетов?
Эти вещи я уже пробовал или смотрю на
Изменилось значение, /proc/sys/net/core/rmem_max
и /proc/sys/net/core/rmem_default
это действительно помогло - фактически оно позаботилось о примерно половине отброшенных пакетов.
Я также посмотрел на gulp - проблема с gulp в том, что он не поддерживает несколько интерфейсов в одном процессе, и он злится, если у интерфейса нет IP-адреса. К сожалению, в моем случае это нарушает условия сделки.
Следующая проблема заключается в том, что, когда трафик проходит через канал, я не могу запустить автоматическое вращение. Получение одного огромного файла размером 10 ТБ не очень эффективно, и у меня нет машины с 10 ТБ + ОЗУ, на которой я могу запустить wireshark, так что этого нет.
Есть ли у вас какие-либо предложения? Может быть, даже лучший способ сделать мой трафик в целом.