Мне нужно захватить трафик на сервере 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