Skip to end of metadata
Go to start of metadata

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

Внимание: метод запуска агента поменялся с версии 4.0.1236 (нет конфиг-файла агента). 

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

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

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

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

"Удаленный агент" представляет собой программу, собранную статически (нет зависимостей от внешних библиотек), работающую под операционными системами 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

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

url_detect

Включить детектирование URL (посещенных сайтов и ссылок) в проходящем трафике. Подробнее описано здесь

enable_dpi

Включить глубокое инспектирование пакетов в проходящем трафике - определение приложения (экспериментально)

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

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

demo:~#n4agent_pcap -c 127.0.0.1:20002 -p /var/run/n4agent.pid -d -q

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

Параметр

Описание

-q

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

-p pidfile

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

-d

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

-c conn_str

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

-r rule

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

-i ifname

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

-e filename

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

-h

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

-b bufsize

Размер буфера PCAP в мегабайтах (от 1 до 256) - полезно при высокой нагрузке по трафику.

-t timeout

Таймаут неактивных соединений, в сек. (по умолчанию 300). Активных - впятеро больший.

-s pwd

Подписывать обмен данными с сервером паролем (по умолчанию: password)

Конфигурационного файла агента более нет.

Переданные при старте параметры имени интерфейса или правила фильтрации могут быть переопределены в конфигурации источника данных RemoteAgentDatasource. Это произойдет в момент коннекта и регистрации агента у источника даных. Попытки коннекта производятся постоянно, таким образом агент "переживает" перезагрузку биллинга, или перезапуск источника данных.

Для автоматизации запуска агента при загрузки системы созданы специальные стартап-скрипты для ОС FreeBSD и Linux, которые помещены в каталог jserver/agent. Их же можно взять с сайта http://www.netams.com/files/netams4/agents/ . Вы можете использовать биллинг под одной операцинной системой (в том числе Windows), а агенты - под другой (Linux или FreeBSD).

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

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

Вопрос: Запускаю агента (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] и заменить им дистрибутивный.

В режиме поддержки блокировки биллинг присылает агенту команды на блокировку-разблокировку заданных IP-адресов. Агент передает эти команды так называемым access-скриптам, указанным в параметрах командной строки через ключ -е. Сами скрипты идут в дистрибутиве, и их можно скачать там же, где и агенты. Скрипты вызывают системные утилиты добавления-удаления записей в межсетевой экран операционной системы (pf/ipfw/iptables). При этом вам необходимо самостоятельно:

  • настроить создание соответствующих цепочек (таблиц) при старте ОС
  • решить, что делать с трафиком, IP-адреса для которого содержатся в данных таблицах, управляемых биллингом. Фактически, настроить правила пропуска (или ограничения).

Вопрос: Почему у меня агент не запускается из стартап-скрипта? 

Ответ: Поправьте стартап-скрипт. Существует множество версий дистрибутивов поддерживаемых операционных систем, и у каждой свои прихоти. Мы не в состоянии поддреживать идеально работоспособные скрипты для всех возможных вариантов. Наша компания не специализируется на бесплатной системном администрировании вашей ОС. Изучайте инструкции и документацию на вашу систему, или обратитесь сюда за поддержкой на коммерческой основе.

Вопрос: Почему у меня агент запускается, статистика собирается, но трафик блокированных абонентов продолжает ходить? 

Ответ: Наша компания не специализируется на бесплатной системном администрировании вашей ОС. Изучайте инструкции и документацию на вашу систему, разберитесь в работе межсетевого экрана, или обратитесь сюда за поддержкой на коммерческой основе.

  • No labels