Меню Рубрики

Linux состояние сетевого интерфейса

Отслеживание состояния сети в Linux – команда netstat

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

Синтаксис и опции netstat

-a Показывать состояние всех сокетов;
-o Показывать таймен
-i Показывает состояние сетевых интерфейсов
-n Показывать ip адрес, а не сетевое имя
-r Показать таблицы маршрутизации. При использовании с опцией -s показывает статистику маршрутизации.
-s Показать статистическую информацию по протоколам. При использовании с опцией -r показывает статистику маршрутизации.
-f семейство_адресов Ограничить показ статистики или адресов управляющих блоков только указанным семейством_адресов, в качестве которого можно указывать:inet Для семейства адресов AF_INET, или unix Для семейства адресов AF_UNIX.
-I интерфейс Показывать информацию о конкретном интерфейсе.
-p Отобразить идентификатор/название процесса, создавшего сокет (-p, —programs display PID/Program name for sockets)

Ключи можно комбинировать. Самая распространенная команда использования netstat это:

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

Контроль сетевых соединений

Используя опцию -i можно получить данные о состоянии сетевых интерфейсов системы, а также основных счётчиков трафика. Вывод предоставляется в виде наглядной таблицы с соответствующими столбцами. Формат самой таблицы зависит от используемой системы. К примеру, в Ubuntu, да и вообще в Debian-ориентированных системах он будет примерно таким:

В данном выводе видно, как ведёт себя интерфейс eno1, через который осуществляется соединение в сеть, а также что происходит с интерфейсом обратной связи lo. В столбцах RX/TX приводится статистика по трафику с указанием количества пакетов, в том числе и пакетов с ошибками. В частности, показатель RX свидетельствует о количестве пакетов, полученных интерфейсом, TX – о количестве пропущенных через этот интерфейс пакетов с момента загрузки системы или первичной активации (задействования) интерфейса.

Количество ошибок (RX-ERR, TX-ERR) как правило, не должно быть больше 1% (в некоторых случаях 5%) от общего числа пакетов. Если ошибок больше, то следует проанализировать этот параметр на других компьютерах. Большое количество ошибок в сети (на других компьютерах) свидетельствует о неполадках в окружении сети. На отдельном компьютере излишнее их (ошибок) количество говорит о неполадках с сетевым интерфейсом (сетевая карта) или с самим соединением (кабели, совместимость оборудования).

Посмотреть сетевые соединения

Если дать команду netstat без параметров, то будет выведен список процессов (демонов), для которых установлены сетевые соединения. Если нужно также получить информацию о процессах, которые активных соединений не имеют, но слушают порты, нужно использовать ключ -a:

Данный вывод включает в себя также и информацию о системных сокетах UNIX и UDP. Как видно, в представленном отчёте зафиксировано входящее SSH-соединение, два входящих соединения IMAPS, одно входящее HTTP-соединение, а также несколько портов, которые «слушают» (LISTEN) другие соединения. Адреса в данном выводе представлены в формате имя_хоста:служба, где в качестве службы может выступать порт. В колонках Recv-Q и Send-Q отображается количество запросов в очередях на приём и отправку на данном узле/компьютере. Следует также отметить, что факт установки соединения проверяется только для протокола TCP. Кроме описанных состояний соединений имеются также и некоторые другие:

  • TIME_WAIT – ожидание на завершение соединения;
  • SYN_SENT – попытка некоторого процесса установить соединение с недоступным ресурсом или сервером;
  • SYN_WAIT – состояние, при котором данный узел не может обработать все поступающие запросы. Зачастую это может свидетельствовать об ограничении возможностей системного ядра, либо о попытках намеренно вызвать перегрузку на сервере.

Идентификация сетевых процессов

Для того, чтобы однозначно иметь представление о конкретных процессах или демонах, слушающих соединения (порты) в системе, следует воспользоваться ключами -l и -p. Первый позволяет выводить, собственно, только слушающие порты, второй — для идентификации процесса/демона, например:

Как можно видеть, в данном выводе веб-сервер (один из его процессов) прослушивает по протоколу tcp6 все HTTP-соединения. Демон MySQL прослушивает локальный порт mysql по протоколу tcp. Для того, чтобы иметь возможность видеть номера самих портов, а также IP-адреса хостов, следует к команде netstat -lp добавить ключ n. Стоит также отметить, что для получения полной информации о слушающих процессах нужно запускать команду netstat от имени суперпользователя. Если не используется опция -n и не работает служба DNS, то netstat будет выполняться очень медленно.

Получение статистики для различных сетевых протоколов

Команда netstat позволяет видеть статистические данные по использованию всех доступных в системе протоколов. Для этого нужно использовать ключ -s:

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

Также для команды netstat есть ещё один полезный ключ, позволяющий выводить обновлённые данные с интервалом в одну секунду. Этот ключ работает не в каждой связке с другими опциями. Однако, отслеживание интерфейсов в режиме реального времени с этим ключом очень удобно, например команда netstat -i -a -c будет выводить статистику по использованию всех интерфейсов в системе, в том числе и отключенных (ключ -a) автоматически каждую секунду — ключ -c.

Информацию о таблице маршрутизации позволяет получить ключ -r:

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Как определить состояние сетвого интерфейса

Интересует вопрос о том как правильно проверить доступность и состояние одного или нескольких интерфейсов.

А самое интересное это как программно узнавать об изменении состояния сетевого интерфейса.

Объясни что ты понимаешь под доступностью и состоянием сетевых интерфейсов.

man ifconfig, man bash, man cron

Иногда сетевой интерфейс в ifconfig может быть не виден (если имеет неактивное состояние). В этом случае надо воспользоваться командой ip.

Я имел ввиду если в выводе команды ip a будут видны сетевые интерфейсы со STATE DOWN. ,

Иногда сетевой интерфейс в ifconfig может быть не виден

Хотя лучше таки ip, потому как ifconfig не покажет безымянные алисы, мать его.

а в каком пакете этот ваш ip?

$ dpkg -S /sbin/ip
iproute: /sbin/ip

Да, совсем забыл про опцию 🙂

>а в каком пакете этот ваш ip?

grep $interface /proc/net/dev

>Хотя лучше таки ip, потому как ifconfig не покажет безымянные алисы, мать его.

Ну и в том случае, если в файле /etc/udev/rules.d/70-persistent-net.rules окажутся одинаковые алиасы(иногда могут не переименоваться автоматически, при удалении/добавлении сетевой карты).

ethtool или miitool в зависимости от ситуации. Или смотреть на RUNNING, CARRIER и UP флаги в ifconfig.

Если хочется получать событие об изменении состояния то dbus и NetworkManager =)

Источник

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

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

  • Как создать загрузочную флешку mac os capitan
  • Как создать загрузочную флешку linux на mac os
  • Как создать виртуальный диск mac os
  • Как создать виртуальную машину mac os в virtualbox
  • Как создать vpn подключение на mac os sierra