как посмотреть текущие tcp соединения linux

14 примеров команды ss для мониторинга сетевых подключений

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

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

1. Перечисление всех соединений

Базовая команда ss без каких-либо опций просто выводит список всех соединений независимо от состояния, в котором они находятся.

Если ни одна из опций не используется, ss отображает список открытых не слушающих сокетов (например, TCP/UNIX/UDP), которые установили соединение.

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

2. Список слушающих и не слушающих портов

Вы можете получить список как слушающих, так и не слушающих портов, используя опцию -a, как показано ниже.

3. Список прослушивающих сокетов

Чтобы отобразить только сокеты прослушивания, используйте флаг -l:

4. Список всех TCP соединений

Чтобы отобразить все соединения TCP, используйте параметр -t:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

5. Список всех слушающих TCP соединения

Для просмотра всех слушающих TCP-сокетов используйте комбинацию -lt:

6. Список всех UDP соединений

Для просмотра всех сокетов с UDP соединениями используйте параметр -ua:

7. Список всех слушающих UDP соединений

Для просмотра списка подключений UDP используйте параметр -lu.

8. Отображение у сокетов PID (идентификаторов процессов)

Для отображения идентификаторов процессов, связанных с соединениями сокетов, используйте флаг -p:

9. Показать сводную статистику

Чтобы вывести сводную статистику, используйте опцию -s.

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

10. Показать сокеты IPv4 и IPv6

Если вам интересны соединения через сокет IPv4, используйте опцию -4.

Чтобы отобразить соединения IPv6, используйте параметр -6.

11. Фильтр соединений по номеру порта

Команда ss также позволяет фильтровать номер порта сокета или номер адреса. Например, для отображения всех соединений сокетов с портом назначения или исходным портом ssh выполните команду.

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

12. Вывод номеров портов в числовом формате, а не имени в ss

По умолчанию команда ss показывает имена портов, чтобы выводились порты в виде чисел, используйте опцию -n:

13. Поиск открытых портов на Linux

Следующая команда покажет все прослушиваемые порты для TCP и UDP соединений в виде цифровых значений:

14. Поиск программ, которые прослушивают порты на Linux

Если добавить ключ -p, то программа дополнительно покажет процессы, использующие сокет:

Источник

Мониторинг сетевого стека linux

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linuxЧасто мониторинг сетевой подсистемы операционной системы заканчивается на счетчиках пакетов, октетов и ошибок сетевых интерфейсах. Но это только 2й уровень модели OSI!
С одной стороны большинство проблем с сетью возникают как раз на физическом и канальном уровнях, но с другой стороны приложения, работающие с сетью оперируют на уровне TCP сессий и не видят, что происходит на более низких уровнях.

Я расскажу, как достаточно простые метрики TCP/IP стека могут помочь разобраться с различными проблемами в распределенных системах.

Netlink

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

Есть более дешевый способ получить информацию о соединениях — утилита ss из проекта iproute2.

Ускорение достигается за счет использования протола netlink для запросов информации о соединениях у ядра. Наш агент использует netlink напрямую.

Считаем соединения

Disclaimer: для иллюстрации работы с метриками в разных срезах я буду показывать наш интерфейс (dsl) работы с метриками, но это можно сделать и на opensource хранилищах.

В первую очередь мы разделяем все соединения на входящие (inbound) и исходящие (outbound) по отношению к серверу.

Каждое TCP соединения в определенный момент времени находится в одном из состояний, разбивку по которым мы тоже сохраняем (это иногда может оказаться полезным):

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

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

Здесь так же видно резкое падение общего количества соединений незадолго до 11 Jun, попробуем посмотреть на соединения в разрезе listen портов:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

На этом графике видно, что самое значительное падение было на порту 8014, посмотрим только 8014 (у нас в интерфейсе можно просто нажать на нужном элементе легенды):

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Попробуем посмотреть, изменилось ли количество входящий соединений по всем серверам?

