Программы для контроля трафика. Проверить исходящий сетевой трафик Netflow - мониторинг с ведением статистики

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

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

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

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

Мониторинг сети с помощью iptraf

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

sudo apt install iptraf

А в CentOS / Red Hat выполните:

sudo yum install iptraf

После установки утилиты для ее запуска просто наберите в терминале iptraf:

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

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

Например, для просмотра сетевых соединений и статистики трафика для каждого из них выберите "IP traffic moitor". Затем вам будет необходимо выбрать сетевой интерфейс, например, enp2s0:

Дальше вы увидите все IP адреса, с которыми сейчас выполняется взаимодействие. Здесь можно увидеть направление отправки пакетов, количество пакетов и общий объем переданных или полученных данных в байтах.

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



Также поддерживаются фильтры, которые позволяют отфильтровывать информацию только по определенному критерию. Например, чтобы создать фильтр откройте меню "Filters" , затем выберите "IP..." , а дальше "Apply new filter" :

Затем нужно указать имя фильтра:

На следующем этапе вы можете расписать нужные параметры фильтрации:

Чтобы применить фильтр нужно выбрать "Apply filter" и выбрать имя фильтра из списка:


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

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

Мониторинг сети с помощью других утилит

Самая мощная программа для мониторинга сети - это iptraf. Она предоставляет всю необходимую для администраторов информацию. Но, кроме нее, существуют и другие продукты. Рассмотрим их более подробно.

1. iftop

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

Установить программу в Ubuntu можно командной:

sudo apt install iftop

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

2. nload

nload - это очень простая утилита, которая отображает только скорость входящих и исходящих соединений. Это позволяет сделать примитивный анализ сети linux и определить нагрузку. Отображается текущая скорость, максимальная и минимальная скорость за период работы. Также данные о скорости выводятся в виде графика, поэтому вам будет достаточно беглого взгляда, чтобы понять что происходит.

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

sudo apt install nload

3. nethogs

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

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

sudo yum install nethogs

4. bmon

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

Для установки программы выполните:

sudo apt install bmon

5. Vnstat

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

sudo systemctl start vnstat

Здесь будет отображаться информация о нагрузке на сеть с указанием дат и периодов. Также вы можете посмотреть доступную информацию в реальном времени. Для этого используйте опцию -l:

Видео про использование и настройку vnstat:

6. bwm-ng

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

Для установки утилиты выполните такую команду:

sudo apt install bwm-ng

7. speedometer

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

sudo pip install speedometer

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

speedometer -r enp2s0f0 -t enp2s0f0

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

8. netwatch

Netwatch - это небольшая утилита, которая входит в набор инструментов Netdiag и показывает сетевые соединения между локальной и удаленными системами, а также скорость, с которой будут передаваться данные. Для установки программы используйте:

sudo apt install netdiag

Затем для запуска:

9. ifstat

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

sudo apt install ifstat

Для запуска:

10. trafshow

Это утилита, очень похожа на iftop, которая отображает не только скорость передачи, но и сами соединения. Здесь выводится информация по соединениях, размеры пакетов и протокол. Для установки программы наберите:

sudo apt install trafshow

Осталось запустить программу:

Выводы

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

Для тех пользователей, кто лишен возможности использовать безлимитный тарифный план (например вынужден часто использовать 3G в роуминге) учет потребления трафика - достаточно критичная задача. Как же решить ее в Ubuntu? Рассмотрим 2 интересных приложения.

Network Traffic Monitor (NTM)

Данное приложение отображает достаточно подробный отчет об использовании указанного интернет соединения. В данный отчет входят:

  1. текущая скорость загрузки-отдачи
  2. общее количество трафика, количество трафика для текущей ppp сессии, количество трафика за месяц
  3. время текущей ppp сессии (актуально когда оплата интернета - почасовая, не знаю где такое еще сохранилось)

Программа позволяет указывать интерфейс, за которым производится слежение и, в случае если это PPPoE соединение, предоставляет возможность автоматически обрывать соединение при достижении указанного в настройках лимита по трафику/времени за указанный промежуток времени (день/неделя/месяц или любой другой интервал). К сожалению, обладая такими богатыми возможностями, NTM - достаточно слабо интегрирован в Ubuntu, все ограничивается статичным индикатором, а чтобы посмотреть текущую ситуацию с лимитами приходится открыть окно программы, что не всегда удобно.

Download Monitor

Программа создана в рамках Ubuntu Apps Showdown . Ее возможности намного скромнее: download monitor позволяет задать дневной, недельный и месячный лимит по трафику, получать сообщения о превышении данных лимитов и просматривать простые графики. С другой стороны программа достаточно хорошо интегрирована в Ubuntu, имеется progress bar на Unity иконке, который позволяет оценить сколько трафика осталось.

Установить программу можно с помощью ppa-репозитория используя следующие команды:

Sudo add-apt-repository ppa:duncanjdavis/download-monitor-submit sudo apt-get update sudo apt-get install download-monitor

А как вы контролируете расход интернета?

Однажды мне потребовалось измерить количество трафика, которое «пожирает» некоторое приложение. Один из способов такого измерения - это установить прокси. Но что, если не хочется ставить прокси-сервер?.. Мне вот не хотелось. В поисках других способов я сначала перерыл Хабр, потом интернет. Так как я в своё время потратил на это много времени, то сейчас я создаю эту заметку, чтобы у других такой проблемы не возникло.

