Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • уход от медленной и ненадежной (FreeBSD) библиотеки jnetpcap
  • возможность разнести пропуск трафика и обработку статистики на разные машины (и разные платформы)
  • возможность осуществлять блокировку по трафику (FreeBSD / pfчерез pf или ipfw, Linux через ipset)

Вопрос: Почему бы не работать через ipfw вместо pcap?

Ответ: Работа по механизму ipfw в части захвата трафика предусматривает копирование пакета из kernel space в user space два раза, что замедляет работу сервера-маршрутизатора. К тому же, такой подсчет не корректно работает в случае трансляции адресов, является потенциально небезопасным (не работает биллинг-трафик не ходит). С другой стороны, никто не мешает вам использовать RemoteAgentDataSource в режиме сбора статистики через libcap, а в режиме блокирования применять не pf, а работать с таблицами ipfw. При этом сам придется самостоятельно модицифировать дистрибутивный скрипт access.sh, добавляющий/убирающий адреса из таблицы). 

"Удаленный агент" представляет собой программу, собранную статически (нет зависимостей от внешних библиотек), работающую под операционными системами Linux и FreeBSD (32 и 64 бит). Агент слушает проходящий мимо указанного сетевого интерфейса трафик, фильтрует его согласно заданной политике, формирует потоки статистики, и отправляет их в сторону сервера биллинга. Протокол обмена - собственный, поверх UDP, порт по умолчанию: 20002.

...

Агент на "удаленной стороне" - UNIX-демон. Скачать исходники и собранные бинарики можно с сайта, или взять в дистрибутиве из каталога jserver/bin.

Запускается агент так:

Code Block
demo:~#n4agent_pcap_event -c demo.netams.com:20002 -i eth0f /etc/n4agent.conf -p /var/run/n4agent.pid -d -q

Параметры командной строки:

Параметр

Описание

-q

Ничего не выводить при запуске, работать молча

-c hostname:port f cfgfile

Имя файла с конфигурацией

-p pidfile

Имя файла, в котором будет храниться идентификатор процесса

-d

Становиться демоном (работать в фоновом режиме)


Конфигурационный файл находится в дистрибутиве в каталоге jserver/agent, и представляет из себя набор строк со следующими командами:

Параметр

По умолчанию

Описание

connect

127.0.0.1:20002

Параметры подключения к сервису биллинга (RemoteAgentDatasource), адрес сервера и UDP-порт (по умолчанию localhost:20002)

-p password

Пароль на подключение (password)

filter

ip

Правило фильтрации (man tcpdump). По умолчанию отсутствует (весь трафик)

interface

em0 -i interface

Интерфейс, на которм слушает PCAP (lo0, нужного трафика там наверняка нет)

-r rule

Правило фильтрации (man tcpdump). По умолчанию отсутствует (весь трафик)

em0 надо исправить на имя нужного локального интерфейса)

daemon

 

Становиться демоном (работать в фоновом режиме). Альтернатива: nodaemon

exec

/usr/local/etc/access-pf.sh -e scriptname

Имя shell-скрипта, который вызывается для блокировки трафика посредством помещения
IP-адреса в соответствующую таблицу pf/ipfw/ipset


Если работающему процессу n4agent послать сигнал -USR1, то в конец системного лог-файла запишется статус о работе агента (состояние связи с сервером, сколько потоков обработано и проч).

При работе агента на самом деле запускаются два процесса: первый для обработки трафика и работы с биллингом, второй для запуска команд блокировки-разблокировки.

Вопрос: Запускаю агента (FreeBSD 8.0), вижу:

datasource @@ failed to open pcap interface: BIOCSRTIMEOUT: Invalid argument

Что это? Как бороться?

Ответ: Это происходит из-за несовместимости дистрибутивного агента (собранного для FreeBSD 8.2) c локальной (более старой) системой. Необходимо перекомпилировать агента. Для этого надо:

  • Wiki Markup
    Скачать исходные коды агента отсюда: \[
    http://www.netams.com/files/netams4/agents/n4agent-src.tar.gz] и распаковать их.
  • Скачать утилиту gmake и библиотеку libevent
  • Wiki Markup
    В каталоге src/ выполнить сборку, получить агента \[n4agent_pcap\] и заменить им дистрибутивный.