Программы для контроля трафика. Проверить исходящий сетевой трафик 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)
Данное приложение отображает достаточно подробный отчет об использовании указанного интернет соединения. В данный отчет входят:
- текущая скорость загрузки-отдачи
- общее количество трафика, количество трафика для текущей ppp сессии, количество трафика за месяц
- время текущей 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. Запускаем!
В терминале пишем: iptraf3. Настраиваем
Надо включить логирование (иначе программа ограничиться выводом на экран). Делается это, очевидно, в разделе «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 можно вести через браузер.
Иногда просто необходимо знать, либо контролировать свой трафик. Ситуации бывают разные. Например просто интересно какой объем фильмов и музыки я «накачал» за месяц, или у кого-то лимитированный интернет, да мало ли для чего. Есть ли в Убунту инструмент для контроля трафика? Ну конечно же есть! Рассмотрим две программы для решения этой задачи.
Программа предоставляет весьма подробный отчет о том, сколько трафика было расходовано на том или ином интернет-соединении. В этот отчет входят:
- скорость загрузки-отдачи за данную сессию
- общий объем трафика, количество трафика за сегодня, а также месячный объем трафика
- время текущей 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