У меня есть выделенный сервер с несколькими виртуальными сетевыми интерфейсами, каждый из которых привязан к общедоступному 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 - великолепный инструмент с открытым исходным кодом, который я буду рекомендовать снова и снова. Это не только для больших установок, но и для небольших, подобных этой. Как только вы дадите время для сбора, он даст полу-реальное время и исторический.
Виртуальные интерфейсы моста и мосты мониторинга