... Сперва переходим в директорию с дампами. {code} cd /var/revisor_dumps/ {code} Отсеять взаимодействия с определённым IP адресом: {code} # не используем xargs из-за подстановки в -w $f find -type f | while read f; do tcpdump -r $f tcp and host 104.27.163.7 -w /home/carbon/dumps/${f//[\.\/]/_} done {code} Собрать все дампы в текущей директории в один файл: {code} mergecap -w /home/carbon/one_big.pcap $(find . -type f) {code} или {code} find -type f -name "duplex.pcap" | xargs mergecap -w /home/revisor_dump/big_28.09_duplex.dump {code} Удалить всё кроме уже смерженных (duplex.pcap): {code} find -type f -name "re*.pcap" -delete {code} Набросок скрипта для анализа дампов по определённому IP: {code} #!/bin/bash set -eu IP="$1" OUTPUT="/home/carbon/dumps/" INPUT=/var/revisor_dump rm -f $OUTPUT/* cd "$INPUT" find -type f | while read f; do tcpdump -r $f tcp and host "$1" -w $OUTPUT/${f//[\.\/]/_} done mergecap -w "${OUTPUT%/*}"/$IP.pcap $(find $OUTPUT -type f) echo "${OUTPUT%/*}"/$IP.pcap ready {code} Как выглядит потеря? Запускаем: {code} tcpdump -ttttnnr $IP.dump tcp port 80 and host $IP {code} если глазами находим последовательность пакетов: {code} revisor -> host [S] revisor -> host [.] revisor -> host [.] ... {code} вместо {code} revisor -> host [S] revisor -> host [.] revisor -> host [P] host -> revisor [P.] host -> revisor [R] ... {code} Скорее всего имеет место потеря пакета с GET запросом. При анализе этого дампа tshark можно будет найти пометку: {code} [SEQ/ACK analysis] [TCP Analysis Flags] [A segment before this frame wasn't captured] [Expert Info (Warn/Sequence): Previous segment not captured (common at capture start)] [Message: Previous segment not captured (common at capture start)] [Severity level: Warn] [Group: Sequence] {code} Консольные команды, работают в tshark в такой версии - точно: {code} $ tshark -v TShark 1.10.6 (v1.10.6 from master-1.10)
|
{code}
|
#Узнаём номер стрима tcp-сессии и время, это первая и вторая колонка (для сравнения с отчётом), грепаем по ip, get-запросу или домену:
|
{code}
|
... tshark -T fields -e tcp.stream -e frame.time -e frame.number -e ip.src -e ip.dst -e col.Info -e http.host -r <file.pcap> | grep 'GetOrIpOrHost'
|
{code}
|
#Смотрим наш поток нашу tcp-сессию (конкретная tcp-сессия, в которой происходил запрос заблоканного ресурса АС Ревизор-ом и ответы Редуктора).
|
{code}
|
... tshark -R "tcp.stream eq <NumberOfStream>" -T fields -e frame.time -e frame.number -e ip.src -e ip.dst -e _ws.col.Info -e http.host -r <file.pcap> {code}
|