ВАЖНО:
Этот метод работает, если мы знаем по какому адресу (адресам) обращается наше приложение, или же с какого/каких портов.

Пошаговая инструкция

1. iptraf
iptraf - это небольшая программа, которая умеет мониторить всю сетевую активность компьютера.
Исходники и бинарники можно загрузить с сайта iptraf.

В случае Ubuntu установить iptraf можно выполнив команду:
sudo apt-get install iptraf

2. Запускаем!
В терминале пишем: iptraf
3. Настраиваем
Надо включить логирование (иначе программа ограничиться выводом на экран). Делается это, очевидно, в разделе «Configure» .

4. Запуск мониторинга
Уходим из настроек, жмём «IP traffic monitor» и выбираем путь к файлу, куда будем логировать сетевую активность.

После этого мы должны увидеть такую картину:

Это всё, что нужно! Почти.

5. Анализ
Как я уже упоминал выше, нужно знать, по какому адресу/порту обращается наше приложение (трафик которого мы высчитываем).
Например, если мы хотим посчитать сколько трафика «стоит» час радио last.fm , мы должны определить следующее:
приложение last.fm обращается к адресам вроде таких:
195.24.* (last.fm не обращается к одному адресу, а обращается к диапазону адресов).
Чтобы вытащить из лога (который писался час) количество трафика, которое было съедено, я написал небольшую «программку» на java, которая этот трафик и считает:

Package stat; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; /** * * @author http://habrahabr.ru/users/nucleotide/ */ public class Main { public static void main(String args) throws IOException { BufferedReader reader = new BufferedReader(new FileReader("/var/log/iptraf/ip_traffic")); String line; long count = 0; long traffic = 0; while ((line = reader.readLine()) != null) { count++; String s = line.split(" "); if (s.length < 12) { continue; } if (s.contains("195.24.") || s.contains("195.24.")) { //"from" and "to" traffic += new Long(s); if(s.length>16) traffic += new Long(s); } } System.out.println("Count: " + count + " lines"); System.out.println("Total: " + traffic + " bytes!"); System.out.println("Total: " + traffic / 1024 + " Kbytes!"); System.out.println("Total: " + traffic / (1024 * 1024) + " Mbytes!"); } }

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

Возможно, это не лучший вариант (хоть и работающий). Есть множество других вариантов.

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

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

Бесплатность использования, высокая отказоустойчивость, хорошая поддержка - вот три кита за подсчет трафика с помощью приложений под Linux.

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

Варианты учета трафика Linux

Классический вариант - установка прокси-сервера SQUID, его настройка на раздачу трафика в локальную сеть и привязка к нему одного из веб-серверов - SAMS или LightSqiud.

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

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

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

Настройка IPCad для учета трафика Linux

Главное перед установкой поставить несколько библиотек в систему - build-essential, libpcap-dev и linux-libc-dev.

После установки в файле /usr/local/etc/ipcad.conf можно посмотреть примеры настройки IPCad. В простом случае нужно указать сетевые интерфейсы, по которому производится подсчет трафика Linux, например:

Aggregate 192.168.36.0/24 strip 32
остальные адреса смотрим по первым 24 битам:

Aggregate 0.0.0.0/0 strip 24
Поднимаем сервер rsh для просмотра статистики

Rsh enable at 127.0.0.1
Указываем, что подсчет трафика Linux проводится от своей учетной записи:

Rsh [email protected] admin
Запрещаем пользователю «user» доступ:

Rsh [email protected] deny
Делаем так, чтобы пользователи в сети могли просматривать свою статистику:

Rsh 127.0.0.1 view-only
Указываем файл, куда собирается статистика:

Dumpfile = /var/log/ipcad/ipcad.dump
Остальные опции для начала можно закомментировать.

Sudo touch /var/log/ipcad/ipcad.dump
и даем ему необходимые права:

Sudo chmod 600 /var/log/ipcad/ipcad.dump
Далее стартуем сервис:

Sudo ipcad -rds
Для автозапуска добавляем строчку в /etc/rc.local или его аналог, зависит дистрибутива:

Rsh localhost show ip accounting
Недостатком использования IPCad является то, что статистику можно просматривать в консоли. Но если найти нужный в интернете скрипт на Perl и привязать страницу с ним к httpd-серверу. Тогда учет трафика Linux можно вести через браузер.

Иногда просто необходимо знать, либо контролировать свой трафик. Ситуации бывают разные. Например просто интересно какой объем фильмов и музыки я «накачал» за месяц, или у кого-то лимитированный интернет, да мало ли для чего. Есть ли в Убунту инструмент для контроля трафика? Ну конечно же есть! Рассмотрим две программы для решения этой задачи.

Программа предоставляет весьма подробный отчет о том, сколько трафика было расходовано на том или ином интернет-соединении. В этот отчет входят:

  1. скорость загрузки-отдачи за данную сессию
  2. общий объем трафика, количество трафика за сегодня, а также месячный объем трафика
  3. время текущей ppp сессии (это очень полезно если у вас оплата интернета почасовая)

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

Скачать Network Traffic Monitor можно с официального программы.

Программа позволяет просматривать использование трафика за день, неделю и месяц. Если ваш лимит трафика превышен, то Download Monitor выдаст вам сообщение. Контролировать трафик вам помогут симпатичные графики, которые создает программа.
Установить программу можно при помощи следующих команд в Терминале:

sudo add-apt-repository ppa:duncanjdavis/download-monitor-submit
sudo apt-get update
sudo apt-get install download-monitor