- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Курс по сетям
- 15 примеров команды PING для диагностики сети
- Руководство по команде grep в Linux
- Рекурсивно найти слово в файлах и папках Linux
- Руководство по использованию ffmpeg в Linux
- Как обновить ядро Linux в CentOS 7
- Как перезагрузить сеть в Ubuntu?
- Поиск и расположение команд в Linux
- Захват пакетов с tcpdump: руководство с примерами
- Установка Tcpdump
- Захват пакетов с Tcpdump
- Понимание формата вывода
- Фильтрация пакетов
- Протокол
- IP адрес или имя хоста отправителя или получателя
- Сложные выражения
- Проверка содержимого пакета
- Сохранение файл
- Заключение
- tcpdump
- tcpdump для VoIP SIP H.323
- tcpdump Packet Filter Firewall (PF)
- Примеры использования tcpdump
- Примеры использования tcpdump AND OR EXCEPT
- Проблема +arplookup 0.0.0.0 failed: host is not on local network
- Wireshark: Packet size limited during capture
- tcpdump использование в Windows 10
- Ссылки
- Онлайн школа английского языка
- Крупнейшая в Европе школа английского языка.
- Школа английского языка по Skype
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Курс по сетям
15 примеров команды PING для диагностики сети
Руководство по команде grep в Linux
Рекурсивно найти слово в файлах и папках Linux
Руководство по использованию ffmpeg в Linux
Как обновить ядро Linux в CentOS 7
Как перезагрузить сеть в Ubuntu?
Поиск и расположение команд в Linux
Еженедельный дайджест
Захват пакетов с tcpdump: руководство с примерами
Gotta Catch ‘Em All!
22 минуты чтения
Tcpdump — это утилита командной строки, которая позволяет вам захватывать и анализировать сетевой трафик, проходящий через вашу систему. Он часто используется для устранения неполадок в сети, а также для обеспечения безопасности.
Обучайся в Merion Academy
Пройди курс по сетевым технологиям
Начать
Это мощный и универсальный инструмент, который включает в себя множество опций и фильтров. Поскольку это инструмент командной строки, он идеально подходит для работы на удаленных серверах или устройствах, для которых GUI недоступен, для сбора данных, которые могут быть проанализированы позже, поскольку результаты можно сохранять в отдельный файл. Он также может быть запущен в фоновом режиме или как запланированное задание с использованием таких инструментов, как cron.
В этой статье мы рассмотрим некоторые из наиболее распространенных функций tcpdump.
Установка Tcpdump
Tcpdump включен в несколько дистрибутивов Linux, так что скорее всего, он у вас уже установлен. Проверьте, установлен ли tcpdump в вашей системе, например, с помощью команды which :
Мы должны получить примерно такой вывод:
Если tcpdump не установлен, вы можете установить его, но используя менеджер пакетов вашего дистрибутива.
В CentOS или Red Hat Enterprise Linux:
Для Ubuntu and Debian:
Tcpdump требует libpcap , который является библиотекой для захвата сетевых пакетов. Если он не установлен, он будет автоматически добавлен как зависимость.
Захват пакетов с Tcpdump
Синтаксис Tcpdump выглядит следующим образом:
- Команда options позволяют вам контролировать поведение команды.
- Фильтр expression определяет какие пакеты будут захвачены
Для захвата пакетов для траблшутинга или анализа tcpdump требуются повышенные разрешения, поэтому в следующих примерах большинство команд имеют префикс sudo.
Для начала используйте команду tcpdump -D , чтобы увидеть, какие интерфейсы доступны для захвата:
В приведенном выше примере вы можете увидеть все интерфейсы, доступные на компьютере. Специальный интерфейс any позволяет захватывать на всех активных интерфейсах.
Давайте использовать его, чтобы поймать немного пакетов:
Ключ -i показывает что мы захватываем пакеты с определенного (хоть и псевдо) интерфейса. Вы можете прервать захват, нажав Ctrl + C .
Как вы видите, мы перехватили OVER 9000 пакетов. Но так много нам не нужно Чтобы ограничить количество перехваченных пакетов и остановить tcpdump, используйте параметр -c :
В этом случае tcpdump прекратил захват автоматически после захвата пяти пакетов. Это полезно в разных сценариях — например, если вы устраняете неполадки с подключением и захватываете несколько начальных пакетов, этого достаточно. Это еще более полезно, когда мы применяем фильтры для захвата определенных пакетов.
По умолчанию tcpdump разрешает (ресолвит) IP-адреса и порты в имена, как показано в предыдущем примере. Однако при устранении неполадок в сети часто проще использовать IP-адреса и номера портов. Отключите разрешение имен, используя опцию -n и разрешение портов с -nn :
Как показано выше, вывод захвата теперь отображает IP-адреса и номера портов. Это также не позволяет tcpdump выдавать DNS-запросы, что помогает снизить сетевой трафик при устранении неполадок в сети.
Теперь, когда вы можете захватывать сетевые пакеты, давайте рассмотрим, что означает этот вывод.
Понимание формата вывода
Tcpdump способен захватывать и декодировать множество различных протоколов, таких как TCP, UDP, ICMP и многие другие. Хотя мы не можем охватить все их здесь, чтобы помочь вам начать, давайте рассмотрим пакет TCP. Вы можете найти более подробную информацию о различных форматах протокола на страницах руководства tcpdump. Типичный пакет TCP, захваченный tcpdump, выглядит следующим образом:
Поля могут различаться в зависимости от типа отправляемого пакета, но общий формат tcpdump выглядит так:
- Первое поле, 08:41:13.729687 , представляет метку времени полученного пакета согласно местным часам, в формате часы:минуты:секунды.фракция где фракция — доли секунды с полуночи.
- Затем IP представляет протокол сетевого уровня — в данном случае IPv4. Для пакетов IPv6 это значение IP6.
- Следующее поле, 192.168.64.28.22 , — это IP-адрес и порт источника. Далее следуют IP-адрес и порт назначения (разделенные точкой), представленные как 192.168.64.1.41916 .
- После источника и назначения вы можете найти флаги TCP Flags [P.] . Типичные значения для этого поля включают в себя:
- [.] — ACK (Acknowledgment)
- [S] — SYN (Start Connection)
- [P] — PSH (Push Data)
- [F] — FIN (Finish Connection)
- [R] — RST (Reset Connection)
- [S.] — SYN-ACK (SynAcK Packet)
- Далее идет порядковый номер данных, содержащихся в пакете. Для первого захваченного пакета это абсолютное число. Последующие пакеты используют относительное число, чтобы упростить отслеживание. В этом примере последовательность seq 196:568 , что означает, что этот пакет содержит байты с 196 по 568 этого потока.
- За этим следует номер подтверждения: ack 1 . В данном случае это 1, поскольку сторона отправляет данные. Для стороны, получающей данные, это поле представляет следующий ожидаемый байт (данные) в этом потоке. Например, номер Ack для следующего пакета в этом потоке будет 568.
- Следующее поле — это размер окна win 309 , который представляет количество байтов, доступных в приемном буфере, за которыми следуют такие параметры TCP, как MSS (максимальный размер сегмента — Maximum Segment Size) или масштаб окна. nop — заполнение, используемое для того, чтобы сделать заголовок TCP кратным 4 байтам. TS val — это временная метка TCP. ecr — обозначает эхо-ответ.
- Наконец, у нас есть длина пакета, length 372 , которая представляет длину в байтах данных полезной нагрузки. Длина — это разница между последним и первым байтами порядкового номера.
Теперь давайте узнаем, как фильтровать пакеты, чтобы сузить результаты и упростить устранение конкретных проблем.
Фильтрация пакетов
Как упоминалось выше, tcpdump может перехватывать слишком много пакетов, некоторые из которых даже не связаны с проблемой, которую вы устраняете. Например, если вы устраняете проблему с подключением к веб-серверу, вас не интересует трафик SSH, поэтому удаление пакетов SSH из выходных данных облегчает работу с реальной проблемой.
Одной из самых мощных функций tcpdump является его способность фильтровать захваченные пакеты с использованием различных параметров, таких как IP-адреса источника и назначения, порты, протоколы и так далее. Давайте рассмотрим некоторые из наиболее распространенных.
Протокол
Для фильтрации пакетов на основе протокола, указав протокол в командной строке. Например, перехватывайте ICMP-пакеты только с помощью этой команды:
В другом терминале попробуйте пропинговать другой компьютер:
Вернувшись в захват tcpdump, обратите внимание, что tcpdump захватывает и отображает только пакеты, связанные с ICMP. В этом случае tcpdump не отображает пакеты разрешения имен, которые были сгенерированы при разрешении имени wiki.merionet.ru:
Либо, если вы знаете идентификатор протокола, то вы можете использовать фильтр proto . Например, для OSFP пакетов:
Ограничьте захват только пакетами, относящимися к определенному хосту, используя фильтр host :
В этом примере tcpdump захватывает и отображает только пакеты с хоста 54.204.39.132 и на него.
Также можно фильтровать не только по одному хосту, но и по целым подсетям. Для этого нужно использовать фильтр net . Например, чтобы вывести только пакеты, относящиеся только к 192.168.1.0/24, нужно использовать:
Для фильтрации пакетов на основе желаемой услуги или порта используйте фильтр port . Например, перехватите пакеты, относящиеся к веб-службе HTTP c 80 порта, с помощью этой команды:
Чтобы захватывать траффик с диапазона портов используйте фильтр portrange , после которого через дефис укажите желаемый диапазон:
IP адрес или имя хоста отправителя или получателя
Вы также можете фильтровать пакеты на основе IP-адреса источника или назначения или имени хоста при помощи фильтра src , после которого нужно указать адрес отправителя. Например, для захвата пакетов с хоста 192.168.122.98:
Обратите внимание, что tcpdump захватывает пакеты с исходящим IP-адресом 192.168.122.98 для нескольких служб, таких как разрешение имен (порт 53) и HTTP (порт 80). Пакеты ответов не отображаются, так как их исходный IP адрес у них отличается.
И наоборот, вы можете использовать фильтр dst для фильтрации по IP-адресу или имени хоста:
Сложные выражения
Вы также можете комбинировать фильтры с помощью логических операторов and , or и not для создания более сложных выражений. Например, чтобы отфильтровать пакеты с IP-адреса источника 192.168.122.98 и только служебного HTTP, используйте эту команду:
Вы можете создавать более сложные выражения, группируя фильтр с круглыми скобками. В этом случае заключите все выражение фильтра в кавычки, чтобы оболочка не перепутала их с выражениями оболочки:
В этом примере мы фильтруем пакеты только для службы HTTP (порт 80) и исходящих IP-адресов 192.168.122.98 или 54.204.39.132. Это быстрый способ изучения обеих сторон одного и того же потока.
Проверка содержимого пакета
В предыдущих примерах мы проверяли только заголовки пакетов на наличие информации, такой как источник, адресаты, порты и так далее. Иногда это все, что нам нужно для устранения проблем с сетевым подключением. Однако иногда нам необходимо проверить содержимое пакета, чтобы убедиться, что в отправляемом сообщении содержится то, что нам нужно, или что мы получили ожидаемый ответ. Чтобы увидеть содержимое пакета, tcpdump предоставляет два дополнительных флага: -X для печати содержимого в шестнадцатеричном формате (HEX) и -A для печати содержимого в ASCII.
Например, проверьте HTTP-содержимое веб-запроса следующим образом:
Это полезно для устранения проблем с вызовами API, при условии, что вызовы используют простой HTTP. Для зашифрованных соединений этот вывод менее полезен.
Сохранение файл
Другая полезная функция, предоставляемая tcpdump, — это возможность сохранять захват в файл, чтобы вы могли проанализировать результаты позже. Это позволяет вам захватывать пакеты в пакетном режиме, например, ночью и проверять результаты утром. Это также помогает, когда слишком много пакетов для анализа, поскольку захват в реальном времени может происходить слишком быстро.
Чтобы сохранить пакеты в файл, а не отображать их на экране, используйте параметр -w :
Эта команда сохраняет выходные данные в файле с именем webserver.pcap . Расширение .pcap расшифровывается как «packet capture» и является соглашением для этого формата файла.
Как показано в этом примере, на экране ничего не отображается, и захват завершается после захвата 10 пакетов, согласно опции -c10 . Если вы хотите получить обратную связь, чтобы гарантировать захват пакетов, используйте опцию -v .
Tcpdump создает файл в двоичном формате, поэтому вы не можете просто открыть его в текстовом редакторе. Чтобы прочитать содержимое файла, выполните tcpdump с опцией -r :
Поскольку вы больше не захватываете пакеты непосредственно из сетевого интерфейса, sudo не требуется для чтения файла.
Вы также можете использовать любой из фильтров, которые мы обсуждали, чтобы отфильтровать содержимое из файла, так же, как и с данными в реальном времени. Например, проверьте пакеты в файле захвата с исходящего IP-адреса 54.204.39.132, выполнив эту команду:
Если вы хотите запустить tcpdump в фоновом режиме, добавьте & в конце команды.
Заключение
Эти основные функции tcpdump помогут вам начать работу с этим мощным и универсальным инструментом. Чтобы узнать больше, посетите веб-сайт tcpdump и справочные страницы.
Интерфейс командной строки tcpdump обеспечивает большую гибкость для захвата и анализа сетевого трафика. Если вам нужен графический инструмент для понимания более сложных потоков, посмотрите на Wireshark.
Одним из преимуществ Wireshark является то, что он может читать файлы .pcap, захваченные tcpdump. Вы можете использовать tcpdump для захвата пакетов на удаленной машине, у которой нет графического интерфейса пользователя, и проанализировать файл результатов с помощью Wireshark.
tcpdump
Утилита tcpdump относится к числу так называемых «снифферов» — программ предназначенных для перехвата сетевого трафика. Одним словом, tcpdump предназначен для подслушивания. Разработан Группой сетевых исследований (Network Reseach Group, NRG) Отдела информационных и вычислительных технологий (Information and Computing Sciences Division, ICSD) в Национальной лаборатории Лоренс Беркли (Lawrence Berkeley National Laboratory, LBNL).
tcpdump не единственный Сетевые анализаторы снифферы, которым может пользоваться администратор. Кроме tcpdump можно обратить внимание на такие программы, как:
tcpdump работает при помощи интерфейса bpf (Berkeley Packet Filter). Если поддержку этого устройства отключить, сниффинг в BSD окажется невозможен. Права на запуск программы tcpdump определяются правами доступа к устройсву bpf (/dev/bpf0). Эти права можно регулировать через devfs. Если вы предоставляете, например, группе operator права на чтение из этого устройства, то это значит, что все члены этой группы смогут перехватывать любой трафик, в том числе трафик суперпользователя.
Если программа tcpdump вызвана для прослушивания некоторого интерфейса, она переводит его в «promiscuous mode» — «неразборчивый режим». В этом режиме интерфейс ловит вообще все пакеты, которые до него добрались, а не только пакеты адресованные непосредственно ему. Таким образом, если сеть собрана не на коммураторах (switch), а на репитерах (hub), то tcpdump позволит перехватить трафик между посторонними машинами, т.е. подслушать разговор двух сторонних машин. Сказанное не означает, что перехват трафика невозможен в сети собранной на коммутаторах. Впрочем, интерфейс можно и не переводить в promiscous mode, если передать программе аргумент -p.
tcpdump для VoIP SIP H.323
Анализирует траффик удаленно через SSH с помощью Wireshark
UDP трафик с и на IP xxx.xxx.xxx.251 destined for port 5060:
Записать в файл mbill251 весь трафик с хоста xxx.xxx.xxx.251 за исключением трафика ssh
Прослушать порт 5060 с ip xxx.xxx.xxx.251
H.323 сигналинг ловим с двух IP. В таком виде с двух IP отказалось снимать, может быть OR нужно было поставить.
tcpdump Packet Filter Firewall (PF)
Примеры использования tcpdump
перечислить доступные интерфейсы (которые можно прослушивать при помощи опции -i)
посмотреть трафик одного хоста:
посмотреть трафик на порте:
посмотреть IP трафик на хост:
посмотреть ARP трафик на хост:
посмотреть RARP трафик на хост:
посмотреть трафик, кроме хоста unixserver:
посмотреть трафик на server1 и server2
посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru
подсмотреть номера и пароли к icq
посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru, при этом прочитать из каждого пакета по 1500 байт и не преобразовывать IP в имя хоста
Примеры использования tcpdump AND OR EXCEPT
TCP traffic from 10.5.2.3 destined for port 3389:
Traffic originating from the 192.168 network headed for the 10 or 172.16 networks:
Non-ICMP traffic destined for 192.168.0.2 from the 172.16 network:
Проблема +arplookup 0.0.0.0 failed: host is not on local network
Лечение: запускаем команду и ищем MAC c ошибкой
arpdig – dig an interface for arp responses. Выводит соответствие между IP и MAC. Пример использования:
gratuitous arp — самообращенные запросы. При таком запросе инициатор формирует пакет, где в качестве IP используется его собственный адрес.
Wireshark: Packet size limited during capture
Файлы tcpdump совместимы с Wireshark. Запуская ее с параметром -w filename, мы получаем файл, содержащий нужный нам сетевой трафик. К сожалению, по умолчанию в tcpdump каждый пакет ограничивается 96ю байтами (которых, как правило, достаточно для анализа любых пакетов). Однако если нужно залезть глубже и смотреть всё содержимое пакетов, нужно использовать команду -s size (где size — размер пакетов, которые нужно ловить). Для обычного ethernet’а размер пакетов равен 1500, для «разогнанного» гигабитного etherneta — порой до 65к.
Итого, имеем следующую команду:
И используем ее для того, чтобы можно было создать полный дамп сетевого трафика, который можно смотреть в Wireshark без сообщений вида Packet size limited during capture
tcpdump использование в Windows 10
Утилиту tcpdump можно использовать не только в Linux, но Windows.
TCPDUMP для Windows является клоном TCPDUMP, наиболее используемого сетевого анализатора / анализатора для UNIX, скомпилированного с исходным кодом tcpdump (tcpdump.org) и пакетом SDK от Microolap Packet Sniffer (без libpcap / WinPcap).
Клон TCPDUMP для Windows можно скачать на microolap.com
Ссылки
Онлайн школа английского языка
Английский по скайпу от 680р за урок, без заучивания правил. Эффективно! Удобно! Выгодно! Начните обучение прямо сейчас.
Крупнейшая в Европе школа английского языка.
Промокоды, акции и подарки, чтобы Ваше обучение было не только интересным, но и выгодным. Закажите пробный урок уже сейчас!
Школа английского языка по Skype
Персональные занятия по разумным ценам. Бесплатные ресурсы для студентов: разговорные клубы, блог, вебинары, книги, тест на определение уровня английского. Пробный урок бесплатно!