...
- уход от медленной и ненадежной (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-скрипта, который вызывается для блокировки трафика посредством помещения |
Если работающему процессу 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] и распаковать их.Wiki Markup Скачать исходные коды агента отсюда: \[
- Скачать утилиту gmake и библиотеку libevent
Wiki Markup В каталоге src/ выполнить сборку, получить агента \[n4agent_pcap\] и заменить им дистрибутивный.