You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Этот способ сбора данных о трафике (источник) позволяет собирать информацию на одной машине (PC-роутере), и передавать ее на сервер биллинга (другую машину) по сети. Конечно, в простом случае это может быть одной машиной.

Сбор данных осуществляется через библиотеку libpcap, аналогично утилитам tcpdump и Wireshark. Преимуществом данного подхода являеются:

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

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

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

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

Ответная часть на стороне сервера биллинга (jserver) представляет собой настроенный источник данных (data source) типа RemoteAgentDatasource.

Перечислим все возможные настраиваемые параметры источника:

Параметр

Описание

ds_name

Человеческое имя источника данных

listen_at

Локальный IP-адрес, на котором слушать входящие соединения. По умолчанию 0.0.0.0 - на всех.

port

Локальный UDP-порт, на котором слушать входящие соединения. По умолчанию 20002.

accept_from

IP-адрес удаленной стороны (агента), который будет подключаться к серверу. По умолчанию разрешить подключение отовсюду (0.0.0.0)

password

Пароль на подключение агента, по умолчанию "password". Его хэшем подписываются все пакеты.

interface

Имя локального интерфейса на стороне агента, на котором обрабатывать трафик. Если не задано, то выставляется на стороне агента. По умолчанию "интерфейс лупбэк0".

rule

Правило, которым на стороне агента происходит фильтрование трафика. Если не задано, то выставляется на стороне агента. По умолчанию "весь трафик".

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

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

demo:~#n4agent_pcap_event -f /etc/n4agent.conf -p /var/run/n4agent.pid -d -q

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

Параметр

Описание

-q

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

-f cfgfile

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

-p pidfile

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

-d

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


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

Параметр

По умолчанию

Описание

connect

127.0.0.1:20002

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

filter

ip

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

interface

em0

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

daemon

 

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

exec

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

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


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

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

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

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

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

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

  • Скачать исходные коды агента отсюда: [

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


  • No labels