Этот способ сбора данных о трафике (источник) позволяет собирать информацию на одной машине (PC-роутере), и передавать ее на сервер биллинга (другую машину) по сети. Конечно, в простом случае это может быть одной машиной.
Сбор данных осуществляется через библиотеку libpcap, аналогично утилитам tcpdump и Wireshark. Преимуществом данного подхода являеются:
- уход от медленной и ненадежной (FreeBSD) библиотеки jnetpcap
- возможность разнести пропуск трафика и обработку статистики на разные машины (и разные платформы)
- возможность осуществлять блокировку по трафику (FreeBSD / pf)
Вопрос: Почему бы не работать через ipfw?
Ответ: Работа по механизму ipfw предусматривает копирование пакета из kernel space в user space два раза, что замедляет работу сервера-маршрутизатора. К тому же, такой подсчет не корректно работает в случае трансляции адресов, является потенциально небезопасным (не работает биллинг-трафик не ходит).
"Удаленный агент" представляет собой программу, собранную статически (нет зависимостей от внешних библиотек), работающую под операционными системами Linux и FreeBSD (32 и 64 бит). Агент слушает проходящий мимо указанного сетевого интерфейса трафик, фильтрует его согласно заданной политике, формирует потоки статистики, и отправляет их в сторону сервера биллинга. Протокол обмена - собственный, поверх 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 -c demo.netams.com:20002 -i eth0
Параметры командной строки:
Параметр |
Описание |
-q |
Ничего не выводить при запуске, работать молча |
-c hostname:port |
Параметры подключения к сервисе биллинга (RemoteAgentDatasource), адрес сервера и UDP-порт (по умолчанию localhost:20002) |
-p password |
Пароль на подключение (password) |
-i interface |
Интерфейс, на которм слушает PCAP (lo0, нужного трафика там наверняка нет) |
-r rule |
Правило фильтрации (man tcpdump). По умолчанию отсутствует (весь трафик) |
-e scriptname |
Имя shell-скрипта, который вызывается для блокировки трафика посредством помещения IP-адреса в соответствующую таблицу pf. |