Использование сетевого трафика на интерфейсах

Posted by

В данной заметке я рассмотрю такую утилиту для .4 Desktop amd64 с помощью, которой можно мониторить сетевой траффик на интерфейсах системы, а статистику смотреть, используя, как командную строку, так и Web-ориентированное представление. Это нужно для того чтобы понимать, как мы задействуем сеть и сколько трафика через интерфейс проходит. Если у вас так же как и у меня выделенная машина занимается предоставлением удаленного доступа в домашнюю систему, то для себя это будет крайне интересно и познавательно. Но довольно лирики, переходим к практическому описанию:

Система обновлена до последнего релиза по заметке:

ekzorchik@udesktop:~$ uname -a && lsb_release -a

Linux udesktop 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 12.04.4 LTS

Release: 12.04

Codename: precise

Производим настройки хоста:

ekzorchik@udesktop:~$ sudo nano /etc/hosts

192.168.1.34 udesktop udesktop.polygon.local

ekzorchik@udesktop:~$ sudo nano /etc/hostname

udesktop

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

ekzorchik@udesktop:~$ sudo /etc/init.d/networking restart

ekzorchik@udesktop:~$ hostname -f

udesktop

Далее в основе этой заметке будет консольная утилита – :

ekzorchik@udesktop:~$ apt-cache search vnstat

vnstat — console-based network traffic monitor

Устанавливаем консольную утилиту — vnstat:

ekzorchik@udesktop:~$ sudo apt-get install vnstat

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

ekzorchik@udesktop:~$ sudo service vnstat start

За настройку демона отвечает конфигурационный файл: (включаем логирование в файл):

ekzorchik@udesktop:~$ sudo nano /etc/vnstat.conf

UseFileLocking 1

# enable / disable logging (0 = disabled, 1 = logfile, 2 = syslog)

UseLogging 1

# file used for logging if UseLogging is set to 1

LogFile "/var/log/vnstat.log"

ekzorchik@udesktop:~$ sudo service vnstat restart

Проверяем, пишутся ли логи работы демона:

ekzorchik@udesktop:~$ sudo tail -f /var/log/vnstat.log

[2014.04.07 20:34:06] vnStat daemon 1.11 started.

[2014.04.07 20:34:06] Daemon running with pid 2789.

[2014.04.07 20:34:06] Monitoring: eth1

Отобразить доступные интерфейсы в системе:

ekzorchik@udesktop:~$ sudo vnstat --iflist

Available interfaces: lo eth1

Для ведения лога необходимо сначала создать базу данных нужного интерфейса. К примеру, для eth1:

ekzorchik@udesktop:~$ sudo vnstat -u -i eth1

Теперь уже происходит мониторинг за трафиком.

По обзору что и как можно просмотреть посредством консоли советую дабы не повторяться здесь обратиться к заметке применительно описанной для CentOS 6.5

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

Устанавливаем в систему Web сервер Apache:

ekzorchik@udesktop:~$ sudo apt-get install apache2 -y

ekzorchik@udesktop:~$ sudo nano /etc/apache2/apache2.conf

ServerName udesktop

Скачиваем vnstat php frontend:

ekzorchik@udesktop:~$ wget -c http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz

Распаковываю скачанный архив:

ekzorchik@udesktop:~$ tar xvfz vnstat_php_frontend-1.5.1.tar.gz

Перемещаем распакованный архив в каталог /var/www/vnstat:

ekzorchik@udesktop:~$ sudo mkdir -p /var/www/vnstat

ekzorchik@udesktop:~$ sudo mv vnstat_php_frontend-1.5.1/* /var/www/vnstat/

Переходим к редактированию конфигурационного файла config.php:

ekzorchik@udesktop:~$ sudo nano /var/www/vnstat/config.php

И приводим параметры к таким значениям:

$locale = 'en_US.UTF-8';

Статистика отображения берется на основании файлов из каталога /var/www/html/vnstat/lang, но если нужно можно создать свой, поменяв перевод на нужный язык:

$language = 'en';

Комментируем или удаляем, если не используем IPv6:

// $iface_title['sixxs'] = 'SixXS IPv6';

$iface_list = array('eth1');

Сохраняем внесенные изменения в файле.

Теперь создаем дампы для интерфейсов (а):

ekzorchik@udesktop:~$ sudo -s

root@udesktop:~# vnstat --dumpdb -i eth1 > /var/www/vnstat/dumps/vnstat_dump_eth1

root@udesktop:~# exit

exit

Перезапускаем Web-сервис Apache:

ekzorchik@udesktop:~$ sudo service apache2 restart

Далее открываем браузер и в строке адреса указываем, либо FQDN/IP системы с префиксом vnstat для отображения сетевой статистики:

К примеру, у меня: http://192.168.1.34/vnstat

В системе не хватает компонентов работающих с файлами phtml

, но как видно страница со статистикой не отобразилась, потому как Web-сервер Apache еще пока не может работать с контентом файлов с расширениемphtml”, исправим это дело:

ekzorchik@udesktop:~$ sudo apt-cache search libapache2-mod-php5

libapache2-mod-php5 — server-side, HTML-embedded scripting language (Apache 2 module)

ekzorchik@udesktop:~$ sudo apt-get install libapache2-mod-php5 -y

Теперь обновив состояние вкладки в браузере увидем статистику по сетевому интерфейсу “eth1” в наглядном виде по сравнению с консольным представлением:

Наглядное представление использование трафика через Web интерфейс

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

ekzorchik@udesktop:~$ sudo nano /etc/apache2/sites-available/vnstat.conf

Alias /vnstat/ "/var/www/vnstat/"

<Directory "/var/www/vnstat/">

AuthType Basic

AuthName "Private zone network statictics"

AuthUserFile /var/www/vnstat/.htpasswd

Require valid-user

Order allow,deny

Allow from 192.168.1.33

Satisfy all

</Directory>

Сохраняем внесенные изменения в файле

Для справки:

Директива Satisfy определяет способ взаимодействия директив идентификации с директивами доступа.

Satisfy Any → пропускает запрос, если выполнено любое из требований (идентификация или проверка доступа)

Satisfy All → пропускает запрос, только если оба требования выполнены (и идентификация и проверка доступа)

Проверяем, что внесенные изменения в конфиг корректны:

ekzorchik@udesktop:~$ sudo apachectl graceful

Должно быть без ошибок, у меня ошибок нет.

Создаем пользователя для авторизации в приватной области:

ekzorchik@udesktop:~$ sudo htpasswd -c /var/www/vnstat/.htpasswd ekzorchik

New password: 712mbddr@

Re-type new password: 712mbddr@

Adding password for user ekzorchik

Включаем виртуальный хост:

ekzorchik@udesktop:~$ sudo a2ensite vnstat.conf

Enabling site vnstat.conf.

To activate the new configuration, you need to run:

service apache2 reload

Чтобы изменения применились нужно, чтобы демон apache перечил конфиги:

ekzorchik@udesktop:~$ sudo service apache2 reload

Правильно выставляем права на каталог vnstat:

ekzorchik@udesktop:~$ sudo chown -R www-data:www-data /var/www/vnstat/

Теперь при обращении к URL: http://192.168.1.34/vnstat, чтобы получить доступ к статистике нужно указать логин и пароль и IP адрес системы должен заканчиваться на октет 34, если это не так, то результат обращения по этому URL будет следующим:

Пример работы директивы satisfy

Теперь обращаемся с адреса 192.168.1.33 и указываем аутентификационные данные:

User name: ekzorchik

Password: 712mbddr@

Статистика отобразится.

Чтобы удалить ссылку в подвале подсчета статистики:

Удаляем ссылку в подвале подсчета статистики

ekzorchik@udesktop:~$ sudo nano /var/www/vnstat/index.php

удаляем строку 192 (клавиатурное сочетание: Ctrl + K)

Сохраняем внесенные изменения.

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

Leave a Reply

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

один + восемнадцать =