Выбираем серверы по маске “srv10*”:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Теперь мы видим, что количество соединений на порт 8014 не изменилось, попробуем найти на какой сервер они мигрировали:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Мы ограничили выборку только портом 8014 и сделали группировку не по порту, а по серверам.

Теперь понятно, что соединения с сервера srv101 перешли на srv102.

Разбивка по IP

Часто бывает необходимо посмотреть, сколько было соединений с различных IP адресов. Наш агент снимает количество TCP соединений не только с разбивкой по listen портам и состояниям, но и по удаленному IP, если данный IP находится в том же сегменте сети (для всех остальный адресов метрики суммируются и вместо IP мы показываем “

Рассмотрим тот же период времени, что и в предыдущих случаях:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Здесь видно, что соединений с 192.168.100.1 стало сильно меньше и в это же время появились соединения с 192.168.100.2.

Детализация рулит

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

Например, у одно из клиентов на нагруженном сервере-фронтенде снимается

700 экземпляров этой метрики

TCP backlog

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

Например, если какой-то сервис, обслуживающий клиентов по сети, не справляется с нагрузкой и перестает обрабатывать новые соединения, они ставятся в очередь (backlog).

На самом деле очереди две:

При достижении лимита accept queue ACK пакет удаленного хоста просто отбрасывается или отправляется RST (в зависимости от значения переменной sysctl net.ipv4.tcp_abort_on_overflow).

Наш агент снимает текущее и максимальное значение accept queue для всех listen сокетов на сервере.

Для этих метрик есть график и преднастроенный триггер, который уведомит, если backlog любого сервиса использован более чем на 90%:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Счетчики и ошибки протоколов

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

В данный момент однозначного ответа на этот вопрос окметр дать по-прежнему не может, так как сниффинг мы только начали осваивать, но мы немного продвинулись в этом вопросе.

Попробуем что-то понять про эти выбросы входящего трафика:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Теперь мы видим, что это входящий UDP трафик, но здесь не видно первых из трех выбросов.
Дело в том, что счетчики пакетов по протоколам в linux увеличиваются только в случае успешной обработки пакета.

Попробуем посмотреть на ошибки:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

А вот и наш первый пик — ошибки UDP:NoPorts (количество датаграмм, пришедших на UPD порты, которые никто не слушает)

Данный пример мы эмулировали с помощью iperf, и в первый заход не включили на сервер-приемщик пакетов на нужном порту.

TCP ретрансмиты

Отдельно мы показываем количество TCP ретрансмитов (повторных отправок TCP сегментов).

Само по себе наличие ретрансмитов не означает, что в вашей сети есть потери пакетов.
Повторная передача сегмента осуществляется, если передающий узел не получил от принимающего подтверждение (ACK) в течении определенного времени (RTO).

Данный таймаут расчитывается динамически на основе замеров времени передачи данных между конкретными хостами (RTT) для того, чтобы обеспечивать гарантированную передачу данных при сохранении минимальных задержек.

На практике количество ретрансмитов обычно коррелирует с нагрузкой на серверы и важно смотреть не на абсолютное значение, а на различные аномалии:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

На данном графике мы видим 2 выброса ретрансмитов, в это же время процессы postgres утилизировали CPU данного сервера:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Cчетчики протоколов мы получаем из /proc/net/snmp.

Conntrack

Еще одна распространенная проблема — переполнение таблицы ip_conntrack в linux (используется iptables), в этом случае linux начинает просто отбрасывать пакеты.

Это видно по сообщению в dmesg:

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

В окметре так же есть автоматический триггер, который уведомит, если таблица ip_conntrack заполнена более чем на 90%:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

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

Вместо заключения

Примеры наших стандартных графиков можно посмотреть в нашем демо-проекте.
Там же можно постмотреть графики Netstat.

Источник

Утилита ss в Linux

Иногда бывает необходимо посмотреть какие сетевые подключения Linux открыты, какие IP адреса используются или какие порты прослушиваются. Раньше для таких целей использовалась утилита netstat. Её, без сомнения, знают все системные администраторы и специалисты по безопасности. Но она больше не поставляется по умолчанию в новых дистрибутивах. Вместо неё используется новая утилита под названием ss.

Netstat сканирует директорию /proc для получения необходимой информации, но в новых версиях ядра была реализована специальная подсистема для мониторинга сети в Linux. Её и использует ss, с помощью этой утилиты вы можете получить больше информации о сетевых подключениях и работает она гораздо быстрее.

Общая информация

$ ss опции [ фильтр_состояния] [фильтр_адреса]

Для удобства вывод команды ss можно фильтровать с помощью grep:

$ ss опции | grep шаблон

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

Опции утилиты ss

Для сетевых подключений в Linux с помощью утилиты ss можно использовать такие опции:

Кроме того, можно вывести сокеты только нужного протокола:

Примеры использования

А теперь давайте рассмотрим примеры использования утилиты ss Linux. Возможно, из описания опций вы мало что поняли, но с примерами все встанет на свои места.

Мониторинг сетевых подключений

Сначала смотрим все сетевые подключения:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Посмотрим только TCP соединения:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Теперь только Unix:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

По умолчанию утилита не пытается определять имена хостов через dns, но можно ее попросить делать это опцией -r:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Обратная опция -n, не будет выполняться не только dns резолвинг, но и определение протоколов портов, зато мониторинг сети в Linux работать будет быстрее:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Теперь просмотрим только прослушиваемые tcp сокеты.

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Здесь мы видим только имена служб, это не всегда удобно, указав опцию n, мы получим номера портов. Так же само можно посмотреть прослушиваемые udp сокеты:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Также мы можем попытаться узнать название и PID процесса, использующего сокет:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

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

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

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Фильтрация по протоколу

Мы можем отображать только нужный нам протокол. Например только ipv4:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Так же само можно отобразить только соединения ipv6:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Фильтрация по состоянию соединения

В синтаксисе команды мы описали два дополнительных параметра. Фильтрация состояния и фильтрация по адресу. Рассмотрим теперь как ими пользоваться. Сокет TCP может находиться в одном из нескольких состояний. Например, так утилита ss linux выведет только подключенные сокеты.

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Или сокеты в состоянии ожидания:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

В параметр state можно передать одно из следующих значений:

Не все состояния подключений можно увидеть просто выполнив команду. Например, syn-sent и syn-recv вряд ли получиться словить, потому что соединения находятся в этом состоянии очень короткое время. Для их отображения удобно использовать команду watch:

После запуска команды откройте любой сайт в браузере. Вы увидите как появится одно или несколько соединений на несколько секунд.

Фильтрация по адресу и номеру порта

Кроме фильтрации по состоянию, tcp сокеты можно фильтровать по адресам или портам соединений.

Например, отберем все сетевые подключения linux с портом источником или приемником ssh, то есть все входящие и исходящие соединения ssh:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Или сокеты с портом назначения 80 или 443:

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

Такой синтаксис тоже будет работать:

Еще несколько примеров фильтрации:

Фильтрация по адресу:

Фильтрация по адресу и подсети:

И по адресу и порту:

Если вы хотите фильтровать сетевые соединения по порту, перед портом ставьте двоеточие:

Можно использовать такие операторы сравнения:

Выводы

Вот и всё. Основную информацию о том, как выполнять мониторинг сети в Linux с помощью утилиты ss рассмотрели. Если вам нужно больше информации и примеров смотрите документацию по утилитам набора iproute.

Источник

7 сетевых Linux-команд, о которых стоит знать системным администраторам

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

Этот материал — первый в серии статей, построенных на рекомендациях, собранных от множества знатоков Linux. А именно, я спросил у наших основных разработчиков об их любимых Linux-командах, после чего меня буквально завалили ценными сведениями. А именно, речь идёт о 46 командах, некоторые из которых отличает тот факт, что о них рассказало несколько человек.

как посмотреть текущие tcp соединения linux. Смотреть фото как посмотреть текущие tcp соединения linux. Смотреть картинку как посмотреть текущие tcp соединения linux. Картинка про как посмотреть текущие tcp соединения linux. Фото как посмотреть текущие tcp соединения linux

В данной серии статей будут представлены все эти команды, разбитые по категориям. Первые 7 команд, которым и посвящена эта статья, направлены на работу с сетью.

Команда ip

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

Синтаксис этой команды выглядит так:

Самое важное тут — это (подкоманда). Здесь можно использовать, помимо некоторых других, следующие ключевые слова:

Вывод IP-адресов, назначенных интерфейсу на сервере:

Назначение IP-адреса интерфейсу, например — enps03 :

Удаление IP-адреса из интерфейса:

Изменение статуса интерфейса, в данном случае — включение eth0 :

Изменение статуса интерфейса, в данном случае — выключение eth0 :

Изменение статуса интерфейса, в данном случае — изменение MTU eth0 :

Изменение статуса интерфейса, в данном случае — перевод eth0 в режим приёма всех сетевых пакетов:

Добавление маршрута, используемого по умолчанию (для всех адресов), через локальный шлюз 192.168.1.254, который доступен на устройстве eth0 :

Добавление маршрута к 192.168.1.0/24 через шлюз на 192.168.1.254:

Добавление маршрута к 192.168.1.0/24, который доступен на устройстве eth0 :

Удаление маршрута для 192.168.1.0/24, для доступа к которому используется шлюз 192.168.1.254:

Вывод маршрута к IP 10.10.1.4:

Команда ifconfig

Команда mtr

Синтаксис команды выглядит так:

Если вызвать эту команду, указав лишь имя или адрес хоста — она выведет сведения о каждом шаге маршрутизации. В частности — имена хостов, сведения о времени их ответа и о потерянных пакетах:

А следующий вариант команды позволяет выводить и имена, и IP-адреса хостов:

Так можно задать количество ping-пакетов, которые нужно отправить системе, маршрут к которой подвергается анализу:

А так можно получить отчёт, содержащий результаты работы mtr :

Вот — ещё один вариант получения такого отчёта:

Для того чтобы принудительно использовать TCP вместо ICMP — надо поступить так:

А вот так можно использовать UDP вместо ICMP:

Вот — вариант команды, где задаётся максимальное количество шагов маршрутизации:

Так можно настроить размер пакета:

Для вывода результатов работы mtr в формате CSV используется такая команда:

Вот — команда для вывода результатов работы mtr в формате XML:

Команда tcpdump

Утилита tcpdump предназначена для захвата и анализа пакетов.

Установить её можно так:

Прежде чем приступить к захвату пакетов, нужно узнать о том, какой интерфейс может использовать эта команда. В данном случае нужно будет применить команду sudo или иметь root-доступ к системе.

Если нужно захватить трафик с интерфейса eth0 — этот процесс можно запустить такой командой:

▍ Захват трафика, идущего к некоему хосту и от него

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

Для захвата трафика, идущего с хоста 8.8.8.8, используется такая команда:

Для захвата трафика, уходящего на хост 8.8.8.8, применяется такая команда:

▍ Захват трафика, идущего в некую сеть и из неё

Трафик можно захватывать и ориентируясь на конкретную сеть. Делается это так:

Ещё можно поступить так:

Можно, кроме того, фильтровать трафик на основе его источника или места, в которое он идёт.

Вот — пример захвата трафика, отфильтрованного по его источнику (то есть — по той сети, откуда он приходит):

Вот — захват трафика с фильтрацией по сети, в которую он направляется:

▍ Захват трафика, поступающего на некий порт и выходящего из некоего порта

Вот пример захвата трафика только для DNS-порта по умолчанию (53):

Захват трафика для заданного порта:

Захват только HTTPS-трафика:

Захват трафика для всех портов кроме 80 и 25:

Команда netstat

Если в вашей системе netstat отсутствует, установить эту программу можно так:

Ей, в основном, пользуются, вызывая без параметров:

В более сложных случаях её вызывают с параметрами, что может выглядеть так:

Можно вызывать netstat и с несколькими параметрами, перечислив их друг за другом:

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

Для вывода сведений обо всех TCP-портах применяется такой вариант команды:

Если нужны данные по UDP-портам — утилиту вызывают так:

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

Список TCP-портов, ожидающих соединений, выводится так:

Так выводят список UDP-портов, ожидающих соединений:

А так — список UNIX-портов, ожидающих соединений:

Вот — команда для вывода статистических сведений по всем портам вне зависимости от протокола:

Так выводятся статистические сведения по TCP-портам:

Для просмотра списка TCP-соединений с указанием PID/имён программ используется такая команда:

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

Команда nslookup

Команда nslookup используется для интерактивного «общения» с серверами доменных имён, находящимися в интернете. Она применяется для выполнения DNS-запросов и получения сведений о доменных именах или IP-адресах, а так же — для получения любых других специальных DNS-записей.

Рассмотрим распространённые примеры использования этой команды.

Получение A-записи домена:

Просмотр NS-записей домена:

Выяснение сведений о MX-записях, в которых указаны имена серверов, ответственных за работу с электронной почтой:

Обнаружение всех доступных DNS-записей домена:

Проверка использования конкретного DNS-сервера (в данном случае запрос производится к серверу имён ns1.nsexample.com ):

Проверка A-записи для выяснения IP-адресов домена — это распространённая практика, но иногда нужно проверить то, имеет ли IP-адрес отношение к некоему домену. Для этого нужно выполнить обратный просмотр DNS:

Команда ping

Команда ping — это инструмент, с помощью которого проверяют, на уровне IP, возможность связи одной TCP/IP-системы с другой. Делается это с использованием эхо-запросов протокола ICMP (Internet Control Message Protocol Echo Request). Программа фиксирует получение ответов на такие запросы и выводит сведения о них вместе с данными о времени их приёма-передачи. Ping — это основная команда, используемая в TCP/IP-сетях и применяемая для решения сетевых проблем, связанных с целостностью сети, с возможностью установления связи, с разрешением имён.

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

Обычно, если запустить команду ping в её простом виде, не передавая ей дополнительные параметры, Linux будет пинговать интересующий пользователя хост без ограничений по времени. Если нужно изначально ограничить количество ICMP-запросов, например — до 10, команду ping надо запустить так:

Или можно указать адрес интерфейса. В данном случае речь идёт об IP-адресе 10.233.201.45:

Применяя эту команду, можно указать и то, какую версию протокола IP использовать — v4 или v6:

В процессе работы с утилитой ping вы столкнётесь с различными результатами. В частности, это могут быть сообщения о нештатных ситуациях. Рассмотрим три таких ситуации.

▍ Destination Host Unreachable

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

▍ Request timed out

Если результат работы ping выглядит именно так — это значит, что локальная система не получила, в заданное время, эхо-ответов от целевой системы. По умолчанию используется время ожидания ответа в 1 секунду, но этот параметр можно настроить. Подобное может произойти по разным причинам. Чаще всего это — перегруженность сети, сбой ARP-запроса, отбрасывание пакетов фильтром или файрволом и прочее подобное.

▍ Unknown host/Ping Request Could Not Find Host

Такой результат может указывать на то, что неправильно введено имя хоста, или хоста с таким именем в сети просто не существует.

О хорошем качестве связи между исследуемыми системами говорит уровень потери пакетов в 0%, а так же — низкое значение времени получения ответа. При этом в каждом конкретном случае время получения ответа варьируется, так как оно зависит от разных параметров сети. В частности — от того, какая среда передачи данных используется в конкретной сети (витая пара, оптоволокно, радиоволны).

Итоги

Надеемся, вам пригодятся команды и примеры их использования, о которых мы сегодня рассказали. А если они вам и правда пригодились — возможно, вам будет интересно почитать продолжение этого материала.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *