NetFlow, Cisco и мониторинг трафика
Всем доброго времени суток! Разбираясь с NetFlow, таким простым, удобным и часто используемым протоколом, я осознал, что он не такой уж и простой, и подводных камней при его эксплуатации хватает.
Под катом я собрал все, что для начала необходимо знать о NetFlow и его настройках на Cisco, отдал дань eucariot, пишущему отличные статьи о сетях, и… Картинки, немного веселых картинок.
Определимся с основными понятиями
NetFlow — проприетарный открытый протокол, разработанный Cisco для мониторинга трафика в сети. Netflow предоставляет возможность анализа сетевого трафика на уровне сеансов, делая запись о каждой транзакции TCP/IP.
Архитектура системы строится на сенсоре, коллекторе и анализаторе:
— Сенсор собирает статистику по проходящему через него трафику. Сенсоры имеет смысл ставить в «узловых точках» сети, например, на граничных маршрутизаторах сегментов сети.
— Коллектор осуществляет сбор информации от сенсоров. Полученные данные он сбрасывает в файл для дальнейшей обработки. Различные коллекторы сохраняют данные в различных форматах.
— Анализатор, или система обработки, считывает эти файлы и генерирует отчеты в форме, более удобной для человека. Эта система должна быть совместима с форматом данных, предоставляемых коллектором [1]. В современных системах коллектор и анализатор часто объединены в одну систему.
Обычно коллектор и анализатор являются частями одного программного комплекса, работающего на сервере. Разновидностей ПО коллектор/анализатор множество, платные и бесплатные, под Windows и Unix-системы.
В статье я не буду затрагивать эту область, рассмотрю только принципы работы NetFlow и настройку сенсора на Cisco.
Нужно сразу уяснить — коллектор и стоящий за ним анализатор являются «пассивными» элементами системы. Сенсор шлет на коллектор отчеты о трафике, коллектор принимает, анализатор анализирует, и заполняет свою базу данных на сервере. По сути, при поднятом сервере, нам не нужно вручную подключать устройства, подпадающие под мониторинг, на сервере. Пока сенсор шлет отчеты, коллектор их принимает, анализатор регистрирует. Если сенсор выключен, он «исчезает» из текущей «он-лайн» статистики.
Описание протокола
- Адрес источника;
- Адрес назначения;
- Порт источника для UDP и TCP;
- Порт назначения для UDP и TCP;
- Тип и код сообщения для ICMP;
- Номер протокола IP;
- Сетевой интерфейс (параметр ifindex SNMP);
- IP Type of Service.
Собственно, настройка
Разберем конфигурацию сенсора при настройке на Cisco:
Router_NF# conf t
Router_NF(config)# ip flow-export destination 192.168.0.1 9996
Router_NF(config)# ip flow-export destination 10.10.0.1 9996
Router_NF(config)# ip flow-export version 9
В конфигурационном режиме указываем адреса коллектора и порты, куда отправлять статистику, указываем версию протокола NetFlow. В сложной сети можно иметь два интерфейса коллектора, если есть какие-то ограничения маршрутизации между сегментами
Указываем время, в течение которого если в существующем потоке не передаются данные, то он закрывается, и информация о нем записывается в кэш, а затем передается на коллектор
Router_NF(config)# ip flow-export source FastEthernet 0/0
Router_NF(config)# ip flow-export source vlan4
Router_NF(config)# ip flow-export source Port-channel1.2
Источники отчета о трафике, статистика будет собираться с них. На стороне анализатора будут отдельно промониторены и интерфейс, и VLAN, и Port-channel
!
ip access-list standard iacl-snmp
remark ACL for SNMP access to device
permit 192.168.0.1
permit 10.10.0.1
deny any log
!
!
snmp-server group snmp v1 access iacl-snmp
snmp-server group snmp v2c access iacl-snmp
snmp-server community ******** **** iacl-snmp
snmp-server ifindex persist
snmp-server trap-source Loopback0
snmp-server enable traps tty
!
Router_NF(config)# interface FastEthernet 0/0
Router_NF(config-if)# ip flow egress
Router_NF(config-if)# ip flow ingress
Указываем, какой трафик будет учитываться, входящий в интерфейс или исходящий из него? Если исходящий, то ip flow egress, если входящий, то ip flow ingress
Или
«ip route-cache flow» может использоваться только для основного интерфейса, а «ip flow ingress» — это расширение для использования для сабинтерфесов. Функционал NetFlow Subinterface Support позволяет включать NetFlow для каждого сабинтерфейса. В сценарии, когда ваша сеть содержит множество сабинтерфейсов, а вам необходимо собирать записи только с некоторых, вы можете тонко настроить сбор информации только с определенных сабинтерфейсов
Что можно посмотреть на сенсоре:
Информация о чемпионах, представлена категорийно, вплоть до самых посещаемых интернет — ресурсов
По основной настройке все, полезные ссылки для более полного просветления [4], [5] и [6].
Ложка дегтя
«Другой» трафик. Как известно, за многими распространенными приложениями закреплены свои порты, рассмотрим
Рисунок взят из [7].
Однако с течением времени доля трафика, попадающего в раздел «Other», растет, в связи с ростом числа приложений, использующих динамические, случайно сгенерированные порты.
В документе [8], обозревающем NetFlow, вскользь упоминается проблема, хорошо проиллюстрированная на рисунке
Конечно, хотелось бы, чтобы самый разный трафик четко описывался в отчетах, например:
Категория трафика | Порты | Протокол прикладного уровня |
25, 109, 110, 113, 143 | smtp, pop2, pop3, ident, imap | |
Web | 80, 8080, 443 | http, https |
data | 20, 21, 3306, 66, 1521, 1526, 1524 | ftp, MySQL, sqlnet, Oracle, Ingres |
Network management | 53, 137, 138, 139, 445, 161, 123, 783, 8200 | domain, netbios, snmp, ntp, spamassassin, GoToMyPC |
Interactive | 22, 23, 513, 543 | ssh, telnet, rlogin, klogin |
nntp | 119 | nntp |
Chat | 194, 6891–6901, 1863, 5050, 5190 | irc, msn messenger, yahoo messenger, ICQ |
streaming | 554, 1755, 1220, 8000–8005, 7070, 7071, 6970 | rtsp, ms-streaming, Apple quicktime, internet radio (shoutcast), Real Audio & Video |
Malware & games | 1433, 1434, 666, 1999, 31337, 12345, 12346, 20034, 1024, 1025, 31338, 31339, 3127, 27015, 27016, 26000, 27001, 27960, 3724 | Ms-sql-s, ms-sql-m, backdoor, Back Orifice, NetBus, netspy, myDoom, HalfLife, Quake, QuakeWorld, QuakeIII, WarCraft |
p2p | 411, 412, 1214, 3531, 4111, 4661–4665, 4672, 6346, 6347, 6669,6881–6889, 23302, 32285, 59049, 41170, 57990 | Direct Connect, Fasttrack, Kazaa, eDonkey, Gnutella, Napster, BitTorrent, Ares, Mp2p, Azureus |
Others | — | — |
Прогресс не стоит на месте, технологии идут вперед, и шеф получит полный отчет проблему нераспознанного трафика решают разными интересными способами, например с помощью технологии NBAR.
Во время поисков было найдено обсуждение [11] и интересная презентация [12]. Дальше в дебри не пойду, ибо юн, горяч и неопытен.
Есть мнение, что у автора поста каша в голове, и он что-то упускает!
В процессе написания статьи я, как мог, ответил на свои вопросы, и надеюсь, не поставил новых нигде не ошибся.
Спасибо за внимание!
Мониторинг домашнего роутера
Обычно попытка исправления подразумевает:
— обход членов семьи (ну да, я качаю новый сезон «Доктор Хаус». А кому это может мешать?)
— перезагрузить роутер (ну завис я, завис — сутками всякую дрянь качаете..)
— не качаются ли обновления (приятная новость — новый Acrobat Reader. )
— нет ли у нас блошек (нашему ботнету сегодня дали большое домашнее задание)
— звонок провайдеру (наш канал работает как часы с самого основания компании)
— эм. может еще раз роутер?
…
Все получится, если ваш роутер поддерживает протокол SNMP — специальный протокол для телеметрии сетевых устройств и приложений. Разбираемся по инструкции к роутеру или веб-интерфейсу, есть ли у вас поддержка SNMP. В некоторых случаях появляется при установке неофициальных прошивок. Ищем его в веб интерфейсе, включаем. Запоминаем, как называется community name — это пароль, по которому показания SNMP вашего роутера доступны в сети (по умолчанию обычно public).
Рис. 1. Здесь все просто. Или поддержка SNMP есть, или ее нет.
Чтобы не потерять много времени впустую, давайте сделаем экспресс-проверку. Скачиваем библиотеку NET-SNMP. Из директории bin выполняем команду:
public — пароль для доступа к SNMP (community name)
192.168.1.1 — ip адрес роутера
Устанавливаем MRTG. На сайте подробное руководство по установке для UNIX и Windows. Для работы под Windows требуется PERL. Наиболее распространенный бесплатный дистрибутив PERL для Windows — это ActivePerl. Отдельной инструкции для Mac не сайте видел, однако поскольку MRTG — это не более чем программа на PERL, тоже должно работать.
Короткий путь начать мониторить траффик на сетевых интерфейсах роутера — это создать конфигурационный файл MRTG командой cfgmaker. Например, мой роутер ASUS WL-500g premium имеет 8 сетевых интерфейсов, и это позволяет видеть траффик со стороны провайдера, со стороны WiFi устройств (телефон и ноутбук), со стороны рабочей станции через Ethernet
Рис. 2. Из сопоставления графиков на разных интерфейсах видно, откуда идет траффик.
Чуть сложнее мониторить нагрузку и использование памяти. Нужно иметь MIB спецификацию устройста. Если SNMP поддерживается официально, то она, скорее всего, есть на сайте производителя. Если это неофициальная прошивка, то, возможно, уже есть наработки у сообщества, которое сделало прошивку. Например, спецификация для ASUS WL-500g здесь. В моем случае OID для средней за 5 минут нагрузки на CPU .1.3.6.1.4.1.2021.10.1.5.2, используемая RAM .1.3.6.1.4.1.2021.4.6.0. При описании показаний нагрузки CPU и использования памяти в конфиге MRTG нужно с помощью опции gauge указать, что это текущие показания, а не интегральная величина, как для траффика, когда SNMP передает количество байт прошедшее через интерфейс с момента включения устройства (ну или обнуления счетчика, если долго работаем)
Рис. 3. Обычно нагрузка процессора на нуле. Она растет, когда качают несколько процессов на большой скорости. Используемая память меняется слабо.
Разумеется запускать mrtg вручную каждые 5 минут не нужно, а нужно создать задачу cron (Unix) пример:
*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg —lock-file /var/lock/mrtg/mrtg_l —confcache-file /var/lib/mrtg/mrtg.ok
Возможно, возможности вашего роутера значительно шире, и вы можете получать значительно больше информации — МАС адреса клиентов, траффик по MAC адресам, и так далее. Да поможет вам Google!
P.S. Данная заметка, разумеется, не ориентирована на специалистов по сетевой инфраструктуре. Просто я совершенно случайно открыл для себя букавы SNMP и уверен, что не одинок в этом. Возможно, кому-то это поможет при выборе нового роутера.
В комментариях открыл для себя суперпрошивку DD-WRT. Теперь вот думаю…