Flow Accounting - Учет сетевых потоков

Flow Accounting - Учет сетевых потоков

Введение

Flow Accounting (учет сетевых потоков) - это механизм мониторинга и анализа сетевого трафика, позволяющий собирать статистику о потоках данных, проходящих через маршрутизатор. VyOS поддерживает несколько протоколов экспорта потоков: NetFlow (версии 5, 9, 10), IPFIX и sFlow.

Основные компоненты

Flow Accounting состоит из трех основных компонентов:

  1. Exporter (Экспортер) - VyOS-маршрутизатор, который собирает информацию о пакетах и агрегирует их в потоки
  2. Collector (Коллектор) - сервер, который принимает и сохраняет данные о потоках
  3. 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.1

NetFlow версия 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 Mbps10-50Высокая
100-500 Mbps100-200Средняя
500 Mbps - 1 Gbps500-1000Базовая
> 1 Gbps1000-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
save

Aggregation (Агрегация)

Агрегация позволяет объединять потоки по определенным критериям для уменьшения объема экспортируемых данных.

Настройка агрегации

# Агрегация по исходному 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
save

2. Высокая нагрузка 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
save

3. Переполнение таблицы потоков

Симптомы:

  • Потоки отбрасываются
  • Неполные данные на коллекторе

Решения:

# Увеличить 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
save

4. Несовместимость версий 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
save

5. Проблемы с агрегацией

Симптомы:

  • Слишком много или слишком мало потоков
  • Потеря детализации

Решения:

# Отключить агрегацию для полной детализации
delete system flow-accounting netflow aggregation
commit

# Или использовать селективную агрегацию
delete system flow-accounting netflow aggregation
set system flow-accounting netflow aggregation protocol-port
commit
save

Best 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 300

4. Резервирование коллекторов

Всегда настраивайте минимум 2 коллектора:

# Основной коллектор
set system flow-accounting netflow server 192.168.100.50 port 2055

# Резервный коллектор (в другом сегменте сети)
set system flow-accounting netflow server 192.168.200.50 port 2055

5. Сегментация мониторинга

Мониторьте только критичные интерфейсы:

# Мониторим внешние интерфейсы (интернет)
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 200000

7. Использование 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-flows

9. Документирование конфигурации

Используйте комментарии для документирования:

# ПРИМЕЧАНИЕ: 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
exit

nfsen/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
exit

ElastiFlow

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
exit

Grafana + 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 - мощный инструмент для мониторинга, анализа и оптимизации сетевого трафика. Правильная настройка позволяет:

  1. Мониторинг производительности: Отслеживание использования полосы пропускания и выявление узких мест
  2. Безопасность: Обнаружение аномалий, атак и несанкционированной активности
  3. Планирование: Прогнозирование роста трафика и планирование расширения
  4. Compliance: Соответствие требованиям регуляторов по хранению метаданных
  5. Оптимизация: Выявление неэффективных потоков и оптимизация маршрутизации

Ключевые рекомендации

  • Используйте IPFIX (NetFlow v10) для новых развертываний
  • Настраивайте минимум 2 коллектора для отказоустойчивости
  • Выбирайте sampling-rate в зависимости от нагрузки сети
  • Мониторьте нагрузку CPU и корректируйте параметры при необходимости
  • Регулярно проверяйте доставку потоков на коллекторы
  • Документируйте конфигурацию и изменения

Полезные ссылки


Примечание: Данная документация актуальна для VyOS 1.4 (Sagitta) и VyOS 1.5 (Circinus). Функциональность Flow Accounting стабильна между версиями.