1

Я пытаюсь воспроизвести файл 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 ответ1

2

TCPreplay будет воспроизводить трафик на сервере, но фактически не «общается» с серверами из-за природы протокола TCP. Таким образом, в основном ваш сервер получает TCP-пакеты, но никогда не устанавливает фактическое TCP-соединение, потому что воспроизведение не завершает правильное рукопожатие. Вот почему в вашем netcat не отображаются сеансы TCP.

По моему опыту, этот тип 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.

И их FAQ:

=== Поддерживает ли tcpreplay отправку трафика на сервер? === Если под '' сервером '' вы подразумеваете демона (Unix) или службу (Windows), которая прослушивает порт (распространенными примерами являются веб или почтовый сервер), то, вероятно, нет. Самая большая проблема заключается в том, что tcpreplay не понимает состояния общих протоколов, таких как TCP. Это означает, что он не может синхронизировать Syn/Ack для создания действительных сеансов TCP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .