Я пытаюсь сохранить необработанные данные, которые отправляются через наш прокси-сервер на определенный URL-адрес. Мой друг посоветовал мне использовать tcpdump, и я начал читать об этом на их странице. Но по какой-то причине не пользуюсь.
Я попытался 'tcpdump -c10 host my.very.specific.host.com«Но у меня нет спичек. И да =) Я вижу, что в server.log есть какое-то действие со стороны клиента.
Если я использую 'tcpdump -c10«Я получаю сразу 10 рядов. Так что, наверное, я не понял понятие «хозяин»?
Я не могу указать его на IP-адрес, поскольку это веб-сервер, который обрабатывает множество разных URL-адресов.
Это действительно не моя область (программист), поэтому прошу прощения за мой простой вопрос :) Заранее спасибо.
Спасибо за помощь, и да .. Я должен был сформулировать свой вопрос более четко. Итак, вот некоторая «дополнительная» информация. Что я хочу сделать, так это захватить данные, поступающие с нашего прокси на мобильный телефон.
Причина, по которой я делаю это, заключается в том, чтобы убедиться, что мы отправляем именно то, что хотим, прежде чем оно попадет в «безумный шлюз / прокси-сервер мобильного оператора» (да, они, как правило, изменяют вещи больше, чем должны;))
Информация, которая меня интересует, - это протокол http.
Итак, что я сделаю сейчас, я попытаюсь сбросить информацию, которая проходит между нашим прокси и шлюзом мобильного оператора, на «общедоступную» сетевую карту. К счастью для меня, у оператора мобильной связи был только один публичный шлюз.
Конец связи!
У вас могут возникнуть проблемы с разными интерфейсами. По умолчанию tcpdump прослушивает только первый найденный интерфейс Ethernet. Если вы добавите «-i any», он будет прослушивать каждый интерфейс.
Как кто-то уже упоминал, вы в конечном итоге перехватите весь трафик на определенный IP-адрес, независимо от имени DNS, которое вы хотите. Вы можете уменьшить объем собираемых данных, дополнительно ограничив фильтр. Вы можете добавить порт и указать конкретный удаленный хост или сеть.
# tcpdump host 12.34.56.78 and port 80 and net 78.65.43.21/24
Вы можете обнаружить, что tcpflow более полезен для вас. Он будет выгружать каждую сторону TCP-соединения в отдельный файл. Вы можете использовать его с тем же фильтром, что и с tcpdump, или загрузить файл pcap. Чтобы сохранить файл pcap, выполните:
# tcpdump -s 0 -w /tmp/dump.pcap -i any host 12.34.56.78 and port 80
Я попытаюсь сказать то, что сказал LapTop006, но немного иначе.
Когда вы запустите это tcpdump -c10 хост my.very.specific.host.com Команда tcpdump преобразует my.very.specific.host.com в IP-адрес и фильтрует трафик на этот IP-адрес. Если DNS возвращает несколько IP-адресов для «my.very.specific.host.com», tcpdump просто возьмет первый возвращенный IP-адрес и отфильтрует этот IP-адрес.
Если для "" my.very.specific.host.com "возвращено только несколько IP-адресов, вы можете сделать:
tcpdump -c10 host 1.2.3.4 or host 2.3.4.5 or host 3.4.5.6
Было бы проще перехватывать трафик между клиентом и прокси, чем между удаленным веб-сервером и прокси, поскольку у клиента есть только один IP-адрес. (Я полагаю, что если вы пытаетесь увидеть взаимодействие между удаленным веб-сервером и прокси-сервером, вам нужно это зафиксировать. Ваш пост не дает мне достаточно, чтобы продолжить ...)
Я бы попробовал (внутренний) IP-адрес в качестве аргумента для HOST
.
кстати вот учебник http://linux.byexamples.com/archives/283/simple-usage-of-tcpdump/ и шпаргалка (PDF) со всеми опциями.
tcpdump всегда работает на уровне IP, даже если вы дадите ему DNS-имя, он просто преобразует его в IP
Вы можете использовать адрес клиента в качестве хоста для рассмотрения.
Следующим шагом будет запись полных пакетов в файл «pcap», который wirehark может открыть для полного анализа.
В дополнение к тому, что говорили другие - используйте IP, правильный интерфейс, сделайте дамп в pcap.
Я бы посоветовал избавиться от -c10
флаг. Это инструктирует tcpdump
для выхода после получения ровно 10 пакетов, и этого может быть недостаточно для того, что вы хотите увидеть.
Вы хотите запустить tcpdump на машине, обслуживающей веб-страницы. Не используйте адрес хоста; в любом случае вы будете захватывать трафик только на этот хост. Вы хотите записать в файл все, что есть на порту 80, и вы хотите убедиться, что вы захватили все данные, не усекая их. Вам нужна следующая команда:
sudo tcpdump -w log.pcap -s 65535 port 80
Если ваша машина имеет несколько интерфейсов Ethernet, вам может потребоваться указать тот, который будет использоваться для захвата трафика. Если вы обнаружите, что не захватываете трафик, используйте ifconfig -a
чтобы увидеть список интерфейсов и их адреса, выберите подходящий и добавьте -i eth1
(или любой другой интерфейс) параметры в командной строке.
Когда у вас есть файл pcap, вам нужно его проанализировать. Для интерактивного использования Wireshark отличный инструмент. Скопируйте файл pcap на свою рабочую станцию и запустите wireshark -r log.pcap
. Вы можете использовать фильтры, чтобы найти пакеты с заголовками «Host: some.server.of.interest.com»; это те, которые интересуют виртуального хоста. Analyze / Follow TCP Stream покажет вам весь HTTP-диалог в очень удобочитаемом формате.
Если вы хотите провести автоматический анализ, вам, вероятно, придется написать собственный код. Один из вариантов - использовать такой инструмент, как tcpflow чтобы выгрузить все HTTP-сеансы в файлы, а затем использовать язык сценариев (или даже grep) для выбора интересующих файлов и их анализа. Также нетрудно читать файлы pcap напрямую, но повторная сборка диалогов TCP - это намного больше работы.