Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Утилиты с интерфейсом командной строки для мониторинга сетевого трафика в Linux

Оригинал: What are useful command-line network monitors on Linux
Автор: Dan Nanni
Дата публикации: 9 января 2015 г.
Перевод: А.Панин
Дата перевода: 14 августа 2016 г.

Мониторинг сетевого трафика является важной процедурой, выполняемой IT-отделами организаций любых размеров. Например, данная процедура может быть частью комплекса мер по долгосрочному резервированию ресурсов сети, защите сети, выявлению проблем, связанных с производительностью сети, оценке использования ресурсов сети и так далее. В зависимости от цели исследования, мониторинг сетевого трафика может осуществляться различными способами, например, путем сниффинга сетевых пакетов, сбора низкоуровневой статистики, активной инъекции пакетов в сеть, разбора файлов журнала сервера и так далее.

Хотя и существует множество систем для мониторинга сетевого трафика в режиме 24/7/365, вы можете воспользоваться инструментами командной строки в тех ситуациях, когда такие системы являются попросту избыточными. Если вы являетесь системным администратором, у вас уже должен быть опыт работы с наиболее известными утилитами для мониторинга сетевого трафика с интерфейсом командной строки. Ниже приведен список наиболее известных и полезных утилит данного типа, предназначенных для использования в Linux.

Сниффинг сетевых пакетов

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

1. dhcpdump: сниффер DHCP-трафика с интерфейсом командной строки, позволяющий захватывать запросы, поступающие к серверу DHCP и его ответы, а также выводящий в понятном человеку формате содержимое разобранных сообщений протокола DHCP. Данный инструмент будет полезен в том случае, если возникнет необходимость в диагностике сервера DHCP.

2. dsniff: набор инструментов с интерфейсом командной строки, предназначенных для осуществления сниффинга, спуфинга и похищения данных аутентификации в ходе аудита безопасности сетей и проверки возможности вторжения в них. Данные инструменты могут захватывать различные данные, такие, как пароли, трафик NFS, сообщения электронной почты, строки URL посещаемых веб-сайтов и так далее.

3. httpry: сниффер пакетов HTTP, осуществляющий захват и декодирование HTTP-запросов и ответов на них с последующим выводом в понятном человеку формате.

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

IPTraf

5. mysql-sniffer: сниффер сетевых пакетов, осуществляющий захват и декодирование пакетов, связанных с запросами к базе данных MySQL. Он выводит информацию о наиболее часто выполняемых или обо всех выполняемых запросах в понятном человеку формате.

6. ngrep: вариант утилиты grep для сетевых пакетов. Данная утилита может захватывать сетевые пакеты в реальном времени и осуществлять поиск их соответствий (фильтрацию) с регулярными выражениями или выражениями в шестнадцатеричном формате. Она может быть полезной для выявления и сохранения с целью дальнейшего анализа аномального трафика или захвата определенных последовательностей данных из сетевого трафика.

7. p0f: пассивный инструмент идентификации, осуществляющий захват сетевых пакетов и надежную идентификацию операционных систем, параметров NAT- или прокси-серверов, типов сетей и многих других параметров, ассоциированных с активными TCP- соединениями.

8. pktstat: инструмент с интерфейсом командной строки, осуществляющий анализ передающихся по сети пакетов и выводящий информацию об использовании пропускной способности соединений с описаниями используемых протоколов (такими, как HTTP, GET/POST, FTP, X11).

pktstat

9. Snort: инструмент для обнаружения и предотвращения вторжений, позволяющий установить наличие и воспрепятствовать работе различных бэкдоров, ботнетов, фишинговых ресурсов и шпионского программного обеспечения путем анализа протоколов и идентификации передаваемых по сети данных на основе набора правил.

10. tcpdump: сниффер сетевых пакетов с интерфейсом командной строки, осуществляющий захват передаваемых по сети пакетов в соответствии с выражениями фильтрации, разбор захваченных пакетов и сохранение данных этих пакетов для последующего анализа. Он широко используется в ходе различных мероприятий, связанных с диагностикой сетей и сетевых приложений, а также с аудитом безопасности сетей.

11. tshark: инструмент для захвата сетевых пакетов с интерфейсом командной строки из комплекта поставки приложения Wireshark с графическим интерфейсом. Он может захватывать и декодировать пакеты в процессе работы сети и выводить содержимое этих пакетов в понятном человеку формате.

Мониторинг сетевого трафика на уровне потоков, процессов и сетевых интерфейсов

К данной категории относятся инструменты, которые классифицируют сетевой трафик по потокам, ассоциированным процессам или сетевым интерфейсам и собирают статистические данные относительно трафика переданного в рамках отдельных потоков, процессов и сетевых интерфейсов. Источником информации может являться как библиотека для захвата сетевых пакетов libpcap, так и виртуальная файловая система ядра Linux под названием sysfs. Эти инструменты тратят немного системных ресурсов, но обычно не могут осуществлять инспекцию содержимого сетевых пакетов.

12. bmon: инструмент с интерфейсом командной строки для мониторинга показателей использования пропускной способности сети, выводящий информацию о трафике, который был передан через сетевые интерфейсы, включающюю не только статистику принятых и переданных данных, но и историю использования ресурсов сети.

bmon

13. iftop: инструмент для мониторинга показателей использования пропускной способности сети отдельными сетевыми соединениями в реальном времени. Он имеет псевдографичекий интерфейс на основе библиотеки ncurses, позволяющий визуализировать показатели использования пропускной способности сети каждым из соединений с последующей сортировкой. Данный инструмент может быть полезен для выявления соединений, на обслуживание которых тратится большая часть пропускной способности сети.

14. nethogs: инструмент для мониторинга состояния процессов, выводящий с помощью псевдографического интерфейса на основе библиотеки ncurses в реальном времени информацию об использовании процессами или программами ресурсов сети для передачи и приема данных. Данный инструмент может пригодиться в том случае, если потребуется выявить процесс, наиболее интенсивно использующий пропускную способность сети.

15. netstat: инструмент с интерфейсом командной строки, выводящий различную статистическую информацию и информацию о параметрах сетевого стека, такую, как параметры открытых соединений по протоколам TCP/UDP, количество принятых и переданных байт, таблицы маршрутизации и статистика использования протоколов/сокетов. Данный инструмент может оказаться полезным в процессе выявления проблем, связанных с производительностью и использованием ресурсов сетевого стека.

16. speedometer: консольный инструмент для мониторинга сетевого трафика, визуализирующий историю использования пропускных способностей сетей на уровне соответствующих сетевых интерфейсов в формате столбцовых диаграмм, созданных средствами библиотеки ncurses.

speedometer

17. sysdig: сложный системный отладочный инструментарий с унифицированным интерфейсом для исследования состояния различных подсистем Linux. Его модуль для мониторинга сетевой активности позволяет отслеживать статистические показатели использования ресурсов сети на уровне отдельных процессов и узлов, такие, как процент использования пропускной способности сети, количество соединений/запросов и так далее.

18. tcptrack: инструмент для мониторинга состояния сетевых соединений по протоколу TCP, выводящий информацию об активных TCP-соединениях, включающую IP-адреса и номера портов источника и целевого узла соединения, идентификатор состояния соединения, а также скорость передачи данных в рамках него.

tcptrack

19. vnStat: инструмент с интерфейсом командной строки для мониторинга сетевого трафика, ведущий учет всех отправленных и принятых данных (в текущий момент, за день, месяц) для каждого из сетевых интерфейсов. Работая в фоновом режиме, он собирает и хранит статистические данные о скоростях соединений и общем количестве переданных байт.

Активный мониторинг сетей

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

20. dnsyo: инструмент для мониторинга трафика серверов DNS, позволяющий выполнить разрешение имени узла с помощью открытых DNS-серверов из более чем 1500 различных сетей. Он может оказаться полезным в том случае, если вам понадобится проверить корректность распространения данных между серверами DNS или найти ошибку в конфигурации сервера DNS.

21. iperf: утилита для измерения пропускной способности соединений по протоколам TCP/UDP, которая может измерять максимальную пропускную способность участка сети между двумя контрольными точками. Для измерения пропускной способности на узлах осуществляется отправка данных по протоколу TCP/UDP либо в одну, либо в сразу же в обе стороны. Данная утилита полезна для тестирования емкости сети или настройки параметров сетевого стека. Также существует вариант утилиты под названием netperf, имеющий большее количество возможностей и собирающий большее количество статистических данных.

22. netcat/socat: многофункциональные инструменты для отладки сетевых приложений, позволяющие осуществлять чтение, запись или ожидание соединений на TCP- и UDP-сокетах. Чаще всего они используются вместе с другими программами или сценариями для осуществления непосредственной передачи данных по сети или для ожидания соединений с заданными портами.

23. nmap: инструмент для сканирования портов и исследования сетей с интерфейсом командной строки. Он использует множество техник сканирования для выявления открытых TCP- и UDP-портов, функционирующих узлов и операционных систем, установленных на этих узлах в локальной сети. Данный инструмент может оказаться полезным в процессе аудита безопасности узлов локальной сети или построения карты локальной сети для упрощения ее обслуживания. zmap является альтернативным инструментом с похожими функциями, позволяющим сканировать даже узлы из сети Интернет.

24. ping: инструмент для тестирования сети, осуществляющий отправку эхо-запросов по протоколу ICMP заданному удаленному узлу и обрабатывающий ответы на них. Он может оказаться полезным при необходимости измерения времени обращения (RTT) и процентного показателя потерь сетевых пакетов при передаче данных по заданному маршруту, а также проверки корректности правил межсетевого экрана или конфигурации удаленной системы. Также существуют вариации утилиты ping с более удобным интерфейсом (такие, как noping), с поддержкой нескольких протоколов (такие, как hping), а также поддержкой параллельного режима (такие, как fping).

ping

25. sprobe: инструмент с интерфейсом командной строки, использующий эвристические методы для выявления предела пропускной способности сетевого соединения между локальным узлом и любым произвольным узлом сети с заданным IP-адресом. Он использует модифицированный механизм трехэтапного рукопожатия, который позволяет оценить пропускную способность сетевого соединения. Данный инструмент может оказаться полезным в процессе поиска проблем производительности и маршрутизации в глобальной сети.

26. traceroute: инструмент для исследования сети, раскрывающий путь следования сетевых пакетов на уровне 3 OSI от локального узла до удаленного узла с заданным адресом. Он осуществляет отправку тестовых сетевых пакетов с установленным ограничением временем жизни и собирает сообщения об их уничтожении от промежуточных маршрутизаторов, отправляемые по протоколу ICMP. Данный инструмент может оказаться полезным в том случае, если требуется найти причину замедления передачи данных по сети или выявить проблемы маршрутизации. Также существуют вариации traceroute с улучшенным механизмом сбора статистики времени обращения пакетов (такие, как mtr).

traceroute

Разбор содержимого журналов серверных приложений

К данной категории отнесены инструменты для мониторинга сетевого трафика, предназначенные для работы совместно с определенным серверным приложением (например, веб-сервером или сервером базы данных). Сетевой трафик, генерируемый или обрабатываемый серверным приложением, отслеживается путем анализа файла журнала этого приложения. В отличие от рассмотренных выше инструментов, работающих непосредственно с сетью, инструменты из данной категории осуществляют анализ и мониторинг сетевого трафика лишь на уровне приложения, формирующего журнал.

27. GoAccess: интерактивная утилита с интерфейсом командной строки, отображающая информацию о трафике веб-серверов Apache и Nginx. На основе информации из журнала доступа к ресурсам веб-сервера, данная утилита выводит в реальном времени информацию о ежедневном количестве посещений ресурса, наиболее популярных запросах, операционных системах, а также странах и веб-браузерах клиентов в рамках длинного списка с возможностью прокрутки.

GoAccess

28. mtop: инструмент с интерфейсом командной строки, предназначенный для мониторинга работы сервера базы данных MySQL/MariaDB, выводящий информацию о наиболее ресурсоемких запросах и текущей нагрузке на сервер базы данных. Он полезен в том случае, если нужно оптимизировать производительность сервера базы данных MySQL и подобрать его оптимальную конфигурацию.

mtop

29. nginxtop: инструмент для мониторинга сетевого трафика, работающий с веб-серверами Nginx и Apache и визуализирующий выводимую информацию по аналогии с утилитой top. Он осуществляет разбор файла журнала доступа к ресурсам веб-сервера и собирает статистику для отдельных узлов и запросов.

Заключение

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

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

Об инструментах мониторинга сетевого трафика вы можете почитать также в следующих статьях: