
Я пытаюсь воспроизвести файл pcap на HTTP-сервере. Перед этим я пытаюсь вручную проверить, что я правильно использую tcpreplay.
Я начал netcat -l 12345
прослушивать определенный порт. Назовем его "сервер". На другой машине я запустил tcpdump
захват всего трафика с назначением на определенный порт в файле dummy.pcap
. После этого я запустил netcat на клиентской машине, подключился к "серверу" и отправил несколько сообщений. Я проверил полученный pcap, tshark
и он показал, что пакеты были захвачены.
Я снова запустил netcat на сервере, а на клиенте запустил tcpreplay:
tcpreplay -d 5 -i eth0 -t dummy.pcap
Но на консоли netcat на сервере ничего не появляется. Я попробовал запустить tcpdump на "сервере" и он показывает, что пакеты принимаются.
Почему пакеты не отображаются в консоли netcat?
решение1
TCPreplay будет воспроизводить трафик НА сервере, но на самом деле не «общается» с серверами из-за природы протокола TCP. Таким образом, по сути, ваш сервер получает пакеты TCP, но никогда не устанавливает фактическое соединение TCP, поскольку воспроизведение не завершает надлежащее рукопожатие. Вот почему сеансы TCP не отображаются в вашем netcat.
По моему опыту, этот вид tcpdump полезен только для анализа, и если вы обеспокоены воспроизведением последовательности команд/данных, вам нужно найти инструмент, специфичный для вашего протокола (в моем случае это включало написание специального клиента).
ВидетьКак записывать и воспроизводить http-взаимодействия?
Из tcpreplayвики:
Отправка трафика на сервер
Проблема
У вас есть захват pcap-трафика, и вы хотели бы воспроизвести этот трафик на другом сервере.
Решение
Во-первых, это будет работать только с трафиком ICMP и UDP. Tcpreplay не поддерживает отправку трафика TCP на сервер, поскольку он не синхронизирует номера Syn/Ack в потоке TCP.
При этом вам нужно будет изменить IP-адреса и MAC-адреса назначения, чтобы они соответствовали адресам целевого сервера. В этом случае мы предположим, что IP-адрес целевого сервера — 10.10.1.1, а его MAC-адрес — 00:01:02:03:04:05.
=== Поддерживает ли tcpreplay отправку трафика на сервер? === Если под ''сервером'' вы подразумеваете демон (Unix) или службу (Windows), которые прослушивают порт (веб-сервер или почтовый сервер — типичные примеры), то, скорее всего, нет. Самая большая проблема в том, что tcpreplay не понимает состояние распространенных протоколов, таких как TCP. Это означает, что он не может синхронизировать Syn/Ack для создания действительных сеансов TCP.