Поиск по сайту:

Как захватить и воспроизвести сетевой трафик в Linux


Когда вы тестируете или отлаживаете промежуточное оборудование, такое как маршрутизаторы, коммутаторы или системы обнаружения вторжений (Snort или Suricata), чрезвычайно полезно выполнять тестирование с воспроизводимым сетевым трафиком. Использование повторяющегося трафика сводит к минимуму любую неопределенность в среде тестирования, тем самым упрощая интерпретацию и анализ результатов тестирования.

В Linux есть набор утилит командной строки под названием tcpreplay, которые могут воспроизводить захваченный сетевой трафик.

В этом руководстве я покажу вам, как захватить сетевой трафик в реальном времени и воспроизвести захваченный сетевой трафик в другом месте с помощью tcpreplay.

Захват живого сетевого трафика

Сначала установите tcpreplay и tcpdump в вашей системе Linux. Чтобы установить tcpreplay, следуйте инструкциям в этом руководстве.

Следующим шагом будет захват сетевого трафика в реальном времени и его дамп в файл pcap. Для этого запустите команду tcpdump следующим образом. Я предполагаю, что eth0 — это интерфейс прослушивания, который установлен в режим неразборчивый.


$ sudo tcpdump -w dump.pcap -i eth0

Перезаписать пакеты в дампе трафика

Затем перепишите пакеты, захваченные в файл pcap. Причина, по которой необходим шаг перезаписи, заключается в том, что IP-адреса/MAC-адреса источника/получателя в исходном файле pcap могут не совпадать с адресами в среде, в которой вы хотите воспроизвести pcap. файл. Вы можете использовать следующий набор команд для выполнения такой перезаписи пакетов. Замените IP/MAC-адреса на свои.

1. Перепишите любой IP-адрес назначения и MAC-адрес в dump.pcap на 192.168.1.20 и E0:DB:55:CC:13:F1 соответственно и сохраните результат в temp1.pcap:


$ tcprewrite --infile=dump.pcap --outfile=temp1.pcap --dstipmap=0.0.0.0/0:192.168.1.20 --enet-dmac=E0:DB:55:CC:13:F1

2. Перепишите любой исходный IP-адрес и MAC-адрес в дампе входящего трафика на 192.168.1.10 и 84:A5:C8:BB:58:1A соответственно:


$ tcprewrite --infile=temp1.pcap --outfile=temp2.pcap --srcipmap=0.0.0.0/0:192.168.1.10 --enet-smac=84:A5:C8:BB:58:1A

3. Обновите контрольную сумму каждого пакета:


$ tcprewrite --infile=temp2.pcap --outfile=final.pcap --fixcsum

Приведенная выше команда пересчитывает контрольную сумму IP каждого пакета. Этот шаг необходим, если вы перезаписали какие-либо исходные/целевые IP-адреса.

После того, как вы закончите переписывать пакеты, вы можете продолжить и воспроизвести окончательный дамп пакетов следующим образом.


$ sudo tcpreplay --intf1=eth0 final.pcap

Настройте параметры воспроизведения трафика

Команда tcpreplay предлагает различные параметры для настройки параметров воспроизведения (например, скорость, продолжительность, производительность).

Чтобы просмотреть файл pcap 100 раз:


$ sudo tcpreplay --loop=100 --intf1=eth0 final.pcap

Чтобы кэшировать файл pcap в ОЗУ после первого раза, чтобы последующие циклы не приводили к задержке дискового ввода-вывода:


$ sudo tcpreplay --loop=100 --enable-file-cache --intf1=eth0 final.pcap

Чтобы воспроизвести трафик в пять раз быстрее, чем был захвачен исходный трафик:


$ sudo tcpreplay --multiplier=5.0 --intf1=eth0 final.pcap

Для воспроизведения трафика со скоростью 10 Мбит/с:


$ sudo tcpreplay --mbps=10.0 --intf1=eth0 final.pcap

Чтобы воспроизвести трафик со скоростью 100 пакетов в секунду:


$ sudo tcpreplay --pps=100 --intf1=eth0 final.pcap

Чтобы воспроизвести трафик в бесконечных циклах или до тех пор, пока не будет нажата клавиша Ctrl-c:


$ sudo tcpreplay --loop=0 --intf1=eth0 final.pcap

Чтобы воспроизвести трафик как можно быстрее:


$ sudo tcpreplay --topspeed --intf1=eth0 final.pcap

Краткое содержание

В этом руководстве я продемонстрировал, как систематически изменять трассировки пакетов с помощью tcprewrite и внедрять их в сеть с помощью tcpreplay. В сочетании с другими инструментами для манипулирования pcap они дадут вам эффективное средство для тестирования различных сетей и устранения неполадок в более контролируемой среде.

Статьи по данной тематике: