Мониторинг сети Linux

LinuxBeginner
Практиковаться сейчас

Введение

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

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

По завершении этого практического занятия вы сможете эффективно использовать netstat для получения информации о сетевых активностях в системе Linux, что представляет собой ценный навык для любого системного администратора или ИТ-специалиста.

Понимание сетевых соединений с помощью netstat

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

Сначала перейдем в директорию проекта, где будем работать:

cd /home/labex/project

Что такое netstat?

Команда netstat (сокращение от network statistics, т.е. сетевые статистики) отображает различную информацию, связанную с сетью, такую как сетевые соединения, таблицы маршрутизации, статистика интерфейсов и т.д. Это ценный инструмент для понимания сетевой активности вашей системы.

Просмотр активных соединений

Запустим команду netstat с определенными параметрами, чтобы отобразить активные TCP-соединения:

netstat -nat > connections.txt

В этой команде:

  • -n отображает адреса и номера портов в числовой форме, а не преобразует их в имена хостов или имена сервисов
  • -a показывает все сокеты (как прослушивающие, так и не прослушивающие)
  • -t отображает только TCP-соединения
  • > connections.txt перенаправляет вывод в файл с именем connections.txt

Теперь посмотрим на содержимое созданного файла:

cat connections.txt

Вывод должен выглядеть примерно так:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

Понимание вывода

  • Proto: Используемый протокол (в данном случае TCP)
  • Recv-Q: Количество байтов, которые не были скопированы пользовательской программой, подключенной к этому сокету
  • Send-Q: Количество байтов, которые не были подтверждены удаленным хостом
  • Local Address: Адрес и номер порта локального конца сокета
  • Foreign Address: Адрес и номер порта удаленного конца сокета
  • State: Состояние сокета (LISTEN, ESTABLISHED и т.д.)

Состояние LISTEN означает, что сервис запущен и ожидает входящих соединений на определенном порту.

Мониторинг слушающих сервисов

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

Определение прослушивающих сервисов

Используем команду netstat для поиска сервисов, находящихся в состоянии LISTEN:

netstat -natu | grep LISTEN > listening_services.txt

В этой команде:

  • -n отображает адреса в числовой форме
  • -a показывает все сокеты
  • -t включает TCP-соединения
  • -u включает UDP-соединения
  • | grep LISTEN фильтрует вывод, показывая только строки, содержащие "LISTEN"
  • > listening_services.txt сохраняет вывод в файл

Теперь посмотрим на содержимое файла:

cat listening_services.txt

Вы должны увидеть вывод, похожий на следующий:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

Понимание прослушивающих сервисов

Каждая строка в выводе представляет собой сервис, который в данный момент принимает входящие соединения:

  • Сервисы, прослушивающие на 0.0.0.0, принимают соединения с любого сетевого интерфейса
  • Сервисы, прослушивающие на 127.0.0.1, принимают соединения только с локальной машины
  • Сервисы, прослушивающие на :::, используют IPv6-адреса и принимают соединения с любого сетевого интерфейса

Номера портов (например, 22 для SSH или 631 для сервиса печати CUPS) позволяют определить, какой именно сервис ожидает входящих соединений. Например:

  • Порт 22: Сервис SSH
  • Порт 80: Сервис HTTP (веб-сервер)
  • Порт 443: Сервис HTTPS
  • Порт 631: Сервис печати CUPS

Эта информация помогает понять, какие сервисы доступны на вашей системе, что является ценным для оценки безопасности и диагностики проблем.

Анализ статистики сетевых интерфейсов

На этом этапе вы научитесь просматривать статистику для своих сетевых интерфейсов. Эта статистика предоставляет ценную информацию о производительности и использовании ваших сетевых интерфейсов.

Просмотр статистики интерфейсов

Используем команду netstat для отображения статистики всех сетевых интерфейсов:

netstat -i > interface_stats.txt

В этой команде:

  • -i отображает таблицу всех сетевых интерфейсов
  • > interface_stats.txt сохраняет вывод в файл

Теперь посмотрим на содержимое файла:

cat interface_stats.txt

Вы должны увидеть вывод, похожий на следующий:

Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0      1500   123456      0      0 0        98765      0      0      0 BMRU
lo       65536     789      0      0 0          789      0      0      0 LRU

Понимание статистики сетевых интерфейсов

Вывод предоставляет важную статистику для каждого сетевого интерфейса:

  • Iface: Имя сетевого интерфейса

    • eth0: Как правило, первый Ethernet-интерфейс
    • lo: Цифровой интерфейс петли обратной связи (loopback interface), используемый для локальных соединений
  • MTU: Максимальная передаваемая единица (Maximum Transmission Unit) - максимальный размер пакета, который может быть передан

    • Стандартный Ethernet обычно использует 1500 байт
    • Цифровой интерфейс петли обратной связи обычно имеет больший MTU (65536)
  • RX-OK: Количество пакетов, полученных без ошибок

  • RX-ERR: Количество пакетов, полученных с ошибками

  • RX-DRP: Количество полученных пакетов, которые были отброшены

  • RX-OVR: Количество переполнений при приеме пакетов

  • TX-OK: Количество пакетов, переданных без ошибок

  • TX-ERR: Количество пакетов, переданных с ошибками

  • TX-DRP: Количество переданных пакетов, которые были отброшены

  • TX-OVR: Количество переполнений при передаче пакетов

  • Flg: Флаги, указывающие на статус интерфейса

    • B: Установлен широковещательный адрес (Broadcast address set)
    • M: Включено мультикастное соединение (Multicast enabled)
    • R: Интерфейс работает (Interface is running)
    • U: Интерфейс активен (Interface is up)

Эта статистика помогает вам отслеживать производительность сети и выявлять возможные проблемы, такие как потеря пакетов или ошибки передачи.

Дополнительные команды для просмотра сетевой статистики

Для более полного представления о сетевой статистике вы также можете использовать:

netstat -s | head -20 > protocol_stats.txt

Эта команда отображает статистику протоколов для TCP, UDP, IP, ICMP и других протоколов. Мы используем head -20, чтобы ограничить вывод первыми 20 строками для удобства чтения.

Посмотрим на этот файл:

cat protocol_stats.txt

Это предоставляет подробную статистику о том, как работает каждый протокол, и помогает выявить возможные сетевые проблемы на уровне протокола.

Резюме

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

  1. Просмотр активных сетевых соединений для понимания, какие соединения установлены в вашей системе.

  2. Определение прослушивающих сервисов для определения, какие порты открыты и потенциально доступны в сети.

  3. Анализ статистики сетевых интерфейсов для мониторинга производительности и работоспособности ваших сетевых интерфейсов.

Эти навыки являются обязательными для системных администраторов, сетевых инженеров и профессионалов в области безопасности, которые должны понимать и решать проблемы, связанные с сетью. Команда netstat предоставляет ценную информацию о сетевой активности вашей системы, помогает поддерживать оптимальную производительность и безопасность.

Хотя на многих современных дистрибутивах Linux команда netstat считается устаревшей и заменяется такими инструментами, как ss и ip, понимание работы netstat дает прочную основу для концепций сетевого мониторинга, которые применимы для всех этих инструментов.