Настройка и проверка netflow-потоков

Skip to end of metadata
Go to start of metadata
Время выполнения инструкции: 10-20 минут на первичную проверку, далее - зависит от сложности проблемы

NetFlow коллектор

На сервере по умолчанию включена возможность приема netflow трафика  от NAS-устройств в локальной сети, поэтому включать отдельно этот сервис  не нужно.
UDP-порт для приема
- По умолчанию сервис работает на порту 9996.  Порт должен быть одинаковым на всех NAS-устройствах сети и на сервере  Carbon Billing, поэтому если ваши устройства используют порт отличный от  9996, то укажите его ниже.
Прием NetFlow потоков с разных источников
- обязательно включите  эту опцию если вам нужно принимать NetFlow с нескольких источников в  локальной сети. Так же, чтобы прием был возможен, эти устройства должны  быть перечислены в управлении NAS-устройствами.

Настройки на Carbon Billing

При настройке передачи статистики по netflow указывайте 5-ю версию. Также статистику по netflow нужно передавать на локальный интерфейс.

Для начала убедитесь, что UDP-порт для приёма указан, по дефолту большая часть NAS-серверов использует 9996 порт.

Проверьте, что сервер действительно слушает на нём:

netstat -apn | grep 9996

Настройки на оборудовании

Почти любом оборудовании настройка netflow потока сводится к указанию адреса и порта netflow-коллектора, в данном случае Carbon Billing.

Порт Carbon Billing по умолчанию - 9996.

Mikrotik

Примечание: все (all) интерфейсы должны быть выбраны в Trafic Flow

По настройке netflow на mikrotik есть статья в официальной документации Mikrotik

Cisco

По настройке netflow на cisco есть отличная статья на opennet

Redback

#TODO

D-link

Возможно потребуется отключение опции blat attack

Проверка на Carbon Billing

То, что netflow пакеты приходят на Carbon Billing можно проверить следующим образом. Заводим тестового абонента, который ходит в интернет через NAS.

Запускаем на tcpdump на Carbon Billing:

tcpdump -nvi any udp port 9996

После этого попробуйте сгенерировать пользователем какой-либо трафик, одновременно наблюдая за tcpdump'ом.

Спустя небольшой промежуток времени после завершения соединения у пользователя вы должны увидеть пришедшие от NAS netflow-пакеты.

Решение проблем

Если в расходе абонента трафик не появляется, проверьте следующее:

  1. Сгенерируйте трафик на хосте абонента, просмотрите с помощью tcpdump с каких IP-адресов приходит netflow, убедитесь что по всем этим адреса в биллинге заведены NAS интернет.
  2. Если все адреса есть, проверьте что в netflow есть ненулевые данные в трафике, это удобней всего делать с помощью tshark, по-умолчанию он не установлен и находится в пакете wireshark, запустив снифер по IP NAS из учетной записи тестового абонента:
    yum install -y wireshark
    tshark -nnVi eth0 port 9996 and host 10.20.30.40 -c 1 | egrep 'Packets|Octets' | sort | uniq

    Вывод должен быть приблизительно таким:

    Running as user "root" and group "root". This could be dangerous.
    Capturing on eth0
    1 packet captured
            Octets: 101
            Octets: 126
            Octets: 1260
            Packets: 11
            Packets: 2
            Packets: 6

    Должны быть ненулевые Octets

    Описание полей netflow можно посмотреть по ссылке https://www.plixer.com/support/netflow-v5/
  3. Если Octets ненулевые, убедитесь что трафик проходит IPTABLES по правилу для IP Вашего NAS:
    iptables -nvL nas_clients | grep 9996
  4. Если если IP nas корректный, убедитесь что трафик приходит на IP-адрес биллинга назначенный физическому интерфейсу, bridge в которых есть физические интерфейсы, или bond-интерфейсам.
  5. Если трафик проходит IPTABLES, повысьте уровень логирования коллектора netflow в настройках коллектора и посмотрите есть ли данные в логе nf_collector, убедитесь что он отсылает их в /var/dump
  6. Если данные отправляются, проверьте что запущен traf_reporter и он отсылает данные в биллинг изучив его лог
  7. Если все прочие проверки прошли, убедитесь что timestamp в netflow в настоящем времени. Например, ниже приведён вывод снифера с сожержимым пакета, по которому видно что NAS присылает информацию по трафику в прошлом времени:
    tshark -nnVi eth0 port 9996 -d udp.port=9996,cflow -c 1 -w testnf9.pcp | egrep 'Cisco NetFlow/IPFIX' -A10
    tshark: WARNING: -d requires "==" instead of "=". Option will be treated as "udp.port==9996,cflow"
    Running as user "root" and group "root". This could be dangerous.
    Capturing on eth0
    1 packet captured
    Cisco NetFlow/IPFIX
        Version: 9
        Count: 20
        SysUptime: 689909010
        Timestamp: Jan 16, 1970 04:01:51.000000000 +07
            CurrentSecs: 1285311
        FlowSequence: 6623195
        SourceId: 0
        FlowSet 1
            FlowSet Id: (Data) (256)
            FlowSet Length: 1384
    
  8. Если трафик дошел до traf_reporter, в netfow корректное время, проверьте попал ли трафик в БД /var/db/buff_traf.gdb
    sqlexec /var/db/buff_traf.gdb "select count(*) from traffic where user_ip=174325762"
    Узнать IP в десятичном формате можно в основной БД:
    sqlexec "select uf_ip2string(ip),ip from users where abonent_id=1234"

    Где 1234 - ID абонента (можно посмотреть в адресной строке браузера, открыв карточку абонента)

  9. Если в buff_traf.gdb есть данные по трафику абонента, проверьте нет ли ошибок обработки:
    sqlexec /var/db/buff_traf.gdb "select count(*) from traffic where user_ip=174325762 and error_code_id>=1"

    Ошибки обработки трафика описаны в статье "Описание структуры базы buff_traf.gdb" под заголовком "Коды ошибок с описанием"

Что делать если ни чего не помогло

Если указанные в статье действия не помогли, включите уровень логирования коллектора INFO и выполните скрипт диагностики:

/app/base/usr/local/bin/billing_check.sh &> billing_check.log

и приложите его к заявке на портале HelpDesk

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.