tcpdump: потерянные пакеты

Использование sed

sed -i 's+^mynetworks.*+& 0.0.0.0/0+' log.txt

Использование awk

awk '/^mynetworks/ {$0=$0" 0.0.0.0/0"} 1' log.txt

или

awk '{if ($1 ~ /^mynetworks/) print $0, "0.0.0.0/0"; else print $0}' log.txt

Использование bash

while read -r line ; do
    [[ $line == mynetworks* ]] && line+=" 0.0.0.0/0"
    echo "$line"
done < log.txt
3
15.05.2017, 23:00
1 ответ

Когда tcpdump "отбрасывает" пакеты, это связано с тем, что у него недостаточно места в буфере, чтобы не отставать от пакетов, поступающих из сети.

Разница между захваченными и полученными пакетами может быть связана с реализацией ОС или tcpdump, или, что более часто, с прерыванием процесса с помощью ^ C.

Установка размера буфера для каждого пакета с помощью «s0» приводит к установке 64 КБ на man tcpdump ; обычно я устанавливаю не более 1500, если использую -X для просмотра всего пакета, и если только использую tcpdump для просмотра заголовков, даже меньше, чем необходимо - 160 байт, что составляет размер заголовков IPv4.

Обычно работа с экраном также медленнее, если нужна скорость, я бы направил вывод в файл, если вам не нужно смотреть его в реальном времени.

От man "tcpdump":

"Обратите внимание, что создание снимков большего размера увеличивает время , необходимое для обработки пакетов, и, по сути, уменьшает объем буферизации пакетов. Это может привести к потере пакетов.Вам следует ограничить snaplen наименьшим числом, которое будет захватывать интересующую вас информацию протокола . "

5
27.01.2020, 21:12

Теги

Похожие вопросы