Облік та логування трафіку linux. Програми контролю трафіку. Моніторинг мережі за допомогою інших утиліт

Програма під Linux для побудови графіків на основі статистики з трафіку. Потрібно: PHP, MySQL, web-сервер. Ліцензія GPL.

  • Big Brother
  • Утиліта, що показує завантаженість мережного інтерфейсу як маленького віконця для трею.
  • Cachalot SystemСистема обліку трафіку, час роботи користувачів. Кросплатформенна (реалізована на Java). Ідеальна для інтернет-кафе та невеликих ISP.
  • Універсальний конвертер статистики. Дозволяє збирати статистику з трафіку з маршрутизаторів та експортувати її за протоколом Cisco NetFlow v5. Ліцензія GPL.
  • grafistУтиліта моніторингу утилізації ширини каналу, що пропускається. Кожні 15 секунд дивиться в /proc/net/dev і записує дані у 4 файли. Потім, за допомогою gd малює графік.
  • ifmonitorПрограма для підрахунку трафіку. Працює з MySQL і залежить від SNMP. Використовує syslog для збереження логів.
  • Монітор трафіку з урахуванням libpcap.
  • IpacПакет під Linux для збору, підсумовування та подання даних про кількість та розмір пакетів протоколу TCP/IP, що пройшли через будь-який інтерфейс.
  • IpaccПатч до ядра FreeBSD для обліку трафіку. Дані видаються у вигляді "src_ip, dest_ip, число пакетів, трафік". Вся взаємодія здійснюється через пристрій /dev/ipacc або утиліту ipacc.
  • IPStatПрограма обліку IP-трафіку з web-інтерфейсом Java Servlet/JSP. Збирає, підсумовує та показує дані з IP-трафіку, вся база даних зберігається у MySQL. Підтримує ipchains/iptables. Ліцензія GPL.
  • macwatchПрограма для підрахунку вхідного та вихідного трафіку для зазначеної MAC-адреси та збереження його у файлі для використання з MRTG.
  • MRTG (Multi Router Traffic Grapher)Утиліта, що генерує HTML-сторінки з PNG малюнками, що показують завантаження мережі.
  • Колектор статистики для збирання інформації з трафіку з інтерфейсів PC-маршрутизатора та експорту її у форматі Cisco NetFlow v.5. Платформи: Linux, BSD, Mac OS X, Windows. Ліцензія GPL.
  • NiTrafПросте та надійне рішення для підрахунку трафіку, саме те, що необхідно багатьом початківцям і не дуже адміністраторам. Серед можливостей програми – підтримка квот з трафіку, різні типи звітів, повідомлення адміністратора по e-mail. Ліцензія на GPL.
  • NuFWДемони, що дозволяють фільтрувати пакети залежно від віддаленого користувача. Ліцензія GPL.
  • PackitМережева утиліта, що надає повний контроль за трафіком IPv4. Корисна для тестування firewall"ів та загального TCP/IP аудитингу. Заснована на libnet і libpcap.
  • PpplogdНабір скриптів для занесення даних про використання послуг доступу по комутованих лініях (dial-up). Дані про всі з'єднання зберігаються у базі даних MySQL. Програма призначена для звітування споживання послуг.
  • (Full Squid traffic)
  • TiToУтиліта для вимірювання трафіку із зазначених IP. Має web-інтерфейс, малює графіки, підтримує скіни. Ліцензія: Freeware.
  • У цій статті зібрані способи моніторингу трафіку через сервер. Найчастіше завдання моніторингу постає для роутерів, які забезпечують зв'язок з Інтернетом.

    Моніторинг у реальному часі

    Для моніторингу трафіку в реальному часі можна використовувати утиліту jnettop:

    sudo jnettop

    Або, як варіант, vnstat із ключем –live:

    sudo vnstat --live

    Можна також скористатися досить зручною утилітою із псевдографічним інтерфейсом, яка називається iptraf:

    sudo iptraf

    Журналювання активності засобами iptables

    Стандартний пакетний фільтр iptables іноді може бути корисним для аналізу якогось конкретного типу трафіку. iptables дозволяє записувати в системний журнал активність за вибраними критеріями. Наприклад, за допомогою iptables можна легко відстежити, який комп'ютер надсилає дані у зовнішню мережу по 25 порту (SMTP), таким чином обчисливши заражений комп'ютер у локальній мережі.

    Для запису даних у файл журналу призначено дію LOG (і потужніша ULOG). Детальний його синтаксис і можливі параметри можна переглянути в документації по iptables.

    Важливим аспектом є те, що iptables сам не веде файли журналів. Натомість дія LOG відправляє інформацію системному демону журналювання, і він записує їх у журнал, яким найчастіше є /var/log/syslog . У результаті виходить каша, в якій дуже важко розібратися. Оскільки iptables сам не займається веденням журналу, перенаправити запис в окремий файл засобами самого iptables неможливо.

    На щастя, в Ubuntu існує простий спосіб розсортувати дані по потрібних журналах засобами використовуваної системи журналування rsyslog. Достатньо при записі до журналу додавати якийсь унікальний префікс. Наприклад, ось так:

    sudo iptables -t filtr -A FORWARD -s 192.168.0.0/ 16 -m tcp -p tcp --dport 25 -j LOG --log-prefix "iptables: "

    Тепер усі записи в журналі, які відповідають цьому критерію, починаються з «iptables:». Залишилося додати правило сортування до системи журналювання. Для цього можна створити файл /etc/rsyslog.d/10-iptables.conf із таким змістом:

    :msg, contains, "iptables: " -/var/log/iptables.log & ~

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

    Після створення нового конфігураційного файлу не забудьте переконфігурувати rsyslog:

    sudo /etc/init.d/rsyslog reload

    Тепер вся активність, що відповідає доданому правилу iptables, записуватиметься у файл /var/log/iptables.log. Якщо ви хочете надовго залишити журнал, то не забудьте додати цей файл до системи ротації логів logrotate, а то в якийсь момент у вас може закінчитися місце на диску.

    Докладніше про керування записом журналу можна почитати в документації rsyslog.

    Утиліти Vnstat та Vnstati

    Vnstat це дуже простий інструмент для обліку трафіку. Він є в репозиторіях Ubuntu, тому установка не викликає труднощів. Vnstat не вимагає тонкого налаштування, просто рахує трафік і дозволяє переглядати статистику. Для звичайного користувача цього найчастіше більш ніж достатньо.

    Щоб розпочати підрахунок трафіку, потрібно виконати команду, яка створить базу даних для зазначеного інтерфейсу:

    sudo vnstat -u -i eth0

    Підрахунок трафіку відбувається автоматично, база даних оновлюється при вимиканні мережного пристрою. Але є можливість оновити базу вручну:

    sudo vnstat -u

    Для перегляду статистики досить просто ввести:

    Також можна використовувати ключі:

    H, --hours за годинником -d, --days за день -m, --months за місяць -w, --weeks за тиждень -t, --top10 top10 -s, --short короткий висновок -l, - -live моніторинг у реальному часі

    Vnstati – це утиліта для візуалізації статистики, з нею теж все просто. Ось, наприклад, короткий скрипт, який виводить на екран статистику у вигляді картинки:

    #! /bin/bash vnstat -u vnstati -vs -o ~/ vnstati.png eog ~/ vnstati.png

    Обидві утиліти мають ще деякі можливості, не забувайте про ключ --help та утиліту man!

    Netflow - моніторинг із веденням статистики

    Для моніторингу з веденням статистики одним із популярних рішень є технологія Netflow.

    Для збору статистики за допомогою Netflow необхідно на потрібні інтерфейси повісити спеціальні Netflow-сенсори, які будуть збирати інформацію та передавати Netflow колектору, який може розташовуватися на іншій машині.

    Інформацію, зібрану колектором, можна візуалізувати за допомогою графічного фронтенду, або аналізувати за допомогою утиліт командного рядка.

    Як сенсори можна використовувати доступні в стандартних репозиторіях fprobe або softflowd.

    Сенсор fprobe

    Для встановлення сенсора fprobeможна, наприклад, виконати таку команду:

    sudo apt-get install fprobe

    Інсталятор запитає, на якому інтерфейсі слухати трафік, і куди передавати зібрану статистику - введіть потрібні вам параметри і fprobe почне працювати. Наприклад, для Nfsen у прикладі нижче потрібно вказати порт 9995.

    Автозапуск під час перезапуску мережі

    Демон fprobe завжди аварійно завершується, коли інтерфейс, якого він прив'язаний, вимикається (перетворюється на стан DOWN). І автоматично не запускається знову, коли інтерфейс відновлює роботу.

    Якщо вам з якихось причин потрібно періодично перемикати інтерфейси, то щоб оминути цю проблему fprobe можна у файл /etc/network/interfaces після опису інтерфейсу додати рядки

    Up service fprobe start down service fprobe stop

    Наприклад, могло б вийде щось схоже на:

    Allow-hotplug eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 # fprobe up service fprobe start down service fprobe stop

    Тепер при використанні утиліт, які перечитують цей файл (ifup і ifdown), fprobe коректно завершуватиметься і автоматично запускатиметься при перемиканні стану інтерфейсу. При цьому при старті системи fprobe буде намагатися запуститися два рази (один раз стандартним способом, інший - через /etc/network/interfaces), і хоча у нього це не вийде, але все ж таки для порядку краще автозапуск системного демона fprobe прибрати:

    sudo update-rc.d -f fprobe remove

    Декілька демонів fprobe на одному комп'ютері

    Якщо ви хочете запустити на одному комп'ютері відразу кілька демонів fprobe (щоб слухати кілька інтерфейсів), то доведеться трохи змінити стартові скрипти.

    Для початку відредагуйте стартовий скрипт /etc/init.d/fprobe , замінивши в ньому рядок

    NAME = fprobe

    на рядок

    NAME = "fprobe"

    І, крім цього, рядок

    DAEMON_OPTS ="-i

    на рядок

    DAEMON_OPTS ="-l 1:0 -i $INTERFACE $OTHER_ARGS $FLOW_COLLECTOR "

    Перше число доданого параметра запуску -l («1») каже fprobe використовувати syslog для журналу, а друге є ідентифікатором процесу. Саме друге число і потрібно міняти при запуску декількох копій fprobe , і воно має стояти в квадратних дужках у параметрі NAME відповідного стартового скрипта.

    Тепер, щоб створити всі необхідні параметри та скрипти для запуску другої копії fprobe , скопіюйте /etc/init.d/fprobe у /etc/init.d/fprobe_1:

    sudo cp /etc/init.d/fprobe/etc/init.d/fprobe_1

    І /etc/default/fprobe в /etc/default/fprobe_1:

    sudo cp / etc/ default/ fprobe / etc/ default/ fprobe_1

    Відредагуйте /etc/default/fprobe_1 для роботи з другим інтерфейсом.

    Тепер потрібно відредагувати стартовий скрипт /etc/init.d/fprobe_1 для другого процесу fprobe. Замініть числа у параметрах NAME та DAEMON_OPTS на потрібні:

    NAME = "fprobe" DAEMON_OPTS = "-l 1:1 -i $INTERFACE $OTHER_ARGS $FLOW_COLLECTOR "

    Крім того, змініть код завантаження конфігураційного файлу таким чином, щоб він звертався до файлу fprobe_1. Замість приблизно наступного:

    if [-f/etc/default/fprobe]; then . / etc/ default/ fprobe fi

    повинно вийде щось на кшталт:

    # Include fprobe defaults if available if [-f/etc/default/fprobe_1]; then . / etc/ default/ fprobe_1 fi

    Також у нових версіях Ubuntu на початку цього файлу міститься спеціальний коментар для системи завантаження. Він починається зі рядка

    # ## BEGIN INIT INFO

    У цьому коментарі також необхідно замінити рядок

    # Provides: fprobe

    на рядок

    # Provides: fprobe_1

    Переконайтеся, що все працює як треба. Для цього запустіть обидва fprobe , потім загляньте в будь-який менеджер процесів (наприклад, htop) і знайдіть там обидва демони.

    Якщо все нормально, додайте другий демон fprobe в автозавантаження командою

    sudo update-rc.d fprobe_1 defaults

    Звичайно, якщо ви пропишете запуск другого демона fprobe в /etc/network/interfaces, то додавати його до автозавантаження не варто.

    Таким чином можна запустити скільки завгодно демонів fprobe просто змінюючи ідентифікатор.

    Колектор Nfdump та візуалізатор даних Nfsen

    Nfdumpі Nfsen- це колектор із супутніми утилітами та веб-інтерфейс візуалізації зібраних даних. Nfdump доступний у стандартних репозиторіях Ubuntu, а Nfsen можна завантажити з офіційного сайту. Там же можна подивитися скріншоти, щоб скласти уявлення про те, що таке Nfsen.

    Як сенсор для цієї зв'язки можна використовувати будь-який доступний, наприклад fprobe або softflowd.

    Nfdump можна поставити через будь-який пакетний менеджер, наприклад командою

    sudo apt-get install nfdump

    Nfsen необхідно розпакувати кудись на сервер з архіву з вихідними текстами і виконати кілька нескладних операцій. Для початку необхідно поставити всі необхідні для роботи пакети:

    sudo apt-get install apache2 libapache2-mod-php5 librrds-perl libmailtools-perl

    Після цього зайти в папку etc/ в директорії, куди ви розпакували Nfsen, і перейменувати файл nfsen-dist.conf, що знаходиться там, в nfsen.conf . Це основний файл конфігурації Nfsen. Його потрібно відредагувати під ваші потреби. Нижче наведено лише опції, які потрібно змінити для базової конфігурації Nfsen:

    # Директорія, куди встановиться Nfsen.$BASEDIR = "/srv/nfsen"; # Якщо хочемо веб-інтерфейс поставити в ту саму татку, що і все інше$HTMLDIR = "$(BASEDIR)/www" ; # Розташування утиліт Nfdump для Ubuntu та Debian$PREFIX = "/usr/bin"; # Користувач для запуску nfcapd - демона-колектора$USER = "www-data"; # Користувач та група для запуску веб-інтерфейсу$WWWUSER = "www-data" ; $WWWGROUP = "www-data" ; # Джерела збору даних - ім'я, локальний порт, на якому слухати, колір графіка%sources = ( "router1" => ( "port" => "9995" , "col" => "#0000ff" , "type" => "netflow" ) , "router2" => ( "port" => "9996", "col" => "#00ff00", "type" => "netflow"),));

    Детальну документацію за доступними можливостями можна прочитати на .

    У Ubuntu 12.04 LTS з Perl 5.14 та nfsen 1.3.6p1 немає import Socket6. У файлах "libexec/AbuseWhois.pm" та "libexec/Lookup.pm" замінити:

    use Socket6;

    Socket6-> import (qw (pack_sockaddr_in6 unpack_sockaddr_in6 inet_pton getaddrinfo));

    Після редагування конфіга можна встановити Nfsen. Для цього достатньо з директорії, куди ви його розпакували, виконати команду

    ./install.pl etc/ nfsen.conf

    Все, що залишилося, це запустити Nfsen. У прикладі вище як директорія для установки Nfsen вказаний шлях /srv/nfsen/. У цьому випадку для запуску можна використати команду

    / srv / nfsen / bin / nfsen start

    Щоб інтегрувати Nfsen у систему як автоматичний сервіс, виконайте дві приблизно такі команди:

    ln -s / srv / nfsen / bin / nfsen / etc / init.d / nfsen update-rc.d nfsen defaults 20

    Тепер, якщо ви залишили налаштування веб-сервера за промовчанням, веб-інтерфейс має бути доступний за адресою http://yourserver/nfsen/nfsen.php.

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

    Для моніторингу швидкості з'єднання та трафіку можна використовувати стандартний аплет панелі cairo-dock - netspeed і популярний засіб системного моніторингу conky.

    ОЛЕКСАНДР КУЗНЄЦОВ

    Багато хто з вас у своїй роботі стикається з необхідністю вести статистику трафіку, що витрачається в локальній мережі. Ми розповімо вам, як це завдання вирішується в Linux без будь-яких грошових вкладень у спеціалізовані програмні продукти.

    Враховувати трафік, що проходить через шлюз локальної мережі в Інтернет, ми будемо за допомогою ipcad (Cisco IP accounting simulator). Це програма, яка може вести підрахунок кількома механізмами, наприклад через інтерфейси BPF, libpcap і iptables ULOG. Матеріал призначений для тих адміністраторів, у віданні яких є мала або середня локальна мережа. Все, що знадобиться для роботи, тільки сам ipcad, текстовий редактор для написання скриптів аналізу статистики і величезне бажання вирішити завдання підрахунку витрачається трафіку в локальній мережі.

    Ми розглянемо процеси встановлення, налаштування та запуску ipcad, а також деякі приклади написання скриптів аналізу статистики.

    Встановлення ipcad

    Спочатку потрібно завантажити останню версію ipcad (http://lionet.info/ipcad). На момент написання такої статті була 3.6.6. У процесі установки немає нічого нетривіального:

    # tar -xvzf ipcad-3.6.6.tar.gz

    # cd ipcad-3.6.6

    # ./configure

    # make

    # /bin/su -

    # make install

    У RPM-based-дистрибутивах встановлювати ipcad краще за допомогою checkinstall (щоб дотримуватися правил пакетної системи).

    Налаштування ipcad

    З численних способів ведення статистики найпростішим є облік трафіку, що пройшов через фізичні інтерфейси шлюзу (у цій статті – два Ethernet-інтерфейси). Для конкретизації опису налаштувань взято локальну мережу з однією підмережею 192.168.0.0/24.

    За замовчуванням єдиний файл конфігурації ipcad знаходиться в директорії /usr/local/etc. Під завдання обліку трафіку через два мережеві інтерфейси eth0 і eth1 ipcad.conf виглядає так:

    # /usr/local/etc/ipcad.conf

    # GLOBAL OPTIONS

    # Опція capture-ports включає/відключає додаткові поля статистики, такі як: TCP- і UDP-порти, а також

    типи ICMP-пакетів. Однак включення даної опції збільшує споживання пам'яті, знижує швидкість підрахунку

    трафіку і в ряді випадків спотворює висновок через RSH, тому вона в даному прикладі відключена

    capture-ports disable;

    # Розмір буферів, використовуваних передачі статистики ядром, за замовчуванням дорівнює 64 Кб, чого цілком достатньо

    buffers = 64k;

    # INTERFACE OPTIONS

    # Інтерфейси, на яких вважається трафік, що проходить.

    # Розглядається випадок шлюзу з двома мережевими інтерфейсами: внутрішнім (локальна мережа) та зовнішнім (Інтернет)

    interface eth1; # ...і ще на одному

    # Розділяти статистику за кожною IP-адресою для підмережі 192.168.0.0/24. "aggregate 192.168.0.0/24" вказує

    # ipcad-діапазон адрес мережі. "strip 32" означає, що в статистику необхідно заносити всі 32 біти

    # адреси, що належить даному адресному діапазону

    aggregate 192.168.0.0/24 strip 32;

    # RSH SERVER OPTIONS

    # Налаштування rsh-сервера, за допомогою якого переглядатиметься статистика.

    rsh enable at 127.0.0.1;

    # Правила, наведені нижче, описують політики доступу до статистики ipcad. Root може повністю керувати

    # (робити backup, переглядати та змінювати таблиці підрахунку). Всі інші можуть лише переглядати статистику

    rsh [email protected] admin;

    rsh [email protected] backup;

    rsh [email protected];

    rsh 127.0.0.1 view-only;

    # «Час життя» та тайм-аут IP-пакету

    rsh ttl = 3;

    rsh timeout = 30;

    # Опцією dumpfile задається шлях до файлу, який за умовчанням будуть складатися дані статистики

    dumpfile = /var/log/ipcad/ipcad-curr.dump;

    # OTHER OPTIONS

    pidfile = /var/run/ipcad.pid;

    # Опція memory_limit визначає кількість пам'яті для зберігання вмісту одного потоку даних.

    # Синтаксис наступний: memory_limit =<количество>[(k|m|e)] ;

    де k - Кб; m – Мб; e – кількість рядків таблиці даних

    memory_limit = 10m;

    Решта опцій, що задаються ipcad.conf, у нашому випадку можна сміливо видалити (або, як мінімум, закоментувати) через непотрібність. Таким чином, вони не будуть задіяні взагалі.

    Примітка: директорія /var/log/ipcad/ не створюється під час встановлення ipcad, тому її необхідно створити самостійно. Права на читання, запис та перегляд вмісту директорії з логами ipcad рекомендую дати лише користувачеві root. Всім іншим – заборонити все, щоб уникнути навіть перегляд простими користувачами статистики трафіку, що витрачається в мережі.

    На цьому процеси встановлення та налаштування завершено, і можна переходити до запуску ipcad.

    Запуск ipcad

    Запускати ipcad має сенс таким чином, щоб при завантаженні він відновлював дані про статистику з dumpfile, йшов у фон, а при вимкненні скидав усі дані в той же dumpfile. Команда для запуску виглядає так:

    /usr/local/bin/ipcad –rds

    де:

    • ключ r- Імпортує дані з dumpfile;
    • ключ d- "Демонізує" ipcad;
    • ключ s- Скидає статистику в dumpfile при вимкненні ipcad.

    Найкраще розмістити вказану команду в один із init-скриптів для запуску ipcad разом із системою. Який саме init-скрипт, я не конкретизую, т.к. це від кожного дистрибутива. Наприклад, у SuSE Linux для подібних цілей служить скрипт /etc/init.d/boot.local, а RedHat - /etc/rc.d/rc.local.

    Перегляд статистики

    Для керування статистикою ipcad використовується rsh, налаштування якого задаються в конфігураційному файлі ipcad.conf (що йдеться в «Налаштування ipcad»).

    Загальний синтаксис команд для ipcad виглядає так:

    rsh host comand

    де host – це хост, у якому ведеться статистика, а comand – це сама команда. У цьому випадку значенням host є localhost.

    За командою:

    rsh localhost help

    доступний повний перелік команд.

    А саме:

    • show ip accounting– показати статистику.
    • clear ip accounting- Скинути статистику до контрольної точки. Якщо контрольна точка не задана, статистика скидається в нуль.
    • show ip accounting checkpoint– показати статистику, збережену у контрольних точках.
    • clear ip accounting checkpoint- Скинути всі контрольні точки.
    • show ip cache flow- Показати кеш NetFlow.
    • show interface – показати лічильник інтерфейсу .
    • dump [ ] – зберегти поточну статистику у файл Якщо Не вказувати, чи статистика скинеться в dumpfile, вказаний у конфігураційному файлі ipcad.conf.
    • restore [ ] - Відновити статистику.
    • import [ ] - Імпортувати (додати) статистику.
    • stat- Показати поточний стан роботи ipcad.
    • show version– показати версію та uptime ipcad.
    • shutdown- Завершити роботу ipcad.

    Для перегляду статистики достатньо:

    rsh localhost show ip accounting

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

    Отримати потрібні дані з виведення команди show ip accounting можна, наприклад, за допомогою скриптів. Які ви можете написати самі для кожної конкретної ситуації. Нижче наведено приклад для перегляду статистики за однією вказаною IP-адресою та підрахунку сумарного трафіку для цього IP:

    traff.acc

    #!/bin/bash

    # name of script: traff.acc

    HOST=localhost

    rsh $HOST dump

    rsh $HOST show ip accounting | grep -E "192\.168\.0\."$1"([^0-9]|$)"

    echo

    echo "Суммарний traffic of 192.168.0.$1 (kbytes):"

    rsh $HOST show ip accounting | grep -E "192\.168\.0\."$1"([^0-9]|$)" | awk "(s+=$4) END (print(s/1024))"

    Використовується просто:

    ./traff.acc ip

    де ip - це число від 1 до 254 (просто останній октет з IP-адреси).

    Результатом роботи цього скрипта буде виведення на екран кількості (у мегабайтах) вхідного трафіку для введеної IP-адреси.

    Наведений найпростіший скрипт виводитиме всю сумарну статистику за вказаною IP-адресою, зібрану з першого запуску ipcad і до поточного моменту часу. Це не завжди зручно, оскільки наочніше мати дані за якийсь конкретний проміжок часу (день/тиждень/місяць).

    Мені достатньо вести статистику трафіку, що витрачається, по місяцях. Схема такого обліку виглядає так: о 23 год. 59 хв. «Останнього» числа кожного місяця робиться dump статистики у файл, до назви якого доцільно додати значення року та поточного місяця. Вже за хвилину, о 0 год. 00 хв. 1-го числа наступного місяця, лічильник трафіку скидається командою "clear ip accounting", статистика починає вестися "з нуля". Після досягнення «останнього» дня місяця схема повторюється.

    Для реалізації цього механізму створено файл /etc/cron.d/ipcad із завданнями для cron:

    /etc/cron.d/ipcad

    * * * * * root rsh localhost dump >/dev/null

    59 23 * * * root date "+\%Y\%m" > /var/log/ipcad/ipcad.date

    0 0 1 * * root (rsh localhost dump /var/log/ipcad/ipcad-$(cat /var/log/ipcad/ipcad.date).dump && rsh localhost clear ip accounting) >/dev/null 2>&1

    Перше завдання наведеного файлу виконує dump статистики кожну хвилину. Робиться це для захисту від непередбачених вимкнень і зависань шлюзу, на якому ведеться облік трафіку, що проходить.

    Другий рядок – це такий маленький «хак», який автор статті змушений був зробити через труднощі вказівки в розкладі «останнього дня місяця» при налаштуванні завдань cron. Суть у тому, що кожен день файл /var/log/ipcad/ipcad.date зберігається поточний місяць і рік (у форматі YYYYMM). Ця ж процедура відбудеться і в останній день місяця. Вже за хвилину третє завдання зробить dump статистики у файл, до назви якого прикріпиться вміст файлу ipcad.date (тобто рік і місяць у форматі YYYYMM), і скине лічильник трафіку. У цей же день файл ipcad.date перезапишеться новими значеннями місяця і року. Не зовсім красиво, але працює.

    Тепер, коли є дані про трафік по кожному місяцю, розташовані в різних dump-файлах, можна змінити скрипт, додавши до нього можливість перегляду загальної та приватної за кожною IP-адресою статистики витраченого трафіку за якийсь певний місяць:

    traff.acc.2

    #!/bin/bash

    HOST=localhost

    USERS=/etc/hosts

    case $1 in

    M|m) echo "Summary LAN traffic of month $2 (Mbytes):"

    Rsh $HOST dump

    Awk "(s+=$4) END (print(s/1048576))"

    < /var/log/ipcad/ipcad-$2.dump

    Exit 0;;

    U|u) grep -E "192\.168\.0\."$3"([^0-9]|$)" $USERS | awk "(print($2))"

    USER=`grep -E "192\.168\.0\."$3"([^0-9]|$)" $USERS | awk "(print($2))"`

    Rsh $HOST dump

    Cat /var/log/ipcad/ipcad-$2.dump | grep -E "192\.168\.0\."$3"([^0-9]|$)"

    Echo

    Echo "Суммарний traffic of $USER in $2 month (kbytes):"

    Cat /var/log/ipcad/ipcad-$2.dump | grep -E "192\.168\.0\."$3"([^0-9]|$)" | awk "(s+=$4) END (print(s/1024))"

    Exit 0;;

    *) echo "Usage: "

    Echo "1) if only month stat:"

    Echo " ./traff.acc.2 m "

    Echo " - number of month"

    Echo "2) if user's stat for month"

    Echo "./traff.acc.2 u "

    Echo " - stat for that month"

    Echo " - last octet of user’s IP address"

    Echo "note: for current month in flag just type "curr"

    Exit 0;;

    esac

    У наведеному скрипті traff.acc.2 у змінній $USERS визначається файл, в якому є відповідність імен користувачів та їх IP-адрес (у даному прикладі – це /etc/hosts на шлюзі). Ця змінна необов'язкова і вводиться в скрипт виключно для наочності статистики, що переглядається.

    Використовувати наведений скрипт можна двома способами:

    ./traff.acc.2 m

    де семафор m означає те, що на екран необхідно вивести загальну статистику за вказаний місяць.

    ./traff.acc.2 u

    семафор u означає, що на екран необхідно вивести статистику вказаного користувача за певний місяць.

    Прапор – це шестизначний номер місяця у форматі YYYYMM – такий формат зберігання щомісячних dump-файлів вибраний у файлі завдань для cron (для виведення статистики за поточний місяць слід вказати замість номера місяця слово "curr").

    Прапор – це значення останньої октету IP-адреси користувача, чию статистику треба переглянути.

    Насамкінець статті хочу відзначити, що замість shell-скрипту можна написати скрипт на perl і, додавши елементи навігації, прикрутити сторінку з цим скриптом до httpd-сервера. Тоді статистика буде доступною для перегляду через браузер.

    14

    Я б порекомендував iptraf або iftop , якщо вам не потрібно багато функціональності. На домашній сторінці iptraf:

    IPTraf – це консольна утиліта статистики мережі для Linux. Він збирає безліч показників, таких як TCP-з'єднання та кількість байтів, статистика інтерфейсу та індикатори активності, збої трафіку TCP/UDP та кількість пакетів та байт-станцій локальної мережі. Характеристики

    • Монітор IP-трафіку, який показує інформацію про IP-трафік, що проходить через мережу. Включає інформацію про прапори TCP, кількість пакетів та байт, дані ICMP, типи пакетів OSPF.
    • Загальна та докладна статистика інтерфейсу, що показує IP, TCP, UDP, ICMP, не IP та інші IP-пакети, помилки контрольної суми IP, активність інтерфейсу, кількість пакетів.
    • Протокол TCP та UDP служби монітор, що показує лічильники вхідних та вихідних пакетів для загальних TCP та UDP портів додатків
    • Локальна мережа Модуль статистики, який виявляє активні хости та показує статистичні дані, що показують активність даних на них
    • TCP, UDP, та інші фільтри відображення протоколу, що дозволяють переглядати тільки трафік, що вас цікавить.
    • Реєстрація
    • Підтримує типи інтерфейсу Ethernet, FDDI, ISDN, SLIP, PPP та loopback.
    • Використовує вбудований інтерфейс raw socket ядра Linux, дозволяючи використовувати його на широкому діапазоні мережевих карт, що підтримуються.
    • Повноекранний режим, керований меню.

    Скріншот IPTraf головного меню:

    Це скріншот, якщо iftop:

    1

    Такі речі, як bro IDS буде аналізувати трафік, що йде через мережевий інтерфейс і записувати всілякі речі, такі як з'єднання та кількість трафіку IR, знайдені протоколи та інформацію для кожного протоколу (наприклад, HTTP-запити, надіслані листи, DNS-запити, загальні імена сертифікатів SSL...). Це не скаже вам, що це за додаток (за винятком реєстрації агентів користувача, наприклад для HTTP-браузерів). Оскільки він обнюхує пакет, він може пропустити деякі дані, якщо він не може йти в ногу з обсягом обміну даними (хоча він повідомлятиме, якщо він це робить).

    conntrackd може використовуватися для реєстрації кожного з'єднання, яке відстежується брандмауером зі станом, та обміну даними. Він буде працювати незалежно від обсягу даних, що проходять через систему, але не повідомлятиме дані, які не проходять через брандмауер, наприклад, мостовий трафік, якщо вони виключені з мережевого фільтра або raw-сокету.

    Ви також можете використовувати правила брандмауера для реєстрації трафіку за допомогою мети LOG або ULOG у комбінації з ulogd.

    Для реєстрації того, що пов'язано з підключенням pid, вам необхідно використовувати систему аудиту (auditd/audictl), але це було б дуже багато і нелегко аналізувати.

    У багатьох випадках може знадобитися відстежити навантаження на мережу, подивитися скільки даних передається та які користувачі, програми чи комп'ютери займають канал. Особливо часто такі завдання постають перед системними адміністраторами, перед якими стоїть завдання відстежувати роботу мережі компанії. Але також це може бути корисним і звичайним користувачам.

    У цій статті ми розглянемо, як виконується моніторинг мережі 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 на сервері або домашньому комп'ютері. Деякі з цих інструментів можна використовувати навіть у корпоративному середовищі. В якості альтернативи можна використовувати інструменти з веб-інтерфейсом. Деякі їх перелічені у статті . А які інструменти моніторингу ви використовуєте? Напишіть у коментарях!

    Поділіться з друзями або збережіть для себе:

    Завантаження...