Flow Accounting - Учет сетевых потоков
Flow Accounting - Учет сетевых потоков
Введение
Flow Accounting (учет сетевых потоков) - это механизм мониторинга и анализа сетевого трафика, позволяющий собирать статистику о потоках данных, проходящих через маршрутизатор. VyOS поддерживает несколько протоколов экспорта потоков: NetFlow (версии 5, 9, 10), IPFIX и sFlow.
Основные компоненты
Flow Accounting состоит из трех основных компонентов:
- Exporter (Экспортер) - VyOS-маршрутизатор, который собирает информацию о пакетах и агрегирует их в потоки
- Collector (Коллектор) - сервер, который принимает и сохраняет данные о потоках
- Application (Приложение) - программное обеспечение для анализа и визуализации данных о потоках
Поддерживаемые протоколы
- NetFlow v5 - классическая версия, поддерживает только IPv4
- NetFlow v9 - расширенная версия с поддержкой шаблонов и IPv6
- NetFlow v10 (IPFIX) - стандартизированная версия NetFlow, RFC 7011
- sFlow - технология семплирования пакетов (не рассматривается в данном документе)
Базовая конфигурация
Включение Flow Accounting на интерфейсах
Flow Accounting необходимо явно включить на каждом интерфейсе, где требуется мониторинг трафика:
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting interface eth2Настройка коллектора NetFlow
Минимальная конфигурация для экспорта потоков на коллектор:
# Настройка коллектора
set system flow-accounting netflow server 192.168.100.50 port 2055
# Выбор версии NetFlow
set system flow-accounting netflow version 9
# Указание исходного адреса для пакетов NetFlow
set system flow-accounting netflow source-address 192.168.0.1NetFlow версия 5
NetFlow v5 - наиболее широко поддерживаемая версия, но ограничена только IPv4 трафиком.
Полная конфигурация NetFlow v5
# Включение интерфейсов
set system flow-accounting interface eth0
set system flow-accounting interface eth1
# Настройка NetFlow v5
set system flow-accounting netflow version 5
set system flow-accounting netflow server 192.168.100.50 port 2055
set system flow-accounting netflow source-address 192.168.0.1
# Настройка Engine ID (идентификатор маршрутизатора)
set system flow-accounting netflow engine-id 1
# Настройка таймаутов
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout flow-generic 3600
set system flow-accounting netflow timeout tcp-generic 3600
set system flow-accounting netflow timeout tcp-fin 300
set system flow-accounting netflow timeout tcp-rst 120
set system flow-accounting netflow timeout udp 300
# Ограничение максимального количества отслеживаемых потоков
set system flow-accounting netflow max-flows 10000
# Применение конфигурации
commit
saveПараметры NetFlow v5
- engine-id - уникальный идентификатор маршрутизатора (0-255)
- timeout expiry-interval - интервал экспорта потоков в секундах (0-2147483647)
- timeout flow-generic - таймаут для обычных потоков в секундах
- timeout tcp-generic - таймаут для TCP-соединений
- timeout tcp-fin - таймаут для TCP-соединений с флагом FIN
- timeout tcp-rst - таймаут для TCP-соединений с флагом RST
- timeout udp - таймаут для UDP-потоков
- max-flows - максимальное количество одновременно отслеживаемых потоков
NetFlow версия 9
NetFlow v9 поддерживает шаблоны, IPv6 и расширенные метаданные.
Конфигурация NetFlow v9
# Включение интерфейсов
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting interface eth2
# Настройка NetFlow v9
set system flow-accounting netflow version 9
set system flow-accounting netflow server 192.168.100.50 port 2055
set system flow-accounting netflow source-address 192.168.0.1
# Настройка частоты обновления шаблонов
set system flow-accounting netflow timeout template 60
# Настройка таймаутов
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout flow-generic 3600
# Применение конфигурации
commit
saveДополнительные параметры NetFlow v9
- timeout template - интервал отправки шаблонов в секундах (1-86400)
IPFIX (NetFlow v10)
IPFIX - это стандартизированная версия NetFlow, определенная в RFC 7011. Является рекомендуемой версией для новых развертываний.
Конфигурация IPFIX
# Включение интерфейсов
set system flow-accounting interface eth0
set system flow-accounting interface eth1
# Настройка IPFIX (NetFlow v10)
set system flow-accounting netflow version 10
set system flow-accounting netflow server 192.168.100.50 port 4739
set system flow-accounting netflow source-address 192.168.0.1
# Настройка таймаутов
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout flow-generic 3600
set system flow-accounting netflow timeout tcp-generic 3600
set system flow-accounting netflow timeout tcp-fin 300
set system flow-accounting netflow timeout tcp-rst 120
set system flow-accounting netflow timeout udp 300
# Применение конфигурации
commit
saveСтандартные порты
- NetFlow v5/v9: обычно используется порт 2055 (UDP)
- IPFIX: стандартный порт 4739 (UDP)
Sampling Rate (Частота семплирования)
Семплирование позволяет снизить нагрузку на маршрутизатор, анализируя только каждый N-й пакет.
Настройка семплирования
# Анализировать каждый 100-й пакет
set system flow-accounting netflow sampling-rate 100
# Анализировать каждый 1000-й пакет (для высоконагруженных сетей)
set system flow-accounting netflow sampling-rate 1000
# Анализировать каждый 10-й пакет (для малых сетей)
set system flow-accounting netflow sampling-rate 10Рекомендации по семплированию
| Нагрузка сети | Рекомендуемый sampling-rate | Точность |
|---|---|---|
| < 100 Mbps | 10-50 | Высокая |
| 100-500 Mbps | 100-200 | Средняя |
| 500 Mbps - 1 Gbps | 500-1000 | Базовая |
| > 1 Gbps | 1000-5000 | Обзорная |
Важно: Без семплирования (sampling-rate 1) каждый пакет анализируется, что может привести к высокой нагрузке на CPU при большом объеме трафика.
Настройка нескольких коллекторов
VyOS поддерживает экспорт потоков на несколько коллекторов одновременно для обеспечения отказоустойчивости.
Конфигурация с несколькими коллекторами
# Основной коллектор
set system flow-accounting netflow server 192.168.100.50 port 2055
# Резервный коллектор
set system flow-accounting netflow server 192.168.100.51 port 2055
# Коллектор в другом дата-центре
set system flow-accounting netflow server 10.200.50.10 port 2055
commit
saveAggregation (Агрегация)
Агрегация позволяет объединять потоки по определенным критериям для уменьшения объема экспортируемых данных.
Настройка агрегации
# Агрегация по исходному AS (Autonomous System)
set system flow-accounting netflow aggregation source-as
# Агрегация по целевому AS
set system flow-accounting netflow aggregation destination-as
# Агрегация по префиксам источника
set system flow-accounting netflow aggregation source-prefix
# Агрегация по префиксам назначения
set system flow-accounting netflow aggregation destination-prefix
# Агрегация по портам протоколов
set system flow-accounting netflow aggregation protocol-port
commit
saveТипы агрегации
- source-as - группировка по исходной автономной системе
- destination-as - группировка по целевой автономной системе
- source-prefix - группировка по префиксу источника
- destination-prefix - группировка по префиксу назначения
- protocol-port - группировка по протоколу и порту
In-Memory Flow Table (не рекомендуется для продакшена)
VyOS может сохранять потоки в таблице в памяти для локального просмотра.
Настройка локальной таблицы
# ВНИМАНИЕ: Не рекомендуется для продакшена!
set system flow-accounting buffer-size 10485760 # 10 MB
commit
saveПредупреждение: Использование локальной таблицы потоков может привести к:
- Повышенной нагрузке на CPU
- Нестабильной работе маршрутизатора
- Переполнению памяти при высокой нагрузке
Рекомендуется использовать внешние коллекторы вместо локальной таблицы.
Пример для Yandex Cloud
Экспорт NetFlow в систему мониторинга Yandex Cloud
# Конфигурация VyOS в Yandex Cloud
configure
# Включение Flow Accounting на внешнем и внутреннем интерфейсах
set system flow-accounting interface eth0 # Внешний интерфейс
set system flow-accounting interface eth1 # Внутренний интерфейс (подсети в VPC)
# Настройка IPFIX для экспорта в коллектор в Yandex Cloud
set system flow-accounting netflow version 10
set system flow-accounting netflow server 10.128.0.50 port 4739
set system flow-accounting netflow source-address 10.128.0.1
# Семплирование для оптимизации нагрузки
set system flow-accounting netflow sampling-rate 200
# Настройка таймаутов
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout flow-generic 3600
set system flow-accounting netflow timeout tcp-generic 3600
set system flow-accounting netflow timeout tcp-fin 300
set system flow-accounting netflow timeout tcp-rst 120
set system flow-accounting netflow timeout udp 300
# Ограничение количества потоков
set system flow-accounting netflow max-flows 50000
# Резервный коллектор в другой зоне доступности
set system flow-accounting netflow server 10.129.0.50 port 4739
commit
save
exitИнтеграция с Yandex Monitoring
Для интеграции с Yandex Monitoring можно использовать следующие коллекторы:
- ntopng - развернутый на VM в Yandex Compute Cloud
- ElastiFlow - на базе Elasticsearch в Yandex Managed Service for Elasticsearch
- Grafana + ClickHouse - для долгосрочного хранения и анализа
Пример установки ntopng на Ubuntu в Yandex Cloud:
# На коллекторе в Yandex Cloud
sudo apt-get update
sudo apt-get install software-properties-common wget
sudo add-apt-repository universe
wget https://packages.ntop.org/apt/ntop.key
sudo apt-key add ntop.key
echo "deb https://packages.ntop.org/apt/stable/ $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/ntop-stable.list
sudo apt-get update
sudo apt-get install ntopng nprobe
# Настройка nProbe для приема NetFlow/IPFIX
sudo nano /etc/nprobe/nprobe.confКонфигурация nProbe:
--zmq=tcp://127.0.0.1:5556
--collector-port=4739
--collector-protocol=ipfix
-i=noneКонфигурация ntopng:
--zmq=tcp://127.0.0.1:5556
-i=tcp://127.0.0.1:5556Пример для VK Cloud
IPFIX для анализа трафика в VK Cloud
# Конфигурация VyOS в VK Cloud
configure
# Включение Flow Accounting на всех активных интерфейсах
set system flow-accounting interface eth0 # Внешний интерфейс (ext-net)
set system flow-accounting interface eth1 # Внутренний интерфейс (private network)
set system flow-accounting interface eth2 # DMZ интерфейс
# Настройка IPFIX
set system flow-accounting netflow version 10
set system flow-accounting netflow server 10.0.10.100 port 4739
set system flow-accounting netflow source-address 10.0.10.1
# Умеренное семплирование для баланса точности и производительности
set system flow-accounting netflow sampling-rate 100
# Настройка Engine ID (уникальный ID маршрутизатора)
set system flow-accounting netflow engine-id 10
# Таймауты для различных типов потоков
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout flow-generic 3600
set system flow-accounting netflow timeout tcp-generic 3600
set system flow-accounting netflow timeout tcp-fin 300
set system flow-accounting netflow timeout tcp-rst 120
set system flow-accounting netflow timeout udp 300
set system flow-accounting netflow timeout icmp 300
# Максимальное количество отслеживаемых потоков
set system flow-accounting netflow max-flows 100000
# Агрегация по протоколам и портам для упрощения анализа
set system flow-accounting netflow aggregation protocol-port
# Резервный коллектор
set system flow-accounting netflow server 10.0.20.100 port 4739
commit
save
exitИспользование ElastiFlow в VK Cloud
ElastiFlow - популярное решение для анализа NetFlow/IPFIX на базе Elastic Stack.
Установка ElastiFlow на VM в VK Cloud:
# Установка Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Создание docker-compose.yml для ElastiFlow
mkdir elastiflow && cd elastiflow
nano docker-compose.ymlПример docker-compose.yml:
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
ports:
- "9200:9200"
volumes:
- esdata:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:7.17.0
container_name: kibana
ports:
- "5601:5601"
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
elastiflow:
image: robcowart/elastiflow-logstash-oss:4.0.1
container_name: elastiflow
network_mode: host
environment:
- ELASTIFLOW_ES_HOST=127.0.0.1:9200
- ELASTIFLOW_NETFLOW_IPV4_PORT=2055
- ELASTIFLOW_SFLOW_IPV4_PORT=6343
- ELASTIFLOW_IPFIX_TCP_IPV4_PORT=4739
volumes:
esdata:Запуск ElastiFlow:
sudo docker-compose up -dПосле запуска Kibana будет доступна по адресу: http://<VM_IP>:5601
Мультиинтерфейсная конфигурация
Селективный мониторинг интерфейсов
configure
# Мониторинг только внешних интерфейсов
set system flow-accounting interface eth0 # WAN1
set system flow-accounting interface eth1 # WAN2
# Исключаем внутренние интерфейсы для снижения нагрузки
# set system flow-accounting interface eth2 # LAN - не мониторим
# Настройка NetFlow v9
set system flow-accounting netflow version 9
set system flow-accounting netflow server 192.168.100.50 port 2055
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 500
commit
save
exitРасширенная конфигурация с фильтрацией
Настройка для мониторинга только критичных потоков
configure
# Включение на всех интерфейсах
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting interface eth2
# Настройка IPFIX с агрессивным семплированием
set system flow-accounting netflow version 10
set system flow-accounting netflow server 192.168.100.50 port 4739
set system flow-accounting netflow server 192.168.100.51 port 4739 # Резервный
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 1000 # Каждый 1000-й пакет
# Короткие таймауты для быстрого обновления
set system flow-accounting netflow timeout expiry-interval 30
set system flow-accounting netflow timeout flow-generic 1800
set system flow-accounting netflow timeout tcp-generic 1800
set system flow-accounting netflow timeout tcp-fin 120
set system flow-accounting netflow timeout tcp-rst 60
set system flow-accounting netflow timeout udp 120
set system flow-accounting netflow timeout icmp 120
# Большое количество потоков для высоконагруженных сетей
set system flow-accounting netflow max-flows 500000
# Агрегация для уменьшения объема данных
set system flow-accounting netflow aggregation protocol-port
set system flow-accounting netflow aggregation destination-prefix
commit
save
exitПроверка конфигурации
Просмотр текущей конфигурации
# Показать всю конфигурацию Flow Accounting
show configuration system flow-accounting
# Показать только настройки NetFlow
show configuration system flow-accounting netflowПример вывода:
flow-accounting {
interface eth0
interface eth1
netflow {
engine-id 1
max-flows 10000
sampling-rate 100
server 192.168.100.50 {
port 2055
}
source-address 192.168.0.1
timeout {
expiry-interval 60
flow-generic 3600
tcp-fin 300
tcp-generic 3600
tcp-rst 120
udp 300
}
version 9
}
}Операционные команды
Просмотр статистики потоков
# Показать потоки на интерфейсе eth0
show flow-accounting interface eth0
# Показать потоки на интерфейсе eth1
show flow-accounting interface eth1
# Показать потоки для конкретного хоста
show flow-accounting interface eth0 host 192.168.1.100
# Показать топ 20 потоков по объему трафика
show flow-accounting interface eth0 | head -20Пример вывода show flow-accounting interface eth0:
flow-accounting for interface eth0
Src IP Addr:Port Dst IP Addr:Port Proto Packets Bytes
192.168.1.10:443 8.8.8.8:53 UDP 1234 567890
192.168.1.20:80 1.1.1.1:443 TCP 5678 2345678
192.168.1.30:22 10.0.0.50:54321 TCP 910 123456Фильтрация вывода
# Показать только TCP потоки
show flow-accounting interface eth0 | grep TCP
# Показать только потоки от конкретной подсети
show flow-accounting interface eth0 | grep "192.168.1."
# Показать потоки на порт 443 (HTTPS)
show flow-accounting interface eth0 | grep ":443"
# Показать топ 10 потоков и отсортировать по байтам
show flow-accounting interface eth0 | sort -k5 -n -r | head -10Мониторинг экспорта NetFlow
Проверка отправки пакетов NetFlow
# Проверка активных соединений с коллектором (на VyOS)
sudo netstat -anu | grep 2055
# Проверка с помощью tcpdump
sudo tcpdump -i any port 2055 -n
# Проверка UDP трафика к коллектору
sudo tcpdump -i any host 192.168.100.50 and port 2055 -vvПроверка на стороне коллектора
# На коллекторе: прослушивание NetFlow пакетов
sudo tcpdump -i eth0 port 2055 -n -vv
# Проверка открытого порта на коллекторе
sudo netstat -anu | grep 2055
sudo ss -anu | grep 2055Отладка проблем
Включение отладочного режима
# Проверка логов системы
show log | grep flow
# Мониторинг системных ресурсов
show system resource
# Проверка загрузки CPU
topПроверка доступности коллектора
# Ping до коллектора
ping 192.168.100.50
# Проверка маршрута
traceroute 192.168.100.50
# Проверка UDP связности (требует nc/netcat)
nc -u 192.168.100.50 2055Типичные проблемы и решения
1. NetFlow пакеты не достигают коллектора
Симптомы:
- Коллектор не получает данные
- tcpdump на VyOS показывает исходящие пакеты, но коллектор их не видит
Решения:
# Проверить, что source-address корректный
show configuration system flow-accounting netflow source-address
# Проверить правила firewall
show firewall
# Убедиться, что исходящий трафик не блокируется
set firewall name WAN_LOCAL rule 100 action accept
set firewall name WAN_LOCAL rule 100 destination port 2055
set firewall name WAN_LOCAL rule 100 protocol udp
commit
save2. Высокая нагрузка CPU
Симптомы:
- CPU использование > 80%
- Задержки в обработке пакетов
Решения:
# Увеличить sampling-rate
set system flow-accounting netflow sampling-rate 1000 # Было 100
commit
# Уменьшить max-flows
set system flow-accounting netflow max-flows 10000 # Было 100000
commit
# Отключить Flow Accounting на неважных интерфейсах
delete system flow-accounting interface eth2
commit
save3. Переполнение таблицы потоков
Симптомы:
- Потоки отбрасываются
- Неполные данные на коллекторе
Решения:
# Увеличить max-flows
set system flow-accounting netflow max-flows 200000
commit
# Уменьшить таймауты для более быстрого освобождения
set system flow-accounting netflow timeout flow-generic 1800 # Было 3600
set system flow-accounting netflow timeout tcp-generic 1800
commit
save4. Несовместимость версий NetFlow
Симптомы:
- Коллектор не распознает формат
- Ошибки парсинга на коллекторе
Решения:
# Попробовать другую версию NetFlow
delete system flow-accounting netflow version
set system flow-accounting netflow version 5 # Самая совместимая
commit
# Или использовать IPFIX (v10)
set system flow-accounting netflow version 10
commit
save5. Проблемы с агрегацией
Симптомы:
- Слишком много или слишком мало потоков
- Потеря детализации
Решения:
# Отключить агрегацию для полной детализации
delete system flow-accounting netflow aggregation
commit
# Или использовать селективную агрегацию
delete system flow-accounting netflow aggregation
set system flow-accounting netflow aggregation protocol-port
commit
saveBest Practices (Лучшие практики)
1. Выбор версии NetFlow
- NetFlow v5: Используйте для максимальной совместимости, только IPv4
- NetFlow v9: Используйте для поддержки IPv6 и расширенных метаданных
- IPFIX (v10): Рекомендуется для новых развертываний, стандартизирован
2. Семплирование
Рекомендации по настройке sampling-rate:
# Для офисных сетей (< 100 Mbps)
set system flow-accounting netflow sampling-rate 10
# Для корпоративных сетей (100-500 Mbps)
set system flow-accounting netflow sampling-rate 100
# Для высоконагруженных сетей (500 Mbps - 1 Gbps)
set system flow-accounting netflow sampling-rate 500
# Для очень высоких нагрузок (> 1 Gbps)
set system flow-accounting netflow sampling-rate 1000Важно: Чем выше sampling-rate, тем меньше нагрузка на CPU, но ниже точность подсчета объемов трафика.
3. Оптимизация таймаутов
# Для динамичных сетей (много коротких соединений)
set system flow-accounting netflow timeout expiry-interval 30
set system flow-accounting netflow timeout tcp-fin 120
set system flow-accounting netflow timeout tcp-rst 60
set system flow-accounting netflow timeout udp 120
# Для стабильных сетей (долгоживущие соединения)
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout tcp-fin 300
set system flow-accounting netflow timeout tcp-rst 120
set system flow-accounting netflow timeout udp 3004. Резервирование коллекторов
Всегда настраивайте минимум 2 коллектора:
# Основной коллектор
set system flow-accounting netflow server 192.168.100.50 port 2055
# Резервный коллектор (в другом сегменте сети)
set system flow-accounting netflow server 192.168.200.50 port 20555. Сегментация мониторинга
Мониторьте только критичные интерфейсы:
# Мониторим внешние интерфейсы (интернет)
set system flow-accounting interface eth0 # WAN1
set system flow-accounting interface eth1 # WAN2
# НЕ мониторим внутренние интерфейсы для экономии ресурсов
# Исключение: интерфейсы с критичным трафиком или для расследования инцидентов6. Ограничение max-flows
Выбирайте разумное значение max-flows:
# Для малых сетей (< 50 пользователей)
set system flow-accounting netflow max-flows 10000
# Для средних сетей (50-200 пользователей)
set system flow-accounting netflow max-flows 50000
# Для крупных сетей (> 200 пользователей)
set system flow-accounting netflow max-flows 2000007. Использование source-address
Всегда явно указывайте source-address:
# Используйте адрес интерфейса управления или loopback
set system flow-accounting netflow source-address 192.168.0.1
# Это помогает идентифицировать источник на коллекторе
# Особенно важно при использовании нескольких VyOS-маршрутизаторов8. Мониторинг производительности
Регулярно проверяйте нагрузку:
# Проверка CPU
show system resource
# Проверка количества активных потоков
show flow-accounting interface eth0 | wc -l
# Если CPU > 70%, увеличьте sampling-rate или уменьшите max-flows9. Документирование конфигурации
Используйте комментарии для документирования:
# ПРИМЕЧАНИЕ: VyOS не поддерживает комментарии в конфигурации напрямую
# Документируйте конфигурацию в отдельном файле или системе управления конфигурациями
# Пример документации:
# eth0 - WAN1 (провайдер Ростелеком, 500 Mbps)
# eth1 - WAN2 (провайдер МТС, 300 Mbps)
# Коллектор 192.168.100.50 - основной (ntopng)
# Коллектор 192.168.200.50 - резервный (ElastiFlow)10. Безопасность
Защитите трафик NetFlow:
# Настройте firewall для ограничения доступа к коллекторам
set firewall name LAN_OUT rule 100 action accept
set firewall name LAN_OUT rule 100 destination address 192.168.100.50
set firewall name LAN_OUT rule 100 destination port 2055
set firewall name LAN_OUT rule 100 protocol udp
set firewall name LAN_OUT rule 100 source address 192.168.0.1
# Рассмотрите использование VPN для защиты NetFlow трафика
# особенно при отправке через недоверенные сетиИнтеграция с популярными коллекторами
ntopng
ntopng - популярное решение с web-интерфейсом для анализа NetFlow/IPFIX.
Конфигурация VyOS для ntopng:
configure
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting netflow version 9
set system flow-accounting netflow server 192.168.100.50 port 2055
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 100
commit
save
exitnfsen/nfdump
nfsen/nfdump - классическое решение для хранения и анализа NetFlow.
Конфигурация VyOS для nfsen:
configure
set system flow-accounting interface eth0
set system flow-accounting netflow version 5 # nfsen отлично работает с v5
set system flow-accounting netflow server 192.168.100.50 port 9995
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow engine-id 1
set system flow-accounting netflow sampling-rate 100
commit
save
exitElastiFlow
ElastiFlow - современное решение на базе Elastic Stack.
Конфигурация VyOS для ElastiFlow:
configure
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting netflow version 10 # IPFIX
set system flow-accounting netflow server 192.168.100.50 port 4739
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 200
set system flow-accounting netflow timeout expiry-interval 60
commit
save
exitGrafana + InfluxDB
Для интеграции с InfluxDB потребуется промежуточный конвертер (например, telegraf с плагином netflow).
Конфигурация VyOS:
configure
set system flow-accounting interface eth0
set system flow-accounting netflow version 9
set system flow-accounting netflow server 192.168.100.50 port 6343
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 100
commit
save
exitКонфигурация Telegraf на сервере:
[[inputs.netflow]]
service_address = "udp://:6343"
protocol = "netflow v9"
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "netflow"Полный пример enterprise-конфигурации
configure
# Описание: Enterprise конфигурация для мониторинга трафика
# Сеть: 1 Gbps интернет канал, 500 пользователей
# Коллекторы: ntopng (основной), ElastiFlow (долгосрочное хранение)
# Интерфейсы для мониторинга
set system flow-accounting interface eth0 # WAN (интернет)
set system flow-accounting interface eth1 # LAN (корпоративная сеть)
set system flow-accounting interface eth2 # DMZ (серверы)
# Основные настройки NetFlow
set system flow-accounting netflow version 10 # IPFIX для современных коллекторов
set system flow-accounting netflow source-address 10.0.0.1
set system flow-accounting netflow engine-id 1
# Коллекторы
set system flow-accounting netflow server 10.100.50.10 port 2055 # ntopng (основной)
set system flow-accounting netflow server 10.100.50.20 port 4739 # ElastiFlow (резервный)
set system flow-accounting netflow server 10.200.50.10 port 2055 # Удаленный ЦОД
# Семплирование для баланса точности и производительности
set system flow-accounting netflow sampling-rate 500 # Каждый 500-й пакет
# Таймауты оптимизированы для корпоративной сети
set system flow-accounting netflow timeout expiry-interval 60
set system flow-accounting netflow timeout flow-generic 3600 # 1 час
set system flow-accounting netflow timeout tcp-generic 3600
set system flow-accounting netflow timeout tcp-fin 300 # 5 минут
set system flow-accounting netflow timeout tcp-rst 120 # 2 минуты
set system flow-accounting netflow timeout udp 300 # 5 минут
set system flow-accounting netflow timeout icmp 120
# Ограничение потоков для предотвращения перегрузки
set system flow-accounting netflow max-flows 100000
# Агрегация для уменьшения объема данных при сохранении детализации
set system flow-accounting netflow aggregation protocol-port
commit
save
exitСценарии использования
1. Анализ использования полосы пропускания
# Настроить NetFlow для точного учета
configure
set system flow-accounting interface eth0
set system flow-accounting netflow version 9
set system flow-accounting netflow server 192.168.100.50 port 2055
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 10 # Высокая точность
commit
save
exit
# Анализ на коллекторе покажет:
# - Топ пользователей по объему трафика
# - Топ приложений/протоколов
# - Распределение трафика по времени суток2. Обнаружение аномалий и атак
# Настроить чувствительный мониторинг
configure
set system flow-accounting interface eth0 # Внешний интерфейс
set system flow-accounting netflow version 10
set system flow-accounting netflow server 192.168.100.50 port 4739
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 100
set system flow-accounting netflow timeout expiry-interval 30 # Быстрое обновление
commit
save
exit
# Коллектор (ElastiFlow/ntopng) поможет обнаружить:
# - DDoS атаки (аномальное количество пакетов)
# - Сканирование портов (множество соединений на разные порты)
# - Утечки данных (большие объемы исходящего трафика)3. Соответствие требованиям регуляторов (compliance)
# Настроить долгосрочное хранение метаданных
configure
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting netflow version 10
set system flow-accounting netflow server 192.168.100.50 port 4739 # ElastiFlow
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 200
commit
save
exit
# На стороне коллектора (ElastiFlow):
# - Настроить хранение данных на 1+ год
# - Реализовать ролевой доступ к данным
# - Настроить аудит доступа к логам4. Оптимизация сетевой инфраструктуры
# Собрать статистику для анализа
configure
set system flow-accounting interface eth0
set system flow-accounting interface eth1
set system flow-accounting interface eth2
set system flow-accounting netflow version 9
set system flow-accounting netflow server 192.168.100.50 port 2055
set system flow-accounting netflow source-address 192.168.0.1
set system flow-accounting netflow sampling-rate 100
commit
save
exit
# Анализ покажет:
# - Неэффективные маршруты
# - Узкие места (bottlenecks)
# - Кандидаты на QoS политики
# - Недоиспользуемые каналыЗаключение
Flow Accounting в VyOS - мощный инструмент для мониторинга, анализа и оптимизации сетевого трафика. Правильная настройка позволяет:
- Мониторинг производительности: Отслеживание использования полосы пропускания и выявление узких мест
- Безопасность: Обнаружение аномалий, атак и несанкционированной активности
- Планирование: Прогнозирование роста трафика и планирование расширения
- Compliance: Соответствие требованиям регуляторов по хранению метаданных
- Оптимизация: Выявление неэффективных потоков и оптимизация маршрутизации
Ключевые рекомендации
- Используйте IPFIX (NetFlow v10) для новых развертываний
- Настраивайте минимум 2 коллектора для отказоустойчивости
- Выбирайте sampling-rate в зависимости от нагрузки сети
- Мониторьте нагрузку CPU и корректируйте параметры при необходимости
- Регулярно проверяйте доставку потоков на коллекторы
- Документируйте конфигурацию и изменения
Полезные ссылки
- VyOS Flow Accounting: https://docs.vyos.io/en/latest/configuration/system/flow-accounting.html
- RFC 3954 - Cisco Systems NetFlow v9: https://www.rfc-editor.org/rfc/rfc3954
- RFC 7011 - IPFIX Protocol Specification: https://www.rfc-editor.org/rfc/rfc7011.html
- ntopng Documentation: https://www.ntop.org/guides/ntopng/
- ElastiFlow Documentation: https://github.com/robcowart/elastiflow
Примечание: Данная документация актуальна для VyOS 1.4 (Sagitta) и VyOS 1.5 (Circinus). Функциональность Flow Accounting стабильна между версиями.