Отслеживать объем сетевого трафика через интерфейс.

Вопрос или проблема

Есть ли способ мониторинга трафика (например, получить живой просмотр использования) через определенный сетевой интерфейс, например eth0?

Здесь ловушка в том, что набор инструментов на коробке фиксирован, и это практически стандартная установка RHEL, поэтому нельзя использовать дополнительные инструменты.

Ищу что-то простое и обычно присутствующее, как iostat здесь.

Данные, которые вы хотите увидеть, отображаются в старом добром ifconfig.

watch ifconfig eth0

или чтобы вещи выглядели лучше:

watch -n 1 -d ifconfig eth0

Я использую команду iftop. Она показывает статистику в реальном времени.

iftop -i eth0

Посмотрите некоторые скриншоты здесь:

http://www.thegeekstuff.com/2008/12/iftop-guide-display-network-interface-bandwidth-usage-on-linux/

на linux после 2015 года может быть лучше

watch -n1 -d ip -s link show [интерфейс]

function humanValue()
{
    h=( '' K M G T P )
    i=1; v=$(( $1 * 8 ))
    while [ $v -gt $(( 1 << 10 * i )) ]; do let i++; done;
    echo -n "$(( $v >> 10 * --i )) ${h[i]}b/s";
}
ifaces=$(ip addr | grep -E "^[0-9]:" | cut -d" " -f2 | tr -d \:)
declare -A RX2 TX2;
while sleep 1; 
do
    date 
    for INTERFACE in $ifaces;
    do
        RX1=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
        TX1=$(cat /sys/class/net/${INTERFACE}/statistics/tx_bytes)
        DOWN=$(( RX1 - RX2[$INTERFACE] ))
        UP=$(( TX1 - TX2[$INTERFACE] ))
        RX2[$INTERFACE]=$RX1; TX2[$INTERFACE]=$TX1
        echo -e "[ $INTERFACE:\tRX: $(humanValue $DOWN)\t|\tTX: $(humanValue $UP) ]"
    done;
done;

вывод что-то вроде (раз в секунду):

вс 23 фев 2025 13:44:45 -03
[ lo:   RX: 816 Mb/s    |   TX: 816 Mb/s ]
[ enp4s0:   RX: 0 b/s   |   TX: 0 b/s ]
[ wlo1: RX: 45 Gb/s |   TX: 2 Gb/s ]

Другой способ:

nf="numfmt --to=iec"; p(){ $nf < $a/$c/statistics/${1}_bytes; };a=/sys/class/net; for b in $a/*; do c=$(basename $b); echo -e "$c\t$(p tx)\t$(p rx)"; done

выводит интерфейс rx tx как:

enp4s0  0       0
lo      103M    103M
wlo1    362M    5,7G

Без установки новых инструментов:

while ifconfig eth0 | grep 'RX bytes'; do sleep 10; done

Существует множество утилит:

  1. Nethogs
  2. iptraf
  3. Iptables могут быть хорошим решением, но если у вас установлен брандмауэр, будет немного сложно корректно переместить правила

Вы также можете использовать iptables для выполнения такой задачи:

iptables -A INPUT -p tcp --dport $port -i eth0

и

iptables -A OUTPUT -p tcp --sport $port -i eth0

Затем iptables -L -n -v покажет, сколько пакетов прошло через интерфейс, iptables -Z чтобы сбросить этот счетчик

Посмотрите на ntop. Он предоставляет много подробной информации.

Вы можете использовать

netstat -w8 -h -i eth0

Который будет отображать биты/с и вход/выход. -w8 Ждать 8 секунд, -h преобразует вывод в удобочитаемые числа. Работает в Linux/FreeBSD.

.

Ответ или решение

Мониторинг трафика сети через конкретный сетевой интерфейс, например, eth0, — это важная задача для системных администраторов и специалистов по сетевой безопасности. В условиях, когда набор инструментов ограничен стандартной поставкой RHEL и установка дополнительных утилит невозможна, приходится полагаться на встроенные средства. Рассмотрим разные подходы и утилиты, которые могут помочь в этой задаче, и как их правильно использовать.

Теория

В стандартной поставке RHEL часто присутствуют такие инструменты, как ifconfig, ip, netstat и iptables, которые могут помочь в мониторинге сетевого трафика. Эти утилиты обеспечивают доступ к статистике сетевых интерфейсов и позволяют получать информацию о передаче и приёме данных, что важно для понимания текущей нагрузки на систему. Каждый из этих инструментов имеет свои особенности и предназначен для различных применений.

  1. ifconfig: Этот инструмент можно использовать для отображения конфигурации сети и просмотра количественных показателей передачи и приёма данных в байтах. Несмотря на то, что ifconfig считается устаревшим инструментом и рекомендовано использовать ip вместо него, он все еще присутствует в большинстве дистрибутивов Linux.

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

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

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

Примеры

  1. Использование ifconfig через watch:

    watch -n 1 -d ifconfig eth0

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

  2. Использование команды ip:

    watch -n1 -d ip -s link show eth0

    Команда ip -s link show eth0 выдает статистику передачи и приёма данных в более современном и структурированном формате.

  3. Использование netstat:

    netstat -w8 -h -i eth0

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

  4. Использование iptables для отслеживания пакетов на порту:

    iptables -A INPUT -p tcp --dport $port -i eth0
    iptables -A OUTPUT -p tcp --sport $port -i eth0

    Эти правила позволяют отслеживать количество пакетов, проходящих через интерфейс eth0 на конкретном порту.

Применение

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

  1. Автоматизация: Использование bash-скриптов для автоматического сбора и записи данных в лог-файлы. Пример простого скрипта:

    while ifconfig eth0 | grep 'RX bytes'; do sleep 10; done

    Этот скрипт каждую секунду выводит количество переданных и полученных байт.

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

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

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

Оцените материал
Добавить комментарий

Капча загружается...