Error nfsend connect error no such file or directory

For a week I can not solve this error. When you run NFSEN, it gives an error. All packages are normal. Tested on both FreeBSD 9.3 and 10.1. root@Route:/ # nfsen start Error reading profile 'live' Died at /usr/local/bin/nfsen line 456. root@Route:/ # Also 192.168.1.2/nfsen/nfsen.php...

  • #1

For a week I can not solve this error. When you run NFSEN, it gives an error. All packages are normal. Tested on both FreeBSD 9.3 and 10.1.

Code:

root@Route:/ # nfsen start
Error reading profile 'live'
Died at /usr/local/bin/nfsen line 456.
root@Route:/ #

Also

Code:

192.168.1.2/nfsen/nfsen.php
Frontend - Backend version missmatch!
ERROR: nfsend connect() error: No such file or directory!
ERROR: nfsend - connection failed!!
ERROR: Can not initialize globals!

  • Thread Starter

  • #2

It is very important to me. Who can help?

  • #3

I set up

nfsen

a few months ago, and had quite a few hurdles that I had to overcome (but I can’t remember them now).

I constantly had the frontend/backend version mismatch, but got it working regardless.

Have you correctly configured

/usr/local/etc/nfsen.conf

?

Have you started the

nfsen

service?

What is at line 456 of

/usr/local/bin/nfsen

?

What web server are you using and how did you configure it?

  • #4

I was following this thread with great interest but didn’t want to interfere. I set up nfsen couple a months ago on OpenBSD using Nginx. It was very straightforward IIRC.

  • Thread Starter

  • #5

I set up

nfsen

a few months ago, and had quite a few hurdles that I had to overcome (but I can’t remember them now).

I constantly had the frontend/backend version mismatch, but got it working regardless.

Have you correctly configured

/usr/local/etc/nfsen.conf

?

Have you started the

nfsen

service?

What is at line 456 of

/usr/local/bin/nfsen

?

What web server are you using and how did you configure it?

FreeBSD 10.1 (also is 9.3) [x86] (clean, just downloaded) installed in VirtualBox 4.3.
Then I installed from

/usr/ports

: apache and nfsen
Then I tuned Apache config and simply executed: nfsen start

Code:

root@freeBSD:/usr/home/noob # nfsen start
Error reading profile 'live': Can't open profile data file for profile: 'live' in group '.': No such file or directory
Died at /usr/local/bin/nfsen line 456.

That’s all!

nfsen.conf

=

/usr/local/etc/nfsen.conf
nfsen.txt

=

/usr/local/bin/nfsen

  • nfsen.conf

    9.2 KB

    · Views: 454

  • nfsen.txt

    24.6 KB

    · Views: 462

  • #6

I have written a NfSen howto guide: Thread 49724

It’s currently pending moderator approval, but should be available soon.

  • Summary

  • Files

  • Reviews

  • Support

  • Mailing Lists

  • Tickets ▾

    • Bugs
    • Patches
    • Support Requests
    • Feature Requests
  • News

  • Code

Menu

From: Roberto Carna <rober…@gm…> — 2019-11-24 01:50:06

Dear, what can I do in order to install Perl without thread support from
the official repo???

Is it possible, maybe makeing the package from source from the same repo ???

Thanks again !!!!

El vie., 22 nov. 2019 a las 15:40, <in...@ma...> escribió:

> I guess you have to install perl without threads support.
> Seek a solution in mail list archive:
> https://sourceforge.net/p/nfsen/mailman/search/?q=tid
>
> > On 22 November 2019 at 18:34 Roberto Carna <rober...@gm...>
> wrote:
> >
> >
> > Thnks a lot to both of you....I've installed the three Debian packages
> you
> > suggested to me, the email alerts are sending OK, but the nfsen web
> > interface access has an error again:
> >
> > ERROR: nfsend connect() error: No such file or directory!
> > ERROR: nfsend - connection failed!!
> > ERROR: Can not initialize globals!
> >
> > And now I can see in /var/log/syslog this new message:
> >
> > PANIC nfsend dies: Can't locate object method "tid" via package "threads"
> > at /usr/share/perl/5.28/XSLoader.pm line 111
> >
> > Please can you help me again? I'm just finishing nfsen implementation
> and I
> > wanna enjoy this amazing tool.
> >
> > Greetings !!!
> >
> > El vie., 22 nov. 2019 a las 13:21, <in...@ma...> escribió:
> >
> > > Try to install debian packages libio-socket-ssl-perl,
> libnet-smtps-perl.
> > >
> > > > On 22 November 2019 at 16:38 Roberto Carna <rober...@gm...
> >
> > > wrote:
> > > >
> > > >
> > > > Dear, I've implemented two nfsen servers:
> > > >
> > > > 1) Debian 9 + nfsen 1.3.6 + PHP 7.0 + 5.24.1-3+deb9u5
> > > > 2) Debian 10 + nfsen 1.3.8 + PHP 7.3 +  5.28.1-6
> > > >
> > > > I've setup alerts with email sending, and everything is OK. But when
> a
> > > > alert appears, the email is sent but I can't connect to the web
> interface
> > > > because I get this error message:
> > > >
> > > > Nov 22 11:00:15 mitlpnfw01 nfsen[825]: PANIC nfsend dies: Can't
> locate
> > > > IO/Socket/SSL.pm in @INC (you may need to install the IO::Socket::SSL
> > > > module) (@INC contains: /data/nfsen/libexec /etc/perl
> > > > /usr/local/lib/x86_64-linux-gnu/perl/5.24.1
> /usr/local/share/perl/5.24.1
> > > > /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5
> > > > /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24
> > > > /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at
> require
> > > > IO::Socket::SSL; line 28.
> > > >
> > > > Effectivily line 28 from  /usr/share/perl/5.24/Net/SMTP.pm file shows
> > > this:
> > > >
> > > > require IO::Socket::SSL;
> > > >
> > > > So I try to install the missing module:
> > > >
> > > > cpan> install  IO::Socket::SSL
> > > >
> > > > but I fail in both cases.
> > > >
> > > > Please what can I do in order to install that module or put nfsen to
> work
> > > > in a correct way ?
> > > >
> > > > Special thanks !!!
> > > > _______________________________________________
> > > > Nfsen-discuss mailing list
> > > > Nfsen...@li...
> > > > https://lists.sourceforge.net/lists/listinfo/nfsen-discuss
> > >
> > _______________________________________________
> > Nfsen-discuss mailing list
> > Nfsen...@li...
> > https://lists.sourceforge.net/lists/listinfo/nfsen-discuss
>

View entire thread

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.

spacetest

проходил мимо
Сообщения: 7
Зарегистрирован: 2014-10-09 22:49:50

nfsen на freebsd 9.3

У меня FreeBSD 9.3-RELEASE, хочу поставить nfsen для визуализирования NetFlow от nfdump.
Установка из портов (всё обновлено) .. все зависимости.
Заходу на 192.168.1.2/nfsen/nfsen.php

Код: Выделить всё

Frontend - Backend version missmatch!
ERROR: nfsend connect() error: No such file or directory!
ERROR: nfsend - connection failed!!
ERROR: Can not initialize globals!

Якобы всё номально, просто осталось запустить nfsen.
Запускаю

Код: Выделить всё

root@Route:/ # nfsen start
Error reading profile 'live'
Died at /usr/local/bin/nfsen line 456.
root@Route:/ #

якобы профиль live пустой, но он же должен был из портов сам создаться ?
Папки:
/usr/local/var/nfsen/profile/live — есть, но пустые

вот ещё каких ошибок получилось добиться манипулируя конфигами

Код: Выделить всё

ading hints: can't open /usr/local/var/nfsen/profiles-stat/hints: No such file or directory at /usr/local/libexec/nfsen/NfSen.pm line 798.

root@RouteAgu:/usr/local/var/nfsen/profiles-stat # nfsen --add-profile www ww
Can not connect to nfsend: No such file or directory

nfcapd[61074]: Receive socket error: could not open the requested socket
nfsen[61075]: Error writing profile 'live' in group '.'
nfsen[61075]: Error startup nfsend: Bad file descriptor
nfsen[61075]: PANIC nfsend dies: Unable to write PID file: Bad file descriptor


Dec 17 19:37:45 RouteAgu nfsen[61122]: Error startup nfsend: Bad file descriptor
Dec 17 19:37:45 RouteAgu nfsen[61122]: PANIC nfsend dies: Unable to write PID fi
 Error startup nfsend: Bad file descriptor
 PANIC nfsend dies: Unable to write PID file: Bad


Хостинговая компания Host-Food.ru

Хостинг HostFood.ru

 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/


Учёт, наблюдение сетевого трафика посредством NetFlow v5 протокола через web интерфейс nfsen. FreeBSD 8.2-RELEASE-p6

  • Сайт https://anteh.ru
  • О netgraph

  • Установка настройка сенсора ng_netflow v5

  • Установка настройка коллектора flow-capture

  • Установка настройка nfsen apache22 php5

  • Установка одновременно работающих коллекторов flow-capture и nfdump

  • Конвертация, преобразование уже имеющихся данных netflow v5 к формату nfcapd для просмотра статистики через web интерфейс nfsen 1.3.5

  • sfttonf конвертор netflow v5 статистики созданной flow-capture коллектором к формату nfdump и структуре папок используемых в nfsen

Если в кратце, то для учёта трафика используйте flow-tools или чего-нибудь платное.

Поскольку не знал, что лучше использовать для учёта, то настроил учёт трафика с использованием flow-tools и nfsen. Трафик с интерфейса смотрящего в сеть после IPFW посредством Netgraph расщепляется на 2 потока, один уходит к flow-tools, другой к nfsen. Отсюда и столько текста)

Будет рассмотрена установка настройка nfsen и всего, что нужно для его работы.

Подключение коллектора flow-capture из набора программ flow-tools, для использования параллельно с nfsen.

Конвертация уже имеющихся данных netflow v5 к формату nfcapd, который понимает nfdump коллектор, с последующим просмотром статистики через nfsen. Правда, при конвертации внешней статистики автоматически графики в текущей версии nfsen 1.3.5 не строятся, разбираться как там nfsen с RRDTool завязан нет ни желания ни времени, но саму статистику используя web морду nfsen можно просматривать через фильтр.

Настраиваем сервер для учёта общего трафика, и параметров сетевого обмена через один сетевой интерфейс, смотрящий к провайдеру. Данные будем просматривать через web интерфейс nfsen. СУБД не используется. По аналогии можно настроить для учёта на любом количестве сетевых интерфейсов.

Реализуем цепочку: ipfw->ng_ipfw->ng_netflow->ng_ksocket->nfdump->nfsen. И ipfw->ng_ipfw->ng_netflow->ng_ksocket->flow-capture->sfttonf->nfdump->nfsen. Предполагается, что с фаерволом ipfw пользователь знаком. ipfw как то там настроен и работает. Материал местами изложен избыточно подробно, это может помочь тем кто, как и автор столкнулся с задачей наблюдения за сетевым обменом, учётом трафика, и про netgraph, да и про многое другое, впервые. Замечания принимаются. Ну и если оно вам надо, то все описанные материалы вы будете использовать на свой страх и риск.

Лирическое отступление, о netgraph

Википедия: NetFlow — сетевой протокол, предназначенный для учёта сетевого трафика, разработанный компанией Cisco Systems. Является фактическим промышленным стандартом и поддерживается не только оборудованием Cisco, но и многими другими устройствами (в частности, Juniper и Enterasys). Также существуют свободные реализации для UNIX-подобных систем. Для ознакомления с netgraph нужно почитать: http://citrin.ru/daemonnews/netgraph.html -Всё о netgraph.

Установку компонентов производилась под FreeBSD 8.2 RELEASE p6.

Netflow имеет три основных компонента:

Сенсор. Будем использовать ng_netflow

Коллектор. Возьмем nfdump -идёт в составе nfsen

Система обработки и представления данных. Через web интерфейс nfsen

Съём статистики можно производить через хуки Ethernet интерфейса или через ng_ipfw. Первый способ самый быстрый. Второй использует ng_ipfw, что незначительно добавляет нагрузки, но получаем большую гибкость. IPFW может предварительно отфильтровать ненужный трафик перед передачей его в узел ng_ipfw. ng_netflow, ng_ipfw, ng_ksocket и прочие ng_* -это узлы. Просмотреть все имеющиеся KLD-модули узлов можно, введя команду:

# ls /boot/kernel/ng_*.ko

Узлы, как составные кирпичики, для построения нужной конфигурации обработки сетевых потоков. У каждого узла есть определённый набор крючков(hook) которыми он соединяется с соседними узлами. Узел можно/нужно конфигурировать, запрашивать его состояние, принимать ответные сообщения и т. д. Каждый крючок имеет уникальное имя, которое часто отражает его назначение.

Узел ng_ipfw — интерфейс между ipfw и системой netgraph может присутствовать только в одном экземпляре, создаёт интерфейс для доступа к подсистеме netgraph из IPFW. При загрузке в ядро, модуль автоматически создает свой узел в пространстве подсистемы netgraph с именем «ipfw:». ng_ipfw принимает подключения к произвольным номерным хукам, номера хуков указываются в правилах IPFW. Узел ng_netflow способен получать информацию о проходящем через него трафике и экспортировать ее в виде совместимым с протоколом NetFlow фирмы Cisco. Создание узла всегда происходит с подключением одного из хуков создаваемого узла.

Для взаимодействия ipfw и netgraph в ipfw существует два правила ngtee и netgraph, пример:
ipfw add netgraph 10 all from any to any — направит весь трафик попавший в правило, в хук ipfw:10 модуля ng_ipfw
ipfw add ngtee 20 ip from any to any — скопирует весь трафик попавший в правило, в хук ipfw:20 модуля ng_ipfw Pic1

ng_netflow поддерживает максимальное число крючков, равное NG_NETFLOW_MAXIFACES. Хуки Ng_netflow имеют имена iface0, iface1, iface2, ifaceN. Также соответствующие им out0, out1, out2, outN. И хук экспорта статистики export. Входящий трафик в ifaceN обрабатывается модулем учета. Если подключен соответственный хук outN, трафик без изменений уходит в него, если не подключен — никуда не уходит. Трафик вошедший в хук outN без изменений проходит к хуку ifaceN, без обработки модулем учета. Т.е. фактически на счетчики попадает только входящий трафик в ifaceN. Для управления поведением учета трафика есть настройки, о которых будет рассказано ниже. В итоге через хук export будут выходить UDP дейтаграммы netflow, этот кух обычно подключают к хуку inet/dgram/udp модуля ng_ksocket.

Экспортирует netflow версии v5. Принимаемые модулем контрольные сообщения, они же команды: info, ifinfo, setdlt, setifindex, settimeouts, setconfig, show. Setdlt устанавливает тип интерфейса, подключенного к ifaceN. Из всех возможных вариантов.

(/usr/src/sys/net/bpf.h)
#define DLT_NULL 0 /* BSD loopback encapsulation */
#define DLT_EN10MB 1 /* Ethernet (10Mb) */
#define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */
#define DLT_AX25 3 /* Amateur Radio AX.25 */
#define DLT_PRONET 4 /* Proteon ProNET Token Ring */
#define DLT_CHAOS 5 /* Chaos */
#define DLT_IEEE802 6 /* IEEE 802 Networks */
#define DLT_ARCNET 7 /* ARCNET */
#define DLT_SLIP 8 /* Serial Line IP */
#define DLT_PPP 9 /* Point-to-point Protocol */
#define DLT_FDDI 10 /* FDDI */
#define DLT_ATM_RFC1483 11 /* LLC/SNAP encapsulated atm */
#define DLT_RAW 12 /* raw IP */

Поддерживаются только Ethernet и голый IP, соответственно варианты 1 и 12. Первый вариант установлен по умолчанию. Синтаксис setdlt {iface=0 dlt=12}. Settimeouts — устанавливает таймауты активных и не активных потоков, после которых статистика будет отправлена в коллектор. Синтаксис settimeouts {inactive=15 active=1800}. Таймаут активного потока — по умолчанию 1800 секунд. И таймаут не активного потока по умолчанию 15 секунд. C помощью Info можно просмотреть информацию о настройках таймаутов и проверить работоспособность ng_netflow.

Установка/настройка сенсора ng_netflow v5

В общем можем убедиться, что /boot/kernel/ng_netflow.ko, /boot/kernel/netgraph.ko, /boot/kernel/ng_ipfw.ko и т.д. в наличии.

Добавляем в конфигурационный файл ядра параметры и пере собираем его. Кому не нравится пересборка, могут подключить соотвецтвующие модули динамически. Файл ядра лежит в паке /usr/src/sys/amd64/conf в зависимости от типа вашей системы вместо amd64 может быть другая папка. Не используем оригинальный файл конфигурации ядра GENERIC. Копируем и переименовываем GENERIC например в NNKER. Добавляем параметры в NNKER:

options NETGRAPH

options NETGRAPH_SOCKET

options NETGRAPH_IPFW

options NETGRAPH_NETFLOW

options NETGRAPH_KSOCKET

Пере собираем и устанавливаем новое ядро:

Проверяем, что есть папка /usr/src/sys/amd64/compile, если папки нет, то создаём её, иначе команда config не отработает будет ругаться No such file or directory.Pic2 Pic3

NNKER в текущем случае имя конфигурационного файла ядра, если всё в в порядке то увидим что то вроде:Pic4

Если не всё в порядке, то исправляем ошибки в файле конфигурации ядра.

Далее идём в:Pic5

И выполняем команду:Pic6

Через минут 40 или несколько часов, процесс завершится и производим перезагрузку.

Предполагается, что с IPFW пользователь знаком, и сейчас IPFW настроен и работает. В текущей конфигурации используется IPFW + ядерный NAT. В общем параметры ядра для ядерного NAT:

options IPFIREWALL

options IPFIREWALL_NAT

options LIBALIAS

Нужен ли вам NAT решаем сами. Добавляем в файл конфигурации IPFW строки:

(Это только пример, чтобы через # ipfw show | more посмотреть, что правила срабатывают и трафик уходит в ng_ipfw. re1 имя сетевого интерфейса)

/sbin/ipfw -q add 00440 ngtee 10 ip from any to any out xmit re1 # Исходящий трафик

/sbin/ipfw -q add 00450 ngtee 20 ip from any to any in recv re1 # Входящий трафик

/sbin/ipfw -q add 00460 ngtee 30 ip from any to any via re1 # Исходящий + входящий

Куда их добавлять, сколько и в каком виде решаем сами, здесь приведён пример. Сам использовал только одно правило, если как в примере, то правило с номером 00460. Разница между правилами ngtee и netgraph в том, что все пакеты попавшие в правило netgraph передаются только в ng_ipfw и дальше по цепочке IPFW не передаются. Пакеты попавшие в ngtee передаются и в ng_ipfw и дальше по цепочке IPFW. Или другими словами netgraph направляет весь поток в ng_ipfw, а ngtee направляет копию потока в ng_ipfw и сам поток далее по цепочке IPFW.

Возможно удобней всего входящий и исходящий трафик учитывать отдельно, т.е. если как в примере, то использовать правила 00440 и 00450. Но для упрощения описания будет приведён пример для 00460 правила.

Перезапустить правила IPFW после изменения, в общем случае, можно командами:

# ipfw -q -f flush #Очистка правил ipfw. Разумеется работаем локально. Нужно, если в правилах ipfw не предусмотрена автоматическая очистка.

# /bin/sh /etc/fwall.conf & #Загрузка правил. fwall.conf конфигурационный файл фаервола, создаётся вручную, может иметь любое имя и располагаться где угодно.

Проверяем работоспособность модуля ng_ipfw скомпилированного с ядром, нужно убедиться, что происходит передача пакетов от ipfw к ng_ipfw:

# ngctl

+ list

Увидим примерно следующее:Pic7

Ipfw -узел ng_ipfw

Ngctl1724 -узел запущенного экземпляра ngctl

# kldstatPic8

Здесь увидим только kernel модуль, если будут присутствовать другие подгруженные netgrapg модули, то после компиляции соответствующих модулей в ядро их здесь не будет.

Проверяем происходит ли передача пакетов от фаервола IPFW к узлу ng_ipfw:

Произведём какие либо действия, приводящие к сетевому обмену, например обновление портов #portsnap fetch, или обновим интернет страницу на компьютере локальной сети стоящим за NAT. Далее запускаем команду просмотра правил IPFW:

# ipfw show | more

Ищем номера ipfw правил(первый столбец), указанных для ngtee и должны увидеть, что количество пакетов(второй столбец), к-во байт(третий) для каждого из правил не нулевое пример: Pic9

Правило 00440 направит/скопирует весь трафик попавший в правило в хук ipfw:10 модуля ng_ipfw. Правило 00450 направит/скопирует весь трафик попавший в правило в хук ipfw:20 модуля ng_ipfw. Правило 00460 направит/скопирует весь трафик попавший в правило в хук ipfw:30 модуля ng_ipfw.

Три правила 00440, 00450, 00460 использовались исключительно для примера, можно обойтись и одним для одного сетевого интерфейса.

В общем убедились, что из фаервола ipfw пакеты передаются в netgraph узел «ipfw:».

Чтобы не плодить конфигурационные файлы, в конфигурационный файл фаервола ipfw добавляем скрипт настройки узлов, плохо или нет туда его добавлять не знаю, всё работает. Добавляется до начала описания правил. Кусок конфигурационного файла фаервола:

#netgraph ipfw->ng_ipfw->ng_netflow->ng_ksocket->127.0.0.1:56783

/usr/sbin/ngctl -f- <<-SEQ

mkpeer ipfw: netflow 30 iface0

name ipfw:30 IPFWtoNetFlow

msg IPFWtoNetFlow: setdlt {iface=0 dlt=12} #Interfase type: possible 1 or 12

msg IPFWtoNetFlow: setifindex {iface=0 index=3} #Number equivalent re1 is 3

msg IPFWtoNetFlow: settimeouts {inactive=16 active=1801}

mkpeer IPFWtoNetFlow: ksocket export inet/dgram/udp

name IPFWtoNetFlow:export Ksock

msg Ksock: connect inet/127.0.0.1:56783 # nfcadp(nfsen)

SEQ

mkpeer ipfw: netflow 30 iface0 #производит создание безымянного узла типа netflow и устанавливает соединение между крючками ipfw:30 и <пока безымянный узел типа netflow>:iface0. Цифра 30 берётся из конфигурационного файла фаервола ipfw она идёт за именем правила ngtee. iface0 стандартное имя крючка для узла типа netflow.

name ipfw:30 IPFWtoNetFlow #назначаем имя «IPFWtoNetFlow» безымянному узлу типа netflow.

msg IPFWtoNetFlow: setdlt {iface=0 dlt=12} #устанавливаем тип интерфейса 12 для крючка iface0. Варианта два либо 1 либо 12, 1 установлен по умолчанию и здесь не подходит. 12 -принимать через iface0 чистые IP пакеты.

msg IPFWtoNetFlow: setifindex {iface=0 index=3} #Здесь устанавливаем номер интерфейса(параметр index=), в который пакет вошел. Каждому имени интерфейса re1 re2 nfe0 и т.д. сопоставляется некий номер. При некоторых вариантах реализации сетевого обмена получается так, что этот номер для узла ng_netflow неизвестен или неправильный и явное указание этого номера решает проблему. Предполагаю, что т.к. пакеты мы берём из ipfw то правильный индекс уже был проставлен и эта настройка ни на что не повлияет и нахрен не нужна. Но если уж приспичило, то для выяснения чему равен index=??? или номер сетевого интерфейса, с которого снимаем статистику, делаем следующее:

Создаём файл с расширением .c например if_nametoindex.c. В пустой if_nametoindex.c файл добавляем:

#include <sys/socket.h>

#include <net/if.h>

using namespace std;

#include <iostream>

int main(int argc, char **argv)

{ for (int i = 1; i < argc; i++)

{ cout << argv[i] << » = » << if_nametoindex(argv[i]) << «n»;

}

return 0;

}

ПЕРЕВОД СТРОКИ В КОНЦЕ ФАЙЛА ОБЯЗАТЕЛЕН

Находясь в тойже директории, что и if_nametoindex.c выполняем компиляцию:

# c++ -o if_nametoindex if_nametoindex.c

Появится исполняемый файл, который зелёный если через mc-light на него смотреть. Далее запускаем исполняемый файл:

# ./if_nametoindex «re1» «re2» «lo0»

re1 = 3

re2 = 4

lo0 = 7

Запускается одним или несколькими параметрами через пробел. В качестве параметра в main передаётся имя/имена сетевого/ых интерфейса/ов и в ответ выдаётся соответствующий номер, который и присваиваем index=3 для re1.

Соответственно, если произвести добавление/удаление сетевой карты, то эти цифры могут поменяться, нужно будет подправлять значения. На разных компьютерах соответствие имени сетевого интерфейса его номеру может быть/будет разным.

msg IPFWtoNetFlow: settimeouts {inactive=16 active=1801} #устанавливает таймауты активных и не активных потоков, после которых статистика будет отправлена в коллектор. Синтаксис «settimeouts { inactive=15 active=1800 }» По умолчанию таймаут активного потока 1800 секунд, не активного 15 секунд.

mkpeer IPFWtoNetFlow: ksocket export inet/dgram/udp #производит создание безымянного узла типа ksocket и устанавливает соединение между крючками IPFWtoNetFlow:export и <пока безымянный узел типа ksocket>: inet/dgram/udp.

name IPFWtoNetFlow:export Ksock #назначаем имя «Ksock» безымянному узлу типа ksocket.

msg Ksock: connect inet/127.0.0.1:56783 #Куда отправляем netflow данные задаём хост и порт, на который будут уходить наши пакеты. В текущем случае коллектор находится на этом же компьютере поэтому всё засылаем на loopback.

Перезапускаемся на всякий

Настройку цепочки «ipfw -> ng_ipfw -> ng_netflow -> ng_ksocket ->127.0.0.1:56783» закончили, проверим что получилось.

Проверяем собралась ли нужная нам цепь:

# ngctl

+ lsPic10

Если вывод подобный, то всё в порядке.

Проверим принимаются ли данные в узел ng_netflow «IPFWtoNetFlow:»:

# ngctl

+ msg IPFWtoNetFlow: infoPic11

Видим, что чтото принимается.

Проверим отправляет ли узел «Ksock» что ни будь на 56783 порт. В конфигурационном файле фаервола прописываем разрешающее правило для 127.0.0.1 на 56783 порт и при наличии обмена, после команды

# ipfw show | more

можем видеть, что вторая и третья колонки соответствующего правила не нулевые, значит какие то данные узел «Ksock» передаёт, например, если вместо 127.0.0.1 был бы настроен 192.168.10.1, то увидим: Pic12

Убираем всё лишнее из конфигурационного файла ipfw.

Цепочка ipfw->ng_ipfw->ng_netflow->ng_ksocket-> inet/127.0.0.1:56783 настроена.

Теперь к 56783 порту теперь можем подключить какой либо коллектор. В текущем случае, подключаем либо nfsen(коллектор + веб морда), либо flow-capture(коллектор).

Установка/настройка коллектора flow-capture вместо nfdump(если устанавливаем nfsen, то раздел пропускаем):

Для разграничения nfsen и flow-capture коллекторов можно использовать разные номера портов. Можно настроить и одновременную работу, в этом случае нужно настроить несколько ksocket один на nfsen второй на flow-capture. Но для упрощения описания оставим настройки netgraph такими же. Т.е. если используем flow-capture то nfsen не запускаем и наоборот.

Устанавливаем из портов flow-tools:Pic13

# make install clean

Создаём каталог /usr/flows для хранения записей netflow потока. Группа flowtools и пользователь flowtools создаются автоматически при установке flow-tools.

Назначаем группу(flowtools) и владельца(flowtools) папке /usr/flows:

# chown -R flowtools:flowtools /usr/flows

В /etc/rc.conf добавляем строки:

#flow-tools

flow_capture_enable=»YES»

flow_capture_user=»flowtools»

flow_capture_group=»flowtools»

flow_capture_datadir=»/usr/flows»

flow_capture_localip=»127.0.0.1″ #ip машины, на которой запущен коллектор flow-tools

flow_capture_remoteip=»127.0.0.1″ #ip машины, с которой мы принимаем flow поток

flow_capture_port=»56783″ #порт коллектора flow-capture на котором он слушает и получает данные

flow_capture_flags=»-N 3 -n 288 -z 0 -E 100G -V 5 -S 5″

#-N3 хранение файлов данных в папках YYYY/YYYY-MM/YYYY-MM-DD/flow-file, задает глубину иерархии каталогов

#-n288 24*60/288=5min количество записей в день т.е. если =288 то файл создаётся раз в 5 минут

#-z0 уровень сжатия данных выбирается от 0 до 9. 0-без компрессии, 9-максимальная компрессия. На компрессию потребуется дополнительные ресурсы процессора.

#-E100G под данные netflow отводится 100G -100 гигабайт. По достижению предела, судя по всему данные будут циклически перезаписываться.

#Параметр -S5 указывает размер интервала в минутах, в течение которого flow-capture будет записывать информацию о счетчиках пакетов в лог-файл.

#-V5 версия netflow

#-S5 Интервал времени в минутах, по истечении которого демон будет генерировать статистику о числе полученных потоков, числе обработанных пакетов, а также число потерянных потоков. Информация заносится в системный журнал /var/log/messages. Правда не наблюдал, чтобы туда что либо записывалось.

Проверяем, чтобы в конфигурационном файле фаервола ipfw была строка

msg Ksock: connect inet/127.0.0.1:56783

Перезагружаемся и проверяем, запустился ли сервис flow-capture:

# sockstat -4 -l | grep flowPic14

Если видим подобное, то всё в порядке. Проверяем также, что в папке /usr/flows с интервалом в 5 минут появляются файлы. Через mc-light выглядеть это будет так:Pic15

Можно по обновлять страницы в браузере, и убедиться, что размеры последующего файла будут меняться. Согласно настройкам за 24часа будет создано 288 файлов(параметр -n 288) файл раз в 5 минут. Если нужно запустить несколько копий flow-capture, необходимо задать несколько каталогов для записи данных в переменной flowcapture_dir. Прослушиваемый порт, в этом случае, будет автоматически увеличиваться на 1для каждой копии flow-capture.Например, пусть:

flowcapture_dir=»/var/netflow/in /var/netflow/out»

flowcapture_port=8818

Тогда данные, поступающие на порт 8818 буду попадать в каталог /var/netflow/in,а, поступающие на порт 8819 — в каталог /var/netflow/out.

Содранный пример настроек для нескольких коллекторов трафика, на случай если придётся(нижеприведённые строки настроек никуда не вписываем, не обращаем внимания):

# Разрешаем старт flow_capture

flow_capture_enable=»YES»

#Указываем ip адрес на котором будет слушать flow_capture

flow_capture_localip=»107.25.214.157″

#Делаем 2 разных коллектора трафика для 2 роутеров

flow_capture_profiles=»router1 router2″

#Директория где будут сохраняться принятые флоу записи для первого роутера

flow_capture_router1_datadir=»/var/db/flows/router1″

#Порт на котором слушает флоу для первый роутера

flow_capture_router1_port=»5632″

#Флаги для первого роутера

flow_capture_router1_flags=»-E20G -n287 -N-2″

#Далее аналогично, но для второго роутера

flow_capture_router2_datadir=»/var/db/flows/router2″

flow_capture_router2_port=»5633″

flow_capture_router2_flags=»-E5G -n287 -N-2″

flow-capture настроили. Теперь пользуясь различными flow-tools программами можно просматривать трафик на настроенном сетевом интерфейсе.

Установка/настройка nfsen apache22 php5

Устанавливаем в следующей последовательности:

apache22

PHP5 с поддержкой apache

nfsen

Устанавливаем web сервер apache22

# whereis apache22

apache22: /usr/ports/www/apache22

# cd /usr/ports/www/apache22

# make && make install && make clean

# rehash

в /etc/rc.conf добавляем строку

apache22_enable=»YES»

редактируем /usr/local/etc/apache22/httpd.conf

Listen 192.168.200.2:80 #-IP локальной сети, сетевой карты компьютера, на котором установлен apache. Apache будет обрабатывать запросы пришедшие только на этот сетевой интерфейс и на указанный порт.

ServerName 192.168.200.2 #Можно не указывать, но на всякий случай рекомендуют чтоб было. Поскольку DNS записи нет, то в качестве имени указываем IP

DocumentRoot «/usr/local/www/nfsen»

Или

DocumentRoot «/usr/local/www/apache22/data»

Alias /nfsen «/usr/local/www/nfsen»

После:

<Directory />

AllowOverride None

Order deny,allow

Deny from all

</Directory>

Добавляем:

<Directory «/usr/local/www/nfsen»>

Options Indexes FollowSymLinks

DirectoryIndex nfsen.php

AllowOverride None

Order allow,deny

Allow from all #1 Что в строках 1 и 2 написать решаем сами

#Allow from 192.168.ля.ля #2 в общем случае доступ разрешён отовсюду

</Directory>

Комментируем:

#<Directory «/usr/local/www/apache22/data»>

# Options Indexes FollowSymLinks

# AllowOverride None

# Order allow,deny

# Allow from all

#</Directory>

Раз комментируем

# Various default settings

Include etc/apache22/extra/httpd-default.conf

Комментируем:

#<IfModule ssl_module>

#SSLRandomSeed startup builtin

#SSLRandomSeed connect builtin

#</IfModule>

После установки php проверяем, чтобы в конце файла были строки:

Include etc/apache22/Includes/*.conf

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

Редактируем /usr/local/etc/apache22/extra/httpd-default.conf

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 5

UseCanonicalName Off

AccessFileName .htaccess

ServerTokens Prod

ServerSignature Off

HostnameLookups Off

файл /usr/local/etc/apache22/httpd.conf проверяем на ошибки командой
# apachectl configtest

Syntax OK

Всё хорошо.

Просто инфа: управление apache возможно следующими командами:

# apachectl start
# apachectl restart
# apachectl graceful
# apachectl stop

Устанавливаем PHP5, для apache22 и nfsen.

# whereis php5

php5: /usr/ports/lang/php5

# cd /usr/ports/lang/php5

# make && make install && make clean

Нужно, чтобы была выбрана опция Build Apache module

Если в процессе установки/переустановки окно с опциями не появилось, то:

# make deinstall удаляем то, что было установлено

# make config вызов

# make && make install && make clean снова установка Pic16

Проверяем, чтобы в /usr/local/etc/apache22/httpd.conf появились строки:

LoadModule php5_module libexec/apache22/libphp5.so

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

Если последние 2 строки не появились, добавляем их вручную в конец файла.

Устанавливаем nfsen:

nfsen не работает с flow-tools данными, он использует свой коллекто nfdump, у которой свой формат хранения netflow данных, отличный от flow-tools. Но есть ft2nfdump — конвертор данных из формата flow-tools в nfdump.

Нужно проверить версию порта libtool

# pkg_info | grep libtool

Во время текущей установки, с версией libtool-2.2.10 выдаётся ошибка и требует обновления до 2.4. Обновляем через portupgrade. Если не установлен portupgrade, то ставим:Pic17 Pic18

Инфа про portupgrade:

-r с рекурсивным обновлением всех зависимостей

-b создание резервной копии старых версий пакетов

-a обновление всех установленных пакетов

-f форсированное обновление пакетов — здесь следует подробно изучить UPDATING

Вместо имени обновляемого пакета могут использоваться выражения, например при обновление всех пакетов начинающихся на php5 можно использовать команду: #portupgrade ‘php5*’

Настройка поведения portupgrade производится в файле /usr/local/etc/pkgtools.conf.

# rehash

Проверяем, какие порты можно обновить:

# pkg_version -v | grep «need»

Выводится ряд строк, в том числе и:

libtool-2.2.10 < needs updating (port has 2.4_1)

Смотрим информацию о пакете:

# pkg_info | grep libtool информация о порте

# portupgrade libtool обновление порта

# pkg_info | grep libtool информация о порте

libtool-2.4_1 Generic shared library support script

libtool обновили до libtool-2.4_1

снова запускаем установку пакета nfsen, вместе с ним установятся все нужные зависимости:Pic19

# rehash

Если в процессе установки периодически наблюдаем строки

«===> WARNING: Vulnerability database out of date, checking anyway»

То ждём, когда закончится установка и делаем:

# portaudit -Fad

Если portaudit не установлен, то ставим. Pic20

Видим, что с пакетом косяк «Affected package: ruby-1.8.7.302,1»

# pkg_version -v | grep «need» выводим список портов, которые можно обновить

И в списке видим ruby-1.8.7.302,1

# portsnap fetch ;на всякий

# portupgrade ruby обновление порта

# pkg_info | grep ruby

ruby-1.8.7.352_2,1 An object-oriented interpreted scripting language

# portaudit -Fad

auditfile.tbz 100% of 72 kB 62 kBps

New database installed.

Database created: Wed Jan 18 01:45:00 GMT-4 2012

0 problem(s) in your installed packages found.

Теперь всё ок.

# find / -name ft2nfdump

/usr/local/bin/ft2nfdump

Видим, что nfdump и нужный нам ft2nfdump установлены.

Если нужно, то для проверки возможности конвертации из файлов созданных flow-capture в файлы nfdump производим такое преобразование над одним из файлов.

ns1# ft2nfdump -r /usr/flows/2012/2012-01/2012-01-17/ft-v05.2012-01-17.000459+0400 | nfdump | less

Date flow start Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows

2012-01-17 00:04:12.429 0.000 UDP 85.21.78.91:123 -> 120.18.125.114:123 1 76 1

2012-01-17 00:04:12.429 0.000 TCP 61.128.172.133:16348 -> 120.88.125.114:22 1 48 1

2012-01-17 00:04:25.429 4.000 TCP 94.245.82.12:80 -> 120.88.125.114:42055 3 308 1

Видим, что один из файлов netflow потока созданный flow-capture был прочитан, даже видим, что какая то зараза на 22й порт ломится во второй строке. И данные какого то сервера времени на 123й порт.

Просто инфа про управление nfsen

Файл настроек nfsen находится в /usr/local/etc/nfsen.conf

Запуск nfsen:

/usr/local/bin/nfsen start

# nfsen start

Перезапуск после внесения изменений в /usr/local/etc/nfsen.conf

/usr/local/bin/nfsen reload

# nfsen reload

# nfsen stop

Всегда проверяем на ошибки syslog файл /var/log/messages

Для автозапуска nfsen можно, например в конфигурационный файл файервола, добавить строку:

#Nfsen start:

/usr/local/bin/nfsen start

Запустим nfsen:

# nfsen startPic21

Видим, что стартовало 3 коллектора настроенных по умолчанию, они не нужны, отключаем. Информация собираемая коллекторами находится в папке /usr/local/var/nfsen/profiles-data/live

В файле конфигурации /usr/local/etc/nfsen.conf отключаем три работающих коллектора. Точнее 2 коллектора и один(upstream1) не нашол что это такое. Сбор информации, по умолчанию, производится с источников peer1 peer2 и upstream1. Для их отключения параметру ‘port’ присваиваем значение 0:

%sources = (

‘upstream1’ => { ‘port’ => ‘0’, ‘col’ => ‘#0000ff’, ‘type’ => ‘netflow’ },

‘peer1’ => { ‘port’ => ‘0’, ‘IP’ => ‘172.16.17.18’ },

‘peer2’ => { ‘port’ => ‘0’, ‘IP’ => ‘172.16.17.19’ },

);

# nfsen stop

# nfsen start Pic22

Видим, что коллекторы отключены, отлично.

Проверяем работу nfsen, пока без файлов данных:

В браузере набираем, ну или какой адрес был выбран:

http://192.168.200.2/nfsen/nfsen.php

Если в браузере видим:

ERROR: nfsend connect() error: No such file or directory!

ERROR: nfsend — connection failed!!

ERROR: Can not initialize globals!

Значит nfsen не запущен

# nfsen start

В браузере видим что то вроде этого: Pic23

Переходим на вкладку Stats и видим: Pic24

Подобные проблемы возможно возникают, если вопрос с переходом на летнее/зимнее время, в связи с его отменой, был решён при копировании файла /usr/share/zoneinfo/Etc/GMT-4 (если для московского времени) в папку /etc и последующим его переименованием в localtime. При таких действиях на команду

# date будет следующий вывод.Pic25

В общем нужно сделать всё по честному:

# whereis zoneinfo

zoneinfo: /usr/ports/misc/zoneinfo

# cd /usr/ports/misc/zoneinfo

# make && make install && make clean

# tzsetup

Появляется первый диалог отвечаем нет, далее по ходу пьесы

Рекомендуется сделать перезагрузку, далее

# date

Thu Jan 19 17:00:15 MSK 2012

Всё отлично

Проверяем, что получилось и… ничего не получилось, ну хоть время стало временней чем было.

Тогда файл /usr/local/etc/php.ini-production копируем в эту же директорию /usr/local/etc/ с заменой имени на php.ini, далее в php.ini находим строки:

[Date]

; Defines the default timezone used by the date functions

; http://php.net/date.timezone

;date.timezone =

Раз комментируем (удаляем ;) четвёртую строку и присвоим ей следующее значение:

date.timezone = Europe/Moscow

либо перезапускаем apache, либо компьютер, проверяем что получилось:Pic26

Предупреждений нет, пол дела сделано. Для полного фен Шуя нужно установить ntp сервер времени, как это сделать и зачем оно надо, можно посмотреть в сети.

Настраиваем коллектор nfdump на приём данных от ранее настроенного сенсора:

конфигурации nfsen /usr/local/etc/nfsen.conf

# nfsen stop

Заменяем существующие настройки для %sources = (… на строки:

%sources = (

‘allin’ => { ‘port’ => ‘56784’, ‘IP’ => ‘127.0.0.1’ },

);

allin здесь имя папки /usr/local/var/nfsen/profiles-data/live/allin в эту папку коллектор и будет складывать все данные.

ns1# nfsen start

Configured sources do not match existing sources. Run ‘nfsen reconfig’ first!

ns1# nfsen reconfig

New sources to configure : allin

Remove configured sources: peer2 upstream1 peer1

Continue? [y/n] y

Add source ‘allin’

Подождём минут 15 и посмотрим в папку /usr/local/var/nfsen/profiles-data/live/allin там должны появиться файлы коллектора.

В браузере пишем http://192.168.200.2/nfsen/nfsen.php и видим что то похожее на картинку ниже. На картинке данные накопленные за несколько дней. В общем что то видим. Pic27

На картинке не показана нижняя часть со статистикой.

Как, что, и где настраивается в nfsen смотрим в сети.

Подгрузить существующие данные, собранные не nfdump получилось, но картинок для них не строится. Т.е. графики видны только для данных собранных местным nfdump коллектором. Данные сконвертированные из flow-capture можно посмотреть через фильтр в nfsen, но графики для них не рисуются. Как произвести преобразование из flow-capture в nfdump и поместить в nfsen речь пойдёт ниже.

На всякий поставим на сбор данных ещё и flow-capture коллектор, что удобней будет потом разберёмся, благо трафик никакой и места лишнего на винчестере полно.

Установка одновременно работающих коллекторов flow-capture и nfdump Pic28

ng_hub — принимает данные на любом подключенном хуке с произвольным именем, и отправляет эти данные без изменений на все подключенные хуки. Контрольных сообщений не принимает.

В конфигурационном файле фаервола меняем скрипт настройки netgraph. Добавляем модуль ng_hub, для размножения потоков netflow v5 на 2 порта для flow-capture и nfdump, меняем скрипт настройки netgraph на следующий:

# NETGRAPH

# ipfw->ng_ipfw->ng_netflow->ng_hub|-> ng_ksocket->127.0.0.1:56783 #flow-capture

# |-> ng_ksocket->127.0.0.1:56784 #nfdump

/usr/sbin/ngctl -f- <<-SEQ

mkpeer ipfw: netflow 30 iface0

name ipfw:30 IPFWtoNetFlow

msg IPFWtoNetFlow: setdlt {iface=0 dlt=12} #Interfase type: possible 1 or 12

msg IPFWtoNetFlow: setifindex {iface=0 index=3} #Number equivalent re1 is 3

msg IPFWtoNetFlow: settimeouts {inactive=16 active=1801}

mkpeer IPFWtoNetFlow: hub export hook0

name IPFWtoNetFlow:export hubb

mkpeer hubb: ksocket hook1 inet/dgram/udp

name hubb:hook1 KsockFC

msg KsockFC: connect inet/127.0.0.1:56783 #for flow-capture collector

mkpeer hubb: ksocket hook2 inet/dgram/udp

name hubb:hook2 KsockNFCD

msg KsockNFCD: connect inet/127.0.0.1:56784 #for nfdump(nfsen) collector

SEQ

Кому хочется можно ng_hub, запускаемый модулем на данный момент, скомпилировать с ядром (options NETGRAPH_HUB).

Можем посмотреть, что подгруженно как модуль:

# kldstat

Конвертация/ преобразование уже имеющихся данных netflow v5 к формату nfcapd для просмотра статистики через web интерфейс nfsen 1.3.5. Но, графики для внешней статистики nfsen 1.3.5 не строит

Файлы netflow v5 сгенерированные flow-capture будут конвертированы и помещены в нужные папки, согласно текущим настройкам иерархии директорий nfsen. nfsen настроен и работает.

В файле /usr/local/etc/nfsen.conf добавляем запись отключённого коллектора flowcapt параметр ‘port’ => ‘0’. Работающий коллектор allin, или то что у вас настроено не трогаем.

%sources = (

‘flowcapt’ => { ‘port’ => ‘0’, ‘col’ => ‘#0000ff’, ‘type’ => ‘netflow’ },

‘allin’ => { ‘port’ => ‘56784’, ‘IP’ => ‘127.0.0.1’ },

);

Далее:

# nfsen stop

Configured sources do not match existing sources. Run ‘nfsen reconfig’ first!

# nfsen reconfig

New sources to configure : flowcapt

Continue? [y/n] y

Add source ‘flowcapt’

Start/restart collector on port ‘0’ for [no collector]

Restart nfsend:[68019]

Появилась новая директория /usr/local/var/nfsen/profiles-data/live/flowcapt

Пусть данные netflow v5 созданные flow-capture коллектором находятся в папке /usr/flows

Качаем утилиту sfttonf и конфигурационный файл к ней. Помещаем sfttonf и конфигурационный файл пускай в одну и туже папку /aa. Что за sfttonf такой описано ниже.

sfttonf использует ft2nfdump конвертор netflow v5. Не знаю, конвертирует ли ft2nfdump сжатые данные flow-capture, проверял только на не сжатых.

Убеждаемся, что в /usr/local/etc/nfsen.conf параметр:

$SUBDIRLAYOUT = 1; это # 1 %Y/%m/%d year/month/day -иерархия директорий, в которых хранятся данные, эту структуру можно менять, но потребуется перезапуск nfsen и некоторые манипуляции о которых nfsen сообщит при запуске. nfsen stop, nfsen start.

К месту, nfsen читает как сжатые, так и несжатые nfcapd. Файлы.

Редактируем конфигурационный файл sfttonf.conf, в текущем случае интересует только одна строка /usr/flows > /usr/local/var/nfsen/profiles-data/live/flowcapt %Y/%m/%d %z которая означает: брать flow-capture файлы из /usr/flows преобразовывать, сжимать(%z) и помещать в /usr/local/var/nfsen/profiles-data/live/flowcapt/YYYY/mm/dd согласно году месяцу и дате содержащимся в имени их файла. Параметр %z означает что выходные файлы nfcapd. будут сжиматься. %Y/%m/%d такая иерархия директорий соответствует параметру $SUBDIRLAYOUT = 1; в /usr/local/etc/nfsen.conf. Nfsen жестко привязан к иерархии папок, в которых хранятся netflow данные. А также к именам файлов данных, и даже к времени их создания раз в 5 минут.

НАЧАЛО конфигурационного файла для sfttonf

# For creation sub hierarchy you can use %Y %m %d %H key words and another character

# in any combination

# If key words for sub hierarche will not be used that will be used sub hierarchy the sam

#—EXAMPL————————EXAMPL——————————EXAMPL—

#</flow-capture source folder> > </nfsen destination folder>

#</flow-capture source folder> > </nfsen destination folder> %Y / %m / % d %z

#</flow-capture source folder> > </nfsen destination folder> %Ybla /%Ybla%mb

#</flow-capture source folder> > </nfsen destination folder> %Y/%Y-%m/%Y-%m-%

#—————————————————————————

/usr/flows > /usr/local/var/nfsen/profiles-data/live/flowcapt %Y/%m/%d %z

# /3 > /T5 %Y/%m/%d

#/usr/flows > /T6 %Y/%m/%d

#/usr/flows > /T3 %Ynah%de%mhr%H/lala%H%Y/%mmumu

#/usr/flows/in > /usr/local/var/nfsen/profiles-data/live/allin

#/usr/flows/out > /usr/local/var/nfsen/profiles-data/live/allout

#ServSt. Not remove last string

ОКОНЧАНИЕ

Запускаем из /aa директории sfttonf:

# ./sfttonf /etc/sfttonf/sfttonf.conf

ft2nfdump -r /usr/flows/2012/2012-02/2012-02-01/ft-v05.2012-02-01.011945+0400 | nfdump -z -w /usr/local/var/nfsen/profiles-data/live/flowcapt/2012/02/01/nfcapd.201202010119

ft2nfdump -r /usr/flows/2012/2012-02/2012-02-01/ft-v05.2012-02-01.012443+0400 | nfdump -z -w /usr/local/var/nfsen/profiles-data/live/flowcapt/2012/02/01/nfcapd.201202010124

ft2nfdump -r /usr/flows/2012/2012-02/2012-02-01/ft-v05.2012-02-01.012943+0400 | nfdump -z -w /usr/local/var/nfsen/profiles-data/live/flowcapt/2012/02/01/nfcapd.201202010129

Convertion finished

=== anteh.ru ===

Выполняем команды:

# nfsen -r live #что то вроде применения последних изменений

После выполнения должен появиться файлик .nfstat в /usr/local/var/nfsen/profiles-data/live/flowcapt.

# nfsen -l live #проверка применения последних изменений

Набираем в браузере:

http://<ip адрес на котором слушает web сервер>/nfsen/nfsen.php

приведу ещё раз картинку с настроенным nfsen, графики от встроенного nfdump коллектора, от внешне подключённой статистики графиков не будет. Pic29

Нижняя часть скриншота не влезла

На скриншоте данные записываемые встроенным коллектором nfdump. Ну в общем картинки по крайней мере в моём случае мало интересны, интерес представляет просмотр данных статистики через фильтр. Для того, чтобы как то научиться пользоваться nfsen, нужно к нему привыкнуть, многие вещи тут по началу не очевидны.

Не удалось разобраться, почему nfsen не рисует графики для внешних netflow баз статистики. Даже если свои собственные прикреплять как внешние(копирование существующей nfcapd статистики в …/live/<папка>), то графиков всё равно не видно. Возможно нужны какие-то манипуляции с RRDTool. Но просматривать статистику для внешних баз, через фильтр по web интерфейсу, можно, но только с профиля live, собственно что ещё нужно. Ни с одного созданного профиля что-либо прочитать не удалось.

Для работы с внешней подключённой базой нужно на вкладке details в профиле live в нижней части экрана после надписи Netflow Processing выбрать Source: ранее созданный flowcapt. Чтобы просматривать статистику через фильтр на пустом графике нужно указать диапазон времени, в котором будем просматривать базу. Нужно выбрать channel: только flowcapt затем Select->Time window и растащить курсор в разные стороны, попутно выбрав в Display масштаб времени за который нужно просматривать статистику. Задать какое-нибудь значение в фильтре, например any. И ещё левой половиной курсора просмотра на графике умудриться попасть в нужный начальный интервал времени, короче должен существовать файл с именем содержащем такую же дату и время, как указано в параметре tstart 2012-02-01-02-45 иначе будет выдано предупреждение, что такого файла нет. Можно файл в ручную переименовать, или посмотреть, чтобы такой существовал и выставить на него левую границу курсора. Но если учесть что коллектор nfdump формирует файлы только каждые 5 минут, а nfsen заточен строго на эти 5 минут, а файлы flow-capture не выровнены по границе в 5 минут и при преобразовании имя файла остаётся таким же, то даже если в настройках flow-captute стоит параметр 288 файлов в день(в лучшем случае), ааа б… какого….

В общем так и живём.

Основные неприятности с временной разбивкой файлов, nfsenу нужны файлы с именами выровненными по 5 минут. Опробовалась версия nfsen 1.3.5, возможно с последующими версиями будет попроще, а то скриншоты на программу всегда аж с переливающимися всеми цветами радуги картинками, а на деле пользоваться конечно можно…. В общем со временем разберёмся.

В теории с помощью sfttonf можно nfdump коллектор заменить на flow-capture коллектор. Задумка по началу заключалась именно в этом, но из за проблем с текущей версией nfsen-1.3.5 подобное решение не реализовывалось. Зачем вообще это нужно? Ну возможно, чтобы не использовалась библиотека libcap, возможность использования flow-tools, да и мало ли для чего ещё. Правда не знаю поддерживает ли ft2nfdump что-либо кроме netflow v5 и работает ли он с сжатыми flow-capture файлами.

Settin up nfsen

Error

inoue@netflowc:~/nfsen-1.3.6p1$ ./install.pl 
Can't locate RRDs.pm in @INC (you may need to install the RRDs module) (@INC contains: ./libexec ./installer-items /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at libexec/NfSenRRD.pm line 38.
BEGIN failed--compilation aborted at libexec/NfSenRRD.pm line 38.
Compilation failed in require at libexec/NfSen.pm line 43.
BEGIN failed--compilation aborted at libexec/NfSen.pm line 43.
Compilation failed in require at ./install.pl line 46.
BEGIN failed--compilation aborted at ./install.pl line 46.

Error

me@netflowc:~/nfsen-1.3.6p1$ sudo perl -MCPAN -e 'install Mail::Header'
CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.
Would you like to configure as much as possible automatically? [yes] 
ALERT: 'make' is an essential tool for building perl Modules.
Please make sure you have 'make' (or some equivalent) working.
Autoconfigured everything but 'urllist'.
Now you need to choose your CPAN mirror sites.  You can let me
pick mirrors for you, you can select them from a list or you
can enter them by hand.
Would you like me to automatically choose some CPAN mirror
sites for you? (This means connecting to the Internet) [yes] 
Trying to fetch a mirror list from the Internet
Fetching with HTTP::Tiny:
http://www.perl.org/CPAN/MIRRORED.BY
Looking for CPAN mirrors near you (please be patient)
.......................... done!
New urllist
  http://noodle.portalus.net/CPAN/
  http://cpan.develooper.com/
  http://mirrors.gossamer-threads.com/CPAN/
Autoconfiguration complete.
commit: wrote '/home/inoue/.cpan/CPAN/MyConfig.pm'
You can re-run configuration any time with 'o conf init' in the CPAN shell
Fetching with HTTP::Tiny:
http://noodle.portalus.net/CPAN/authors/01mailrc.txt.gz
Reading '/home/inoue/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with HTTP::Tiny:
http://noodle.portalus.net/CPAN/modules/02packages.details.txt.gz
Reading '/home/inoue/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Wed, 04 Nov 2015 04:29:02 GMT
  HTTP::Date not available
..............
  New CPAN.pm version (v2.10) available.
  [Currently running version is v2.00]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.
..............................................................DONE
Fetching with HTTP::Tiny:
http://noodle.portalus.net/CPAN/modules/03modlist.data.gz
Reading '/home/inoue/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /home/inoue/.cpan/Metadata
Running install for module 'Mail::Header'
Running make for M/MA/MARKOV/MailTools-2.14.tar.gz
Fetching with HTTP::Tiny:
http://noodle.portalus.net/CPAN/authors/id/M/MA/MARKOV/MailTools-2.14.tar.gz
Fetching with HTTP::Tiny:
http://noodle.portalus.net/CPAN/authors/id/M/MA/MARKOV/CHECKSUMS
Checksum for /home/inoue/.cpan/sources/authors/id/M/MA/MARKOV/MailTools-2.14.tar.gz ok
  CPAN.pm: Building M/MA/MARKOV/MailTools-2.14.tar.gz
Checking if your kit is complete...
Looks good
Writing Makefile for Mail
Writing MYMETA.yml and MYMETA.json
  MARKOV/MailTools-2.14.tar.gz
  make -- NOT OK
'YAML' not installed, will not store persistent state
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible

Apache, PHP and modules

sudo apt-get install make gcc
apt-get install apache2 libapache2-mod-php5 php5-common libmailtools-perl rrdtool librrds-perl

sudo perl -MCPAN -e 'install Mail::Header'
sudo cpan YAML
adduser netflow
adduser www

User ‘netflow’ not a member of group ‘www’

sudo usermod -g www-data netflow

nfsen.conf

The portion to change:

# Required for default layout
$BASEDIR = "/disk/nfsen"

# Run nfcapd as this user
# This may be a different or the same uid than your web server.
# Note: This user must be in group $WWWGROUP, otherwise nfcapd
#       is not able to write data files!
$USER    = "netflow";

# user and group of the web server process
# All netflow processing will be done with this user
# Apache default is "www-data"
$WWWUSER  = "www-data";
$WWWGROUP = "www-data";

# nfdump tools path
#$PREFIX  = '/usr/local/bin';
$PREFIX  = '/usr/bin';

# Netflow sources
# Define an ident string, port and colour per netflow source
#
# Required parameters:
#    ident   identifies this netflow source. e.g. the router name, 
#            Upstream provider name etc.
#    port    nfcapd listens on this port for netflow data for this source
#                        set port to '0' if you do not want a collector to be started
#    col     colour in nfsen graphs for this source
#
# Optional parameters
#    type    Collector type needed for this source. Can be 'netflow' or 'sflow'. Default is netflow
#        optarg  Optional args to the collector at startup
#
# Syntax: 
#         'ident' => { 'port' => '<portnum>', 'col' => '<colour>', 'type' => '<type>' }
# Ident strings must be 1 to 19 characters long only, containing characters [a-zA-Z0-9_].
%sources = (
    'gin'    => { 'port' => '5678', 'col' => '#0000ff', 'type' => 'netflow' },
    'sim'    => { 'port' => '9001', 'col' => '#ff0000', 'type' => 'netflow' },
);

Config

sudo /data/nfsen/bin/nfsen reconfig

Start

sudo /data/nfsen/bin/nfsen start

Change apache’s DocumentRoot to the same as nfsen configuration file — /var/www

vi /etc/apache2/sites-enabled/000-default.conf

#Access to the web interface

http://<server_ip>/nfsen/nfsen.php

But, on the web interface,

ERROR: nfsend connect() error: Permission denied!
ERROR: nfsend - connection failed!!
ERROR: Can not initialize globals!

This will solve — workaround

inoue@netflowc:/data/nfsen/var/run$ file *
nfsen.comm: socket 
nfsend.pid: ASCII text
p2055.pid:  ASCII text
p9001.pid:  ASCII text
inoue@netflowc:/data/nfsen/var/run$ sudo chmod 777 ./nfsen.comm 

#Changing graph color
I found this way in the nfsen mailing list archive.

I’ve had better success changing these colors in the web interface. Click
on the stats tab for the live profile and edit each channel list. You can
change the color there also.

Please change the colours using the web interface. The colours in nfsen.conf are for initial ( installation ) purpose
only and will actually no longer be used in 1.3. They will get removed in future versions.

Apache2 setting

/etc/apache2/sites-available/000-default.conf

DocumentRoot /var/www

And go to http"/<tour_server>/nfsen/nfsen.php

The nfs server is running Arch Linux. The nfs client below («pc1») is running Ubuntu 16.04. Both are using nfs4.

root@PC1:~# cat /etc/fstab (relevant line shown below):

server:/backup/system/pc1 /backup/system nfs4 auto,noatime        0 0

After the client boots, the nfs mount fails: journalctl -b -p err (output shown below):

Aug 25 17:56:43 LatishaPC1 systemd[1]: Failed to mount /backup/system.

root@PC1:~# showmount -e server (output shown below):

Export list for server:
/export                          192.168.1.0/24
/export/backup/system            192.168.1.0/24
/export/backup/system/pc1 192.168.1.8

manually trying to mount (as root) using mount /backup/system gives this output:

mount.nfs4: mounting server:/backup/system/pc1 failed, reason given by server: No such file or directory

However, we see from showmount that the server does list the directory.

Here’s the /etc/exports file on the server:

/export 192.168.1.0/24(fsid=0,rw,sync,no_subtree_check)                                                            
/export/backup/system/ 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check,nohide)
/export/backup/system/pc1 192.168.1.8(rw,sync,no_root_squash,no_subtree_check)

I tried it without and without that last line above. Same error either way.
I’ve been troubleshooting for several days and have not resolved it. (I have other nfs servers and clients that are working as expected and I have compared this config to the working systems and I don’t see a difference.) I checked many similar questions. I’m probably overlooking an obvious answer. I apologize in advance if this has already been answered somewhere on StackExchange. I didn’t find a solution yet.

UPDATE 1:

The client can mount server:/ and mounting that gives another clue. When navigating the mount to /backup/system/, the directory is empty. It should contain «pc1» as shown in the showmount command above.

Here are the file permissions as shown on the server.

[root@server export]# cd backup/
[root@server backup]# ls -la
drwxr-xr-x 1 root         root   76 Jun  3 02:31 .
drwxr-xr-x 1 root         root   12 Aug 25 02:44 ..
drwxr-xr-x 1 root         root  142 Jul  5 19:58 system
[root@server backup]# cd system/
[root@server system]# ls -la
drwxr-xr-x 1 root root 142 Jul  5 19:58 .
drwxrwx--- 1 root root   6 May 28 11:35 pc1

UPDATE 2:
output of root@PC1:~# ip a follows. It shows that the IP address listed in /etc/exports on the server is correct.

2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.8/24 brd 192.168.1.255 scope global dynamic enp0s31f6

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error newline required at end of file but not found eol last
  • Error new undeclared first use in this function
  • Error new types may not be defined in a return type
  • Error new encoding utf8 is incompatible with the encoding of the template database win1251
  • Error networkmanager is not running

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии