|
Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.
|
Изменения (50)
просмотр истории страницы... |
{tip}*Время выполнения инструкции*: 10-20 минут на первичную проверку, далее - зависит от сложности проблемы{tip} |
h2. NetFlow коллектор |
|
На сервере по умолчанию включена возможность приема netflow трафика от NAS-устройств в локальной сети, поэтому включать отдельно этот сервис не нужно. *UDP-порт для приема* \\ \- По умолчанию сервис работает на порту 9996. Порт должен быть одинаковым на всех NAS-устройствах сети и на сервере Carbon Billing, поэтому если ваши устройства используют порт отличный от 9996, то укажите его ниже. *Прием NetFlow потоков с разных источников* \\ \- обязательно включите эту опцию если вам нужно принимать NetFlow с нескольких источников в локальной сети. Так же, чтобы прием был возможен, эти устройства должны быть перечислены в управлении NAS-устройствами. |
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} |
{code:title=Вывод} |
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. Redback \#TODO h3. D-link Возможно потребуется отключение опции blat attack h2. Проверка на Carbon Billing То, что netflow пакеты приходят на Carbon Billing можно проверить следующим образом. Заводим тестового абонента, который ходит в интернет через NAS. Запускаем на tcpdump на Carbon Billing: |
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} |
tcpdump -nvi any udp port 9996 |
# Если все адреса есть и порт доступен, проверьте что в netflow есть ненулевые данные в трафике. Это удобней всего делать с помощью *tshark*. {code:title=Установите wireshark} yum install -y wireshark |
{code} |
После этого попробуйте сгенерировать пользователем какой-либо трафик, одновременно наблюдая за tcpdump'ом. |
Аргументы команды tshar: |
{code} |
Спустя небольшой промежуток времени после завершения соединения у пользователя вы должны увидеть пришедшие от NAS netflow-пакеты. |
i eth0 - интерфейс биллинга, на который приходит netflow port 9996 - порт netflow host 10.0.0.10 - IP адрес маршрутизатора |
{code} |
h3. Решение проблем |
{code:title=Запустите tshark} tshark -nnVi eth0 port 9996 and host 10.0.0.10 -c 1 | egrep 'Packets|Octets' | sort | uniq |
{code} |
Если в [расходе|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} |
{code}Running as user "root" and group "root". This could be dangerous. |
Capturing on eth0 1 packet captured |
... |
Packets: 11 Packets: 2 |
Packets: 6{code} 6 |
{code} |
Должны быть ненулевые *Octets* |
{info}Описание полей netflow можно посмотреть по ссылке [https://www.plixer.com/support/netflow-v5/] |
# Проверьте, что был захвачен как входящий, так и исходящий трафик. |
{code} |
tshark -nnVi eth0 port 9996 and host 10.0.0.10 -c 100 | grep -E 'Addr|Octets' |
{info} {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} # Если если IP nas корректный, убедитесь что трафик приходит на IP-адрес биллинга назначенный физическому интерфейсу, bridge в которых есть физические интерфейсы, или bond-интерфейсам. |
{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 |
# Если данные отправляются, проверьте что запущен [traf_reporter|CarbonBilling:Collector] и он отсылает данные в биллинг изучив его лог |
# Если в /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 |
... |
{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} |
{code} sqlexec "select uf_ip2string(ip),ip from users where abonent_id=1234" {code} |
Где 1234 - ID абонента (можно посмотреть в адресной строке браузера, открыв карточку абонента){info} |
{info} |
# Если в *buff_traf.gdb* есть данные по трафику абонента, проверьте нет ли ошибок обработки: |
{code} |
{code}sqlexec /var/db/buff_traf.gdb "select count(*) from traffic where user_ip=174325762 and error_code_id>=1"{code} |
{code} |
Ошибки обработки трафика описаны в статье "[CarbonBilling:Описание структуры базы buff_traf.gdb]" под заголовком "*Коды ошибок с описанием*" |
h43. Что делать если ни чего не помогло |
В первую очередь, попробуйте еще раз пройти по все шагам. Точно выполняйте инструкции на каждом пункте это важно! |
Если указанные в статье действия не помогли, включите [уровень логирования коллектора INFO|CarbonBilling:Описание работы служб сбора статистики] и выполните скрипт диагностики: |
{code}/app/base/usr/local/bin/billing_check.sh &> billing_check.log{code} |
{code} /app/base/usr/local/bin/billing_check.sh &> billing_check.log {code} |
и приложите его к заявке на портале HelpDesk |