Почему libpcap захватывает неполные пакеты?

Я запускаю «tcpdump port 1025 -w out.pcap -s 4000», и все пакеты, отправленные с локального хоста, я вижу «XXX байтов в сети, 54 байта захвачено» (захвачены только заголовки Ethernet и TCP, данные не захвачены). Очевидно, что снаплен 4000, поэтому я не могу понять, почему пакет обрезан посередине. Я также написал программу, которая напрямую использует libpcap, и произошло то же самое. Это происходило как на libpcap 1.1.1, так и на 1.2.0rc1, однако на libpcap 0.9.8 это работало!

Я использую SLE10 с пакетом обновления 3 (SP3), и у меня есть другой компьютер с точно такой же ОС и установленными программами, где он отлично работает.

Вот пример захвата.


person Shay    schedule 06.09.2011    source источник
comment
Вы пробовали это с -s0?   -  person Kerrek SB    schedule 06.09.2011
comment
Это действительно странно и не должно происходить. Может быть, попробовать с какого-нибудь живого компакт-диска, просто чтобы убедиться, что это программная проблема с вашей стороны...   -  person Kerrek SB    schedule 06.09.2011
comment
Только что попробовал с live CD, все работает. Я думаю, что это может быть проблема с какой-то конфигурацией сетевой карты, поскольку у меня есть другой компьютер с той же ОС и программным обеспечением, на котором работает tcpdump (другое оборудование). Любая идея?   -  person Shay    schedule 07.09.2011


Ответы (1)


В поддержке libpcap механизма захвата с отображением памяти в Linux есть ошибка, которая исправлена ​​в более новых версиях; его следует закрепить в стволе и 1-2 ветках. Такой поддержки не было в libpcap 0.x, поэтому ее не было в libpcap 0.9.8.

person Community    schedule 19.10.2011