Основы Linux: захват пакетов с помощью tcpdump

внешний интерфейс Linux TCP/IP
Основы Linux: захват пакетов с помощью tcpdump

Введение

Инструмент анализа сокращения пакетов сетевых данных. Поддерживает фильтрацию сетевых уровней, протоколов, хостов, сетей или портов. И предоставьте логические утверждения, такие как и, ИЛИ, НЕ помогите удалить бесполезную информацию.

tcpdump - dump traffic on a network

пример

не указывать никаких параметров

Слушайте пакеты, проходящие через первую сетевую карту. На хосте может быть более одной сетевой карты, поэтому часто необходимо указать сетевую карту.

tcpdump

Мониторить конкретную сетевую карту

tcpdump -i en0

Прослушивание определенного хоста

Пример: Мониторинг этой машины и хоста182.254.38.55коммуникационные пакеты между ними.

Примечание. Исходящие и входящие пакеты будут контролироваться.

tcpdump host 182.254.38.55

Сообщения из определенного источника, адрес назначения

конкретный источник

tcpdump src host hostname

конкретный адрес назначения

tcpdump dst host hostname

Если не указаноsrcиdst, Затем будет прослушиваться источник или цель связи имени хоста.

tcpdump host hostname

конкретный порт

tcpdump port 3000

Прослушивание TCP/UDP

Различные службы на сервере используют TCP и UDP в качестве транспортного уровня.Если вы хотите отслеживать только TCP-пакеты

tcpdump tcp

Исходный хост + порт + TCP

слушать с хоста123.207.116.169в порту22TCP-пакет

tcpdump tcp port 22 and src host 123.207.116.169

Прослушивание связи между конкретными хостами

tcpdump ip host 210.27.48.1 and 210.27.48.2

210.27.48.1кроме и210.27.48.2связь между хостами снаружи

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

Чуть более подробный пример

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1) tcp: ip icmp arp rarp и такие параметры, как tcp, udp, icmp и т. д., должны быть размещены в позиции первого параметра для фильтрации типа дейтаграммы. (2)-i eth1 : захватывать только пакеты, проходящие через интерфейс eth1 (3)-t : не отображать метки времени (4)-s 0 : Длина захвата по умолчанию составляет 68 байт при захвате пакетов. Добавьте -S 0, чтобы захватить весь пакет (5)-c 100 : взять только 100 пакетов (6)dst port !22: Не перехватывать пакеты, порт назначения которых равен 22. (7) src net 192.168.1.0/24 : исходный сетевой адрес пакета — 192.168.1.0/24. (8)-w ./target.cap : сохраните его как файл шапки для удобного анализа с помощью ethereal (т.е. wireshark)

Получить HTTP-пакет

TODO

Ограничить количество захвата пакетов

Таким образом, после перехвата 1000 пакетов он автоматически завершится.

tcpdump -c 1000

сохранить в локальном

Примечание: по умолчанию tcpdump записывает вывод в буфер. Только когда содержимое буфера достигает определенного размера или когда tcpdump завершает работу, вывод будет записываться на локальный диск.

tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

также можно добавить-UПринудительная немедленная запись на локальный диск (обычно не рекомендуется, производительность относительно низкая)

Практический пример

Давайте сначала рассмотрим следующий относительно распространенный метод развертывания: сервер Nodejs развертывается на сервере, который прослушивает порт 3000. Обратный прокси-сервер nginx прослушивает порт 80 и перенаправляет запрос на сервер nodejs (127.0.0.1:3000).

Браузер -> обратный прокси nginx -> сервер nodejs

Вопрос: Допустим, пользователь (183.14.132.117) заходит в браузер и обнаруживает, что запрос не возвращается, как его устранить?

Шаг 1: Проверьте, доходит ли запрос до сервера nodejs -> Вы можете проверить это через журнал.

Шаг 2: Проверьте, пересылает ли nginx запрос на сервер nodejs.

tcpdump port 8383 

На этом этапе вы обнаружите, что вывода нет, хотя сервер nodejs получил запрос. Поскольку адрес, пересылаемый nginx, равен 127.0.0.1, интерфейс по умолчанию не используется, и указанный интерфейс должен отображаться в это время.

tcpdump port 8383 -i lo

Примечание. Настройте nginx и позвольте nginx передать хост на стороне запроса, иначе сервер nodejs не сможет получить хост src, то есть следующий мониторинг недействителен, потому что в это время для сервера nodejs хост src 127.0.0.1

tcpdump port 8383 -i lo and src host 183.14.132.117

Шаг 3. Проверьте, доходит ли запрос до сервера.

tcpdump -n tcp port 8383 -i lo and src host 183.14.132.117

Ссылки по теме

tcpdump очень подробный http://blog.chinaunix.net/uid-11242066-id-4084382.html

http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html Подробное объяснение команды Linux tcpdump

Примеры использования Tcpdump (рекомендуется) http://www.rationallyparanoid.com/articles/tcpdump.html

Используйте TCPDUMP для сбора информации о заголовке состояния HTTP. http://blog.sina.com.cn/s/blog_7475811f0101f6j5.html

Категории