Просмотр Исходного

{toc:maxLevel=3}

{tip}*Время выполнения инструкции*: 10-20 минут на первичную проверку, далее - зависит от сложности проблемы{tip}

h2. NetFlow коллектор

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






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

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

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

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


{code}
netstat -apn | grep 9996
{code}

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

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

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


h3. Mikrotik

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

По настройке netflow на mikrotik есть [статья в официальной документации|http://www.mikrotik.com/testdocs/ros/2.9/ip/traffic-flow.php] Mikrotik

h3. Cisco

По настройке netflow на cisco есть [отличная статья на opennet|http://www.opennet.ru/base/cisco/netflow_nat.txt.html]

h3. D-link

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



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

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

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

{code}
tcpdump -nvi any udp port 9996
{code}
После этого попробуйте сгенерировать пользователем какой-либо трафик, одновременно наблюдая за tcpdump'ом.

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

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

Если в [расходе|CarbonBilling:Счетчики услуг. Вкладка "Расход".] абонента трафик не появляется, проверьте следующее:
# Сгенерируйте трафик на хосте абонента, просмотрите с помощью tcpdump с каких IP-адресов приходит netflow, убедитесь что по всем этим адреса в биллинге заведены [NAS интернет|CarbonBilling:Интеграция оборудования интернет].
# Если все адреса есть, проверьте что в netflow есть ненулевые данные в трафике, это удобней всего делать с помощью *tshark*, по-умолчанию он не установлен и находится в пакете *wireshark*, запустив снифер по IP NAS из учетной записи тестового абонента:
{code}yum install -y wireshark
tshark -nnVi eth0 port 9996 and host 10.20.30.40 -c 1 | egrep 'Packets|Octets' | sort | uniq{code}
Вывод должен быть приблизительно таким:
{code}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{code}
Должны быть ненулевые *Octets*
{info}Описание полей netflow можно посмотреть по ссылке [https://www.plixer.com/support/netflow-v5/]

{info}
# Если *Octets* ненулевые, убедитесь что трафик проходит IPTABLES по правилу для IP Вашего NAS:
{code}iptables -nvL nas_clients | grep 9996{code}
# Если Вы не нашли нужного IP маршрутизатора, убедитесь что он есть в [списке оборудования интернет NAS|CarbonBilling:Интеграция с оборудованием] - биллинг принимает netflow только с известных ему адресов маршрутизаторов
# Если если IP nas корректный, убедитесь что трафик приходит на IP-адрес биллинга назначенный физическому интерфейсу, bridge в которых есть физические интерфейсы, или bond-интерфейсам.
# Если трафик проходит IPTABLES, [повысьте уровень логирования коллектора netflow|CarbonBilling:Описание работы служб сбора статистики] в настройках коллектора и посмотрите есть ли данные в логе [nf_collector|CarbonBilling:Collector], убедитесь что он отсылает их в /app/collector/var/dump и /app/collector/var/stat/raw
# Если в /app/collector/var/dump файлов нет, а в /app/collector/var/stat/raw что-то есть, проверьте лог /app/collector/var/log/nf_collector.log - там должны быть записи такого вида:
{code}Mon Apr 13 15:20:05 2020 [8919] user_data_calc(393): id: 1410 ip=10.100.1.125{code}
Где ID: 1410 - это ID [учётной записи|CarbonBilling:Учетная запись. Создание и изменение.], а 10.100.1.125 - назначенный ей IP-адрес.
# Если все записи только по адресу 0.0.0.0 - возможны два варианта:
#* Проверьте что на тестовом хосте настроен именно тот IP что назначен в учетной записи
#* Проверьте файл */app/collector/mnt/var/lib/collector/users.csv*: есть ли там IP-адреса и какие.
#* Несколько полезных команд которые могут попочь в диагностике этой проблемы:
{code:title=По каким IP приходила информация в nf_collector среди последних 100000 строк}tail -n 100000 /app/collector/var/log/nf_collector.log | grep 'ip=' | awk '{print $10}' | sort | uniq{code}
{code:title=Посмотреть есть ли вообще что-то в users.csv и что именно}ll /app/collector/mnt/var/lib/collector/users.csv && cat /app/collector/mnt/var/lib/collector/users.csv{code}
{code:title=Посмотреть какие пароли к API коллектора указаны в конфигурационных файлах}grep collector.psw /app/asr_billing/cfg/config /app/collector/cfg/config{code}
{code:title=Убедиться что пароли совпадают: вывод должен быть "1"}grep $(grep collector.psw /app/asr_billing/cfg/config | sed "s/.*=//g; s/'//g") /app/collector/cfg/config -c{code}
# Если данные отправляются и с IP в учетке и на хосте все хорошо, проверьте что запущен [traf_reporter|CarbonBilling:Collector] и он отсылает данные в биллинг изучив его лог
# Если все прочие проверки прошли, убедитесь что timestamp в netflow в настоящем времени. Например, ниже приведён вывод снифера с сожержимым пакета, по которому видно что NAS присылает информацию по трафику в прошлом времени:
{code}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
{code}
# Если трафик дошел до [traf_reporter|CarbonBilling:Collector], в netfow корректное время, проверьте попал ли трафик в БД */var/db/buff_traf.gdb*
{code}sqlexec /var/db/buff_traf.gdb "select count(*) from traffic where user_ip=174325762"{code}
{info}Узнать IP в десятичном формате можно в основной БД:
{code}sqlexec "select uf_ip2string(ip),ip from users where abonent_id=1234"{code}
Где 1234 - ID абонента (можно посмотреть в адресной строке браузера, открыв карточку абонента){info}
# Если в *buff_traf.gdb* есть данные по трафику абонента, проверьте нет ли ошибок обработки:
{code}sqlexec /var/db/buff_traf.gdb "select count(*) from traffic where user_ip=174325762 and error_code_id>=1"{code}
Ошибки обработки трафика описаны в статье "[CarbonBilling:Описание структуры базы buff_traf.gdb]" под заголовком "*Коды ошибок с описанием*"

h4. Что делать если ни чего не помогло
Если указанные в статье действия не помогли, включите [уровень логирования коллектора INFO|CarbonBilling:Описание работы служб сбора статистики] и выполните скрипт диагностики:

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

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