Вопрос или проблема
Есть ли способ мониторинга трафика (например, получить живой просмотр использования) через определенный сетевой интерфейс, например 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
Существует множество утилит:
- Nethogs
- iptraf
- 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
, которые могут помочь в мониторинге сетевого трафика. Эти утилиты обеспечивают доступ к статистике сетевых интерфейсов и позволяют получать информацию о передаче и приёме данных, что важно для понимания текущей нагрузки на систему. Каждый из этих инструментов имеет свои особенности и предназначен для различных применений.
-
ifconfig: Этот инструмент можно использовать для отображения конфигурации сети и просмотра количественных показателей передачи и приёма данных в байтах. Несмотря на то, что
ifconfig
считается устаревшим инструментом и рекомендовано использоватьip
вместо него, он все еще присутствует в большинстве дистрибутивов Linux. -
ip: Это более современный и многофункциональный инструмент, заменяющий
ifconfig
. Он предоставляет более детализированное и гибкое управление конфигурацией сети, включая возможность мониторинга сетевых интерфейсов. -
netstat: Утилита для просмотра сетевых соединений, таблиц маршрутизации, статистики интерфейсов и других данных о сети.
-
iptables: Хотя
iptables
в первую очередь используется для управления правилами фильтрации пакетов, он также может быть использован для подсчета количества пакетов, проходящих через интерфейс.
Примеры
-
Использование ifconfig через watch:
watch -n 1 -d ifconfig eth0
Эта команда позволяет отслеживать изменения в статистике интерфейса eth0 в режиме реального времени, обновляя данные каждую секунду.
-
Использование команды ip:
watch -n1 -d ip -s link show eth0
Команда
ip -s link show eth0
выдает статистику передачи и приёма данных в более современном и структурированном формате. -
Использование netstat:
netstat -w8 -h -i eth0
Эта команда каждые восемь секунд выводит количество бит в секунду для каждого интерфейса, что удобно для периодического мониторинга без большого количества лишних данных.
-
Использование iptables для отслеживания пакетов на порту:
iptables -A INPUT -p tcp --dport $port -i eth0 iptables -A OUTPUT -p tcp --sport $port -i eth0
Эти правила позволяют отслеживать количество пакетов, проходящих через интерфейс eth0 на конкретном порту.
Применение
После выбора подходящего инструмента необходимо корректно его интегрировать в рабочий процесс. Это может включать написание скриптов для автоматизации запуска и анализа данных или использование совместно с другими инструментами мониторинга для создания более полной картины сетевой активности.
-
Автоматизация: Использование bash-скриптов для автоматического сбора и записи данных в лог-файлы. Пример простого скрипта:
while ifconfig eth0 | grep 'RX bytes'; do sleep 10; done
Этот скрипт каждую секунду выводит количество переданных и полученных байт.
-
Визуализация: Данные, собранные с помощью перечисленных инструментов, можно визуализировать с помощью таких инструментов, как gnuplot или matplotlib для анализа тенденций в сетевом трафике с течением времени.
-
Настройка оповещений: Настроить системные предупреждения, которые будут срабатывать в случае превышения определенных пороговых значений для трафика, что может быть индикатором аномальной активности или перегрузки сети.
В заключение, даже при ограниченных ресурсах встроенные инструменты Linux предоставляют широкие возможности для мониторинга сетевого трафика. Правильное использование этих инструментов позволяет эффективно управлять нагрузкой на сеть и обеспечивать бесперебойную работу систем, что крайне важно для любого предприятия.