Переходим в chroot.
chroot /app/reductor
Сперва переходим в директорию с дампами.
cd /var/revisor_dumps/
Отсеять взаимодействия с определённым IP адресом:
# не используем 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
Собрать все дампы в текущей директории в один файл:
mergecap -w /home/carbon/one_big.pcap $(find . -type f)
или
find -type f -name "duplex.pcap" | xargs mergecap -w /home/revisor_dump/big_28.09_duplex.dump
Удалить всё кроме уже смерженных (duplex.pcap):
find -type f -name "re*.pcap" -delete
Набросок скрипта для анализа дампов по определённому IP:
#!/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
Как выглядит потеря?
Запускаем:
tcpdump -ttttnnr $IP.dump tcp port 80 and host $IP
если глазами находим последовательность пакетов:
revisor -> host [S] revisor -> host [.] revisor -> host [.] ...
вместо
revisor -> host [S] revisor -> host [.] revisor -> host [P] host -> revisor [P.] host -> revisor [R] ...
Скорее всего имеет место потеря пакета с GET запросом.
При анализе этого дампа tshark можно будет найти пометку:
[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]
Консольные команды, работают в tshark в такой версии - точно:
$ tshark -v TShark 1.10.6 (v1.10.6 from master-1.10)
#Узнаём номер tcp-сессии и время, это первая и вторая колонка (для сравнения с отчётом), грепаем по ip, get-запросу или домену:
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'
#Смотрим нашу tcp-сессию (конкретная tcp-сессия, в которой происходил запрос заблокированного ресурса АС Ревизор-ом и ответы Редуктора).
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>
#Полезные поля для -T fields
ip.dst ip.src http.request.method http.request.full_uri http.response.code tcp.srcport tcp.dstport