|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (23)
просмотр истории страницыh2. NetFlow коллектор |
{toc:maxLevel=3} |
|
На сервере по умолчанию включена возможность приема netflow трафика от NAS-устройств в локальной сети, поэтому включать отдельно этот сервис не нужно. \*UDP-порт для приема\* \\ \- По умолчанию сервис работает на порту 9996. Порт должен быть одинаковым на всех NAS-устройствах сети и на сервере Carbon Billing, поэтому если ваши устройства используют порт отличный от 9996, то укажите его ниже. \*Прием NetFlow потоков с разных источников\* \\ \- обязательно включите эту опцию если вам нужно принимать NetFlow с нескольких источников в локальной сети. Так же, чтобы прием был возможен, эти устройства должны быть перечислены в управлении NAS-устройствами. |
{tip}*Время выполнения инструкции*: 10-20 минут на первичную проверку, далее - зависит от сложности проблемы{tip} |
|
h1. Настройка |
|
В большинстве случаев, для сохранения статистики достаточно стандартных настроек NAS и биллинга. Проверьте настройки: # Должны быть включены опции [collector|Описание работы служб сбора статистики]: #* *Включить сбор статистики* - служба сбора статистики. #* *Отправлять агрегированную статистику на Биллинг* - в биллинге появится возможность подсчитывать объём трафика. #* *Включить bstatd для детальной статистики (снято с поддержки)* или *Сохранять сырую статистику в формате nfcapd для анализа nfsen* - для сохраниния детализации по посещённым ресурсам. # Создайте NAS Биллинг принимает статистику только c IP-адресов внесённых в фаервол. Можно добавить адреса несколькими способами: #* Адреса автоматически добавляются при создании [NAS-серверов интернет|CarbonBilling:Интеграция оборудования интернет]. #* Можно добавить "пустой" NAS по инструкции [CarbonBilling:Пользовательская схема], укажите нужный IP. #* Добавьте разрешения в фаервол через в ручную с помощью [хука|Дополнительные настройки. hooks. Хуки. Свои правила в firewall] {code} #!/bin/bash if [ "$1" = "/etc/init.d/firewall" -a "$2" = start ]; then iptables -I nas_clients -s 10.0.1.7/32 -p udp -m udp --dport 9996 -j ACCEPT iptables -I nas_clients -s 10.0.2.200/32 -p udp -m udp --dport 9996 -j ACCEPT fi exit 0 {code} # Настройте netflow на NAS В каждой [cтандартной схеме|Стандартные схемы] описана настройка netflow. Укажите IP адрес биллинга и порт(по умолчанию 9996). Загрузите конфигурацию на оборудование. Дополнительно можете ознакомиться: #* Mikrotik [Cтатья в официальной документации|https://wiki.mikrotik.com/wiki/Manual:IP/Traffic_Flow]. #* Cisco Стандартная схема Cisco-ISG - IPoE и PPPoE написана для версии IOS 12. Настройка на версии IOS 15 и выше описана в [заметках|Заметки по схеме. Netflow Cisco]. |
|
h1. Проверка netflow-потоков {note} Биллинг учитывает и добавляет в расход трафик только по абонентам с *активными* услугами трафика. Исключение, опиция: "Деактивировать, если текущий баланс превысил лимит". {note} |
|
Если в [расходе|CarbonBilling:Счетчики услуг. Вкладка "Расход".] абонента трафик не появляется, проверьте следующее: # В первую очередь, убедитесь что коллектор включен: {code:title=Команда}grep nf_collector.enabled\' /app/collector/cfg/config{code} {code:title=Вывод}app['nf_collector.enabled']='1'{code} В примере - коллеткор включен. Если будет "0", значит коллектор выключен. Включите его [в настройках коллектора|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=126484488#Описаниеработыслужбсборастатистики-Настройкасборастатистики], опция "*Включить сбор статистики*" |
|
h2. Настройки на Carbon Billing При настройке передачи статистики по netflow указывайте \*5-ю версию*. Также статистику по netflow нужно передавать на локальный интерфейс. Для начала убедитесь, что UDP-порт для приёма указан, по дефолту большая часть NAS-серверов использует 9996 порт. Проверьте, что сервер действительно слушает на нём: |
# Сгенерируйте трафик на хосте абонента. Просмотрите с помощью *tcpdump* с каких IP-адресов приходит netflow. #* NAS может отсылать IP пакеты с разных локальных IP адресов. Проверьте, что netflow поток приходит с верного адреса. {code:title=Команда для проверки} tcpdump -pnni any udp port 9996 -c 100 2>/dev/null| cut -d ' ' -f 3 | sort -u |
{code} |
{code:title=Результат выполнения команды} ................... 10.0.0.10.9996 10.0.0.20.9996 {code} В примере на биллинг netflow поток приходит с двух NAS: 10.0.0.10.9996 и 10.0.0.20.9996 порт источника 9996. #* Убедитесь, что по всем этим адреса в биллинге заведены [NAS интернет|CarbonBilling:Интеграция оборудования интернет] - биллинг принимает netflow только с известных ему адресов маршрутизаторов. # Если IP NAS корректный, проверьте IP адреса на сервере биллинга. Адрес назначения netflow потока должен быть на одном из интерфейсов. #* В предидущем примере поток пришел на адрес: {code} 10.0.0.1 {code} #* Посмотрите список IP-адресов биллинга, на который он будет принимать netflow: {code:title=Команда} ip -4 a | grep inet | grep -vE '169.254|127.0.0.1|10.128.0.1' | sed 's/ inet*//g; s/\/.*//g' {code} {code:title=Пример вывода} 10.90.185.127 10.0.0.1 {code} # Убедитесь что биллинг слушает порт netflow(по умолчанию 9996). {code:title=Команда} |
netstat -apn | grep 9996 {code} |
Обязательно добавьте NAS-сервер в список оборудования в Carbon Manager, иначе трафик от NAS будет отброшен файрволом. |
{code:title=Вывод} udp 0 0 127.0.0.1:56761 127.0.0.1:9996 ESTABLISHED 6716/sflowtool udp 0 0 0.0.0.0:9996 0.0.0.0:* 6640/nfcapd {code} # Если все адреса есть и порт доступен, проверьте что в netflow есть ненулевые данные в трафике. Это удобней всего делать с помощью *tshark*. {code:title=Установите wireshark} yum install -y wireshark {code} Аргументы команды tshar: {code} i eth0 - интерфейс биллинга, на который приходит netflow port 9996 - порт netflow host 10.0.0.10 - IP адрес маршрутизатора {code} {code:title=Запустите tshark} tshark -nnVi eth0 port 9996 and host 10.0.0.10 -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* # Проверьте, что был захвачен как входящий, так и исходящий трафик. {code} tshark -nnVi eth0 port 9996 and host 10.0.0.10 -c 100 | grep -E 'Addr|Octets' {code} В примере вывода команды видно, что от адреса 91.211.93.128 к адресу 10.0.0.194 передано 349 Octets(байт). {code} SrcAddr: 91.211.93.128 (91.211.93.128) DstAddr: 10.0.0.194 (10.0.0.194) Octets: 349 {code} # Если *Octets* ненулевые, убедитесь что трафик проходит IPTABLES по правилу для IP Вашего NAS: {code} iptables -nvL nas_clients | grep 9996 {code} # Если трафик проходит IPTABLES, [повысьте уровень логирования коллектора netflow|CarbonBilling:Описание работы служб сбора статистики] до уровня DEBUG в настройках коллектора и посмотрите есть ли данные в логе [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-адрес. # Если трафик прошел фаервол, но /app/collector/var/log/nf_collector.log пустой, проверьте что коллектор настроен на обработку нужного типа Netflow. Посмотреть тип Netflow, который приходит с NAS можно с помощью tshark, 10.20.30.40 - это IP NAS, укажите Ваш: {code}tshark -nnVi any port 9996 and host 10.20.30.40 -c 1 2>&1 | grep -E 'Cisco NetFlow/IPFIX' -A1{code} Для разных типов Netflow должны быть следующие [настойки сохранения сырой статистики|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=126484488#Описаниеработыслужбсборастатистики-Настойкисохранениясыройстатистики] #* *Version: 5*: {color:red}Отключен{color} "Использовать NAT в Netflow v9", {color:red}Отключен{color} "Обрабатывать дополнительные параметры IPFIX" #* *Version: 9*: {color:green}Включен{color} "Использовать NAT в Netflow v9", {color:red}Отключен{color} "Обрабатывать дополнительные параметры IPFIX" #* *Version: 10 (IPFIX)*: {color:green}Включен{color} "Использовать NAT в Netflow v9" {color:green}Включен{color} "Обрабатывать дополнительные параметры IPFIX" # Если все записи только по адресу 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] и он отсылает данные в биллинг по логу: {code} /app/collector/var/log/reporter.log {code} # Если все прочие проверки прошли, убедитесь что 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]" под заголовком "*Коды ошибок с описанием*" |
|
h2. Настройки на оборудовании |
h3. Что делать если ничего не помогло |
|
Почти любом оборудовании настройка netflow потока сводится к указанию адреса и порта netflow-коллектора, в данном случае Carbon Billing. |
В первую очередь, попробуйте еще раз пройти по все шагам. Точно выполняйте инструкции на каждом пункте это важно! Если указанные в статье действия не помогли, включите [уровень логирования коллектора INFO|CarbonBilling:Описание работы служб сбора статистики] и выполните скрипт диагностики: |
|
Порт 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. Redback \#TODO h3. D-link Возможно потребуется отключение опции blat attack \!352424_blat.png\|border=1\! h2. Проверка на Carbon Billing То, что netflow пакеты приходят на Carbon Billing можно проверить следующим образом. Заводим тестового абонента, который ходит в интернет через NAS. Запускаем на tcpdump на Carbon Billing: |
{code} |
tcpdump -nvi any udp port 9996 |
/app/base/usr/local/bin/billing_check.sh &> billing_check.log |
{code} |
После этого попробуйте сгенерировать пользователем какой-либо трафик, одновременно наблюдая за tcpdump'ом. |
|
Спустя небольшой промежуток времени после завершения соединения у пользователя вы должны увидеть пришедшие от NAS netflow-пакеты. h3. \*Важно\* Для получения пакетов от маршрутизаторов MIkrotik их необходимо добавить в менеджере в разделе оборудование. h4. \*\[Далее >>>\|Скрипт отправки команд\]\* |
и приложите его к заявке на портале HelpDesk |