IPTraf-ng — инструмент мониторинга сети для Linux
IPTraf-ng – это консольная программа мониторинга сетевой статистики Linux, которая показывает информацию об IP-трафике, включая следующую информацию:
- Текущие соединения TCP
- UDP, ICMP, OSPF и другие типы IP-пакетов
- Счетчик пакетов и байтов в соединениях TCP
- IP, TCP, UDP, ICMP, не-IP и другие счетчики пакетов и байтов
- Подсчет TCP/UDP по портам
- Подсчет пакетов по размерам
- Подсчет пакетов и байтов по IP-адресу
- Активность интерфейса
- Статусы флагов TCP-пакетов
- Статистика станций локальной сети
Утилита IPTraf-ng может быть использована для определения типа трафика в вашей сети, а также того, какие службы наиболее активно используются в каких системах, среди
В этой статье вы узнаете, как установить и использовать утилиту сетевой статистики IPTraf-ng в системах Linux.
Установка IPTraf-ng в Linux
IPTraf-ng является частью дистрибутива Linux и может быть установлен командой yum из терминала.
Под менеджером пакетов apt, как показано.
$ sudo apt install iptraf-ng
Использование IPTraf-ng в Linux
После установки iptraf-ng выполните следующую команду из терминала, чтобы запустить интерфейс меню на основе ascii, который позволит вам просматривать текущий мониторинг IP-трафика
Все права защищены. © Linux-Console.net • 2019-2023
Простая утилита учета трафика по портам
Есть ли простенькая утилита, считающая трафик по интерфейсу, которую можно настроить так, чтобы она выдавала отдельные подсчеты по выбранным портам?
Например, отдельно для 80, 25, 110 и др. портам.
Нужна простая консольная утилита, поэтому монстры вроде MRTG не годятся.
Пользуюсь vnstat, работает весьма надежно, но деления по портам в ней увы, нет.
iptables считает трафик по каждому правилу. Добавь правило и смотри на счетчики
Поддерживаю, причем любое правило какое сам придумаешь, в свое время так и считал трафик, засовывая его в мускул и предьявляя в веб морде, да он и сейчас так считается, только никому это уже не надо… анлим, но бывает полезно самому.
ipt_netflow и nfdump. Потом можно результат смотреть как угодно. Сверху можно ещё nfsen взгромоздить, но это уже web.
AS ★★★★★ ( 18.01.20 20:29:36 MSK )
Последнее исправление: AS 18.01.20 20:30:38 MSK (всего исправлений: 1)
Хорошо, а получится ли с помощью iptables или ipt_netflow или nfdump отправлять статистику по выбранным портам по email, как здесь — https://poplinux.ru/node/6269 ?
Оно да, проверил, реально работает, но как уже говорил, vnstat статистику на порты не делит.
Хорошо, а получится ли с помощью iptables или ipt_netflow или nfdump отправлять статистику по выбранным портам по email
nfcapd (из пакета nfdump) сохранит в файл то, что ему пришлёт netflow-сенсор (не важно какой на самом деле, просто ipt_netflow самый быстрый из доступного в Linux, а так можно и ulog например). А дальше уж как сам обработаешь. nfsen умеет строить по этим данным любые картинки посредством rrdtool и в соответствующем стиле, можно код посмотреть. Либо отчёт в текстовом виде посредством nfdump и всё это слать посредством обычного mail.
AS ★★★★★ ( 18.01.20 22:09:43 MSK )
Последнее исправление: AS 18.01.20 22:16:04 MSK (всего исправлений: 1)
Идея вроде понятна. А можно какой-нибудь простенький работоспособный набросок, чобы потом его приспособить?
А можно какой-нибудь простенький работоспособный набросок, чобы потом его приспособить?
Меня картинки не особо интересуют, так что у меня набросков про картинки нет. А nfdump — там man подробный достаточно. Задаёшь диапазон времени и фильтр, фильтр в стиле tcpdump.
Картинки в данный момент тоже не интересуют, консольный выхлоп нужен 🙂
А картинки потом сам прикручу.
Картинки в данный момент тоже не интересуют, консольный выхлоп нужен 🙂
nfdump -O tstart -o line -N -a -R . -t 2020/01/19.22:00:00-2020/01/19.22:10:59 "src port 80 and dst host 192.168.7.89"
Date first seen Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows 2020-01-19 22:10:54.698 0.292 6 x.x.53.156:80 -> 192.168.7.89:37833 3 647 1 2020-01-19 22:10:54.823 0.162 6 x.x.248.233:80 -> 192.168.7.89:33578 5 2363 1 2020-01-19 22:10:54.854 0.122 6 x.x.38.59:80 -> 192.168.7.89:48403 5 708 1
Summary: total flows: 68, total bytes: 133631563, total packets: 89814, avg bps: 2255204, avg pps: 189, avg bpp: 1487 Time window: 2020-01-19 21:54:52 - 2020-01-19 22:19:58 Total flows processed: 2409960, Blocks skipped: 0, Bytes read: 134959536 Sys: 12.357s flows/second: 195020.5 Wall: 12.354s flows/second: 195062.0
Мониторинг (измерение) потребляемого траффика в Linux
Однажды мне потребовалось измерить количество трафика, которое «пожирает» некоторое приложение. Один из способов такого измерения — это установить прокси. Но что, если не хочется ставить прокси-сервер. Мне вот не хотелось. В поисках других способов я сначала перерыл Хабр, потом интернет. Так как я в своё время потратил на это много времени, то сейчас я создаю эту заметку, чтобы у других такой проблемы не возникло.
ВАЖНО:
Этот метод работает, если мы знаем по какому адресу (адресам) обращается наше приложение, или же с какого/каких портов.
Пошаговая инструкция
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[10].contains("195.24.") || s[12].contains("195.24.")) < //"from" and "to" traffic += new Long(s[7]); if(s.length>16) traffic += new Long(s[17]); > > 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!"); > >
Этот вариант хорошо работает, когда вы постоянно пишите логи, а потом уже надо «что-то там» измерить. Просто нужно написать/сконфигурировать парсер именно так, как необходимо в конкретной ситуации, и тогда можно получить все необходимые данные.
Возможно, это не лучший вариант (хоть и работающий). Есть множество других вариантов:
http://help.ubuntu.ru/.
http://iptraf.seul.org/2.7/filters.html
И так далее.