iftop показывает, кто прямо сейчас загружает интерфейс: таблицу пар адресов, три окна усреднения и всплески. В отличие от nethogs и bandwhich, он не ищет процесс, зато видит внешние адреса и направления даже на шлюзе. Разберём, как читать экран, ставить фильтры и снимать отчёт без ncurses.

Что именно показывает iftop

Утилита слушает трафик через libpcap и агрегирует его по парам «источник — получатель». В строке два направления: => — отправлено, <= — получено. Три числовые колонки — средняя скорость за 2, 10 и 40 секунд; по умолчанию сортировка идёт по десятисекундной.

192.0.2.15:443  =>  10.0.0.24:51234   12.4Mb  9.8Mb  7.1Mb
                <=                     640Kb   512Kb   480Kb

Внизу — суммарные значения: текущая скорость, пик за 40 секунд и общий объём с момента запуска. Пик отправки и пик приёма могли случиться в разные моменты, поэтому их сумма не обязана совпадать с пиком total. Это не ошибка.

Установка и права

Пакет есть во всех основных дистрибутивах. Запуск требует прав на захват пакетов: либо sudo, либо файловые capabilities. Второй вариант удобнее для регулярной диагностики, но даёт бинарнику широкие полномочия — обновляйте пакет осознанно.

sudo apt install iftop
sudo setcap cap_net_raw,cap_net_admin+eip /usr/sbin/iftop
getcap /usr/sbin/iftop
iftop -h

Если getcap ничего не выводит, capabilities не применились. После обновления пакета их стоит проверить снова. На сервере, где менять права бинарника не хочется, запускайте утилиту через sudo с явно указанным интерфейсом.

Чтение экрана

Первый запуск лучше делать с явным интерфейсом и без DNS: обратные запросы на загруженном канале искажают картину и добавляют трафик. Ключи -n и -N отключают имена хостов и сервисов, -P показывает порты.

ip -br addr
sudo iftop -i enp3s0 -n -N -P

Если имя интерфейса неизвестно, ip -br addr покажет список. Для беспроводного адаптера имя обычно начинается с wlan или wl. На мосту смотрите интерфейс моста, а не отдельный порт: иначе часть трафика не попадёт в учёт.

На шлюзе включите -p, чтобы видеть трафик между другими хостами, но помните: на коммутируемой сети чужие пакеты до вас не дойдут, а на Wi-Fi режим promiscuous часто ограничен драйвером. Для честного анализа проброса используйте зеркалирование порта на коммутаторе, а не надейтесь на один флаг.

Фильтры BPF

Фильтр задаётся синтаксисом BPF, как у tcpdump, и применяется на этапе захвата. Это важное отличие от экранного фильтра: отфильтрованные пакеты не учитываются и в итогах. Опция -F задаёт границу сети, относительно которой определяется направление.

sudo iftop -i enp3s0 -f "tcp port 443"
sudo iftop -i enp3s0 -f "not port 22 and not port 53"
sudo iftop -i br0 -F 192.168.1.0/24

Для IPv6 есть -G 2001:db8::/32. Несколько условий объединяются через and, or и not; сложные выражения берите в кавычки. Если фильтр меняется на ходу клавишей f, подождите до 40 секунд: старые пары остаются в окне усреднения.

Горячие клавиши

Клавиши помогают быстро сузить картину, не перезапуская утилиту.

  • t переключает режим строки: два направления или одно;
  • 1, 2, 3 сортируют по 2, 10 и 40 секундам;
  • s и d агрегируют по источнику и получателю;
  • S и D показывают порты, p включает их полностью;
  • l фильтрует по имени хоста на экране, не влияя на захват;
  • b убирает графики, B переключает биты и байты;
  • P ставит экран на паузу, j и k листают список.

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

Текстовый режим и журнал

Для отчёта нужен текстовый режим. Он печатает один снимок в stdout и завершается, поэтому его можно направить в файл или в journal. Опция -s задаёт длительность, -L — число строк.

sudo iftop -t -s 30 -n -N -L 20 -i enp3s0 \
  > /var/tmp/iftop-$(date +%F-%H%M).txt
sudo iftop -t -s 10 -n -o 40s -L 0 -i enp3s0

Значение -L 0 в некоторых сборках означает «без ограничения», но поведение зависит от версии. Проверьте вывод на тестовом запуске, прежде чем полагаться на него в автоматизации. Для постоянного мониторинга iftop не предназначен: у него нет базы и алертов, только текущее окно. Если снимки нужны регулярно, складывайте их в отдельный каталог и настройте ротацию, иначе файлы быстро займут диск.

Файл настроек

Постоянные параметры хранятся в ~/.iftoprc. Командная строка перекрывает файл, поэтому временные эксперименты не ломают настройки.

interface: enp3s0
dns-resolution: no
port-resolution: no
port-display: on
sort: 10s
show-totals: yes
max-bandwidth: 100M

max-bandwidth фиксирует верхнюю границу шкалы и делает графики сопоставимыми между запусками. Значение всегда указывается в битах, даже если включён режим байтов. Директива screen-filter задаёт регулярное выражение для экрана.

Диагностика

Типичная ошибка — искать в iftop процесс. Утилита знает только адреса и порты. Чтобы найти владельца соединения, сопоставьте порт с сокетом через ss, а для трафика по процессам используйте nethogs или bandwhich.

sudo ss -tunp | grep 51234
sudo ss -tunp state established '( sport = :443 )'
sudo conntrack -L 2>/dev/null | head
  • пустой экран: не тот интерфейс или слишком узкий фильтр;
  • одна и та же пара в двух строках: разные порты, включите p;
  • суммы не сходятся: активен экранный фильтр или заморожен порядок;
  • на Wi-Fi чужие пакеты не видны: коммутатор и драйвер не отдают их без promiscuous-режима;
  • учёт расходится с провайдером: считаются заголовки, повторы и служебный трафик.

Если канал занят, сначала снимите тридцатисекундный снимок, затем сузьте фильтр по порту или подсети и только после этого ищите процесс. Такой порядок экономит время и не требует останавливать сервис.

Итог

iftop остаётся быстрым способом увидеть, кто именно занимает канал: пары адресов, направления и три окна усреднения. Запускайте его с -n -N, используйте BPF-фильтры и текстовый режим для отчётов, а для поиска процесса добавляйте ss или nethogs. Помните, что это инструмент разовой диагностики, а не система учёта трафика.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте