Назад | Перейти на главную страницу

Как показать трафик в реальном времени на каждом виртуальном сетевом интерфейсе?

У меня есть выделенный сервер с несколькими виртуальными сетевыми интерфейсами, каждый из которых привязан к общедоступному IP-адресу. Как я могу отслеживать трафик в реальном времени (в пакетах / с или Мб / с) каждого из них, в идеале на одном экране?

Я ищу что-то вроде:

eth0:0 123 packets/s
eth0:1 234 packets/s
eth0:2 345 packets/s

Я попытался iptraf, iftop, jnettop, но мне не удалось заставить ни одного из них сгруппировать дисплей по виртуальному интерфейсу: все они показывают весь eth0.

Обратите внимание, что я открыт для других инструментов, если они доступны в CentOS (+ EPEL / remi).

В данном случае аппаратный подход не является решением, поскольку ядро ​​не рассматривает «виртуальное сетевое устройство» как отдельное устройство. Технически «виртуальное сетевое устройство» - это просто ярлык на определенном IP-адресе. Взглянув на вывод ip addr становится ясно, что настоящего «устройства» нет, даже если оно указано как отдельный блок устройства при проверке ifconfig вывод. Страница руководства ip-address также показывает, что это считается «этикеткой». С помощью ip addr для настройки такой конфигурации необходимо использовать label вариант.

Практически все инструменты командной строки для визуализации трафика в реальном времени зависят от netlink протокол (например, см. ip net link) или прочтите данные интерфейса из /proc/net/dev. Поскольку в обоих случаях виртуальные устройства не указаны в списке, получить такие утилиты для отображения информации так, как вам нужно, будет невозможно.

Следовательно (в рамках текущей настройки сети) возможно использовать только socket основанная на информации ip основанные фильтры / группировки для визуализации данных по запросу.

ntopng например, это был бы способ визуализировать данные соединения на основе сокетов в реальном времени. Он также должен обеспечивать гибкость, позволяющую делать это для нескольких IP-адресов на одном экране. Тем не менее, это веб-интерфейс пользователя, который нельзя использовать в командной строке. Для RHEL / CentOS он доступен в отдельном ntopng (http://packages.ntop.org/centos/) репозиторий и потребности epel.

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

Статистика iptables (iptables -vL) реализует подсчет пакетов в каждом правиле. Вы можете установить разные правила на основе IP во входных и выходных цепочках, чтобы разрешить весь трафик с источником или получателем для каждого из IP-адресов ваших виртуальных IP-адресов.
/sbin/iptables -A INPUT -d XXX.XXX.XXX.XXX -j ACCEPT /sbin/iptables -A INPUT -d YYY.YYY.YYY.YYY -j ACCEPT /sbin/iptables -A OUTPUT -s XXX.XXX.XXX.XXX -j ACCEPT /sbin/iptables -A OUTPUT -s YYY.YYY.YYY.YYY -j ACCEPT

В любом случае я бы предложил использовать разные VLAN (eth0.tag1, eth0.tag2, ..., вместо eth0: 1, eth0: 2), так как при правильной конфигурации сети статистика будет доступна, помимо сервера Linux, в сетевые устройства.

Для быстрого обзора вы можете использовать dstat -f -n. Вы также можете указать индивидуальный сетевой интерфейс для мониторинга (с -N флаг). Ты можешь читать dstat здесь.

Observium - великолепный инструмент с открытым исходным кодом, который я буду рекомендовать снова и снова. Это не только для больших установок, но и для небольших, подобных этой. Как только вы дадите время для сбора, он даст полу-реальное время и исторический.

http://www.observium.org

Виртуальные интерфейсы моста и мосты мониторинга