Назад | Перейти на главную страницу

Tcpdump на нескольких интерфейсах

Мне нужно захватить трафик на сервере CentOS 5, который действует как веб-прокси с 2 интерфейсами WAN и 1 локальной сетью. Чтобы устранить странную проблему с прокси-сервером, я хотел бы сделать запись всего разговора. Поскольку внешние соединения сбалансированы между двумя интерфейсами WAN, мне интересно, возможно ли одновременный захват на всех интерфейсах.

Раньше я использовал tcpdump, но он допускает только один интерфейс за раз. Я могу запустить 3 параллельных процесса для захвата на всех интерфейсах, но в итоге получаю 3 разных файла захвата.

Как правильно это делать?

Согласно странице руководства tcpdump:

В системах Linux с ядром 2.2 или более поздней версии аргумент интерфейса «любой» может использоваться для захвата пакетов со всех интерфейсов. Обратите внимание, что захваты на «любом» устройстве не будут выполняться в беспорядочном режиме.

Итак, вы должны иметь возможность запускать: tcpdump -i any для одновременного сбора данных по всем интерфейсам в один файл захвата.

Я бы подошел к этому, чтобы выгрузить каждый интерфейс в отдельный файл, а затем объединить их. Любой интерфейс также включает в себя низкий трафик, который может испортить захват.

Это также позволяет анализировать потоки пакетов для каждого интерфейса без сложной фильтрации.

Я бы записал в 3 терминала или выделил команду с помощью &

Флаги -nn отключают разрешение DNS для скорости, -s 0 сохраняет полный пакет, а -w записывает в файл.

tcpdump -i wan0 -nn -s 0 -w wan0.dump
tcpdump -i wan1 -nn -s 0 -w wan1.dump
tcpdump -i lan0 -nn -s 0 -w lan0.dump

Затем я бы слил файлы с помощью команды mergecap из wirehark:

mergecap -w merged.dump wan0.dump wan1.dump lan0.dump

Для захвата tcpdump на всех интерфейсах используйте

tcpdump -i any