Иногда возникает необходимость из основного потока трафика "выхватить" какой-то протокол или IP-адресс и отобразить это на графиках. В таком случае на помощь приходит cacti-скрипт, который строит графики, исходя из счетчиков IPFW.
Локальный сервер
Итак, рассмотрим на конкретном примере... Предположим, что нужно отрисовать графики трафика для групы IP-адресов. Соответственно в rc.firewall внесены такие правила:
${fwcmd} table 25 add 10.2.207.70
${fwcmd} table 25 add 10.2.207.96
${fwcmd} table 25 add 10.22.207.97
${fwcmd} add 250 count ip from "table(25)" to any in via em0
${fwcmd} add 251 count ip from any to "table(25)" out via em0 |
В выводе правил IPFW соответственно:
# ipfw show | grep count 00250 8061 1150756 count ip from table(25) to any in via em0 00251 9045 2905706 count ip from any to table(25) out via em0 |
Архив с необходимыми файлами можно скачать по этой ссылке [1].
Для установки необходимо выполнить следующие пункты:
- Необходимо извлечь скрипт ipfw_bidirectional.pl в каталог scripts (в настройках по умолчанию это путь /usr/local/share/cacti/scripts)
- Необходимо выполнить через веб-интерфейс импорт темплейта (Console->Import/Export->Import Templates) из файла cacti_graph_template_freebsd_ipfw_bidirectional_rule_counter.xml.
- В консоли web-управления Cacti создаем новый график: Console->Devices->Device_name_here->Create Graphs for this Host. Выбираем тип Graph Templates: FreeBSD - IPFW bidirectional rule counter и жмем кнопку "Create". В следующем окне необходимо вписать номера входящего и исходящего правила IPFW. В моем случае номер правила для входящих пакетов будет 251, а для исходящих - 250.
Пример получаемых графиков:
Примечание. В скрипте ipfw_bidirectional.pl используется вывод правил файрвола. Если в cron-е запуск poller.php выполняется от имени непривилегированого пользователя (например cacti), то графики отрисовываться не будут. Для решения проблемы необходимо либо выполнять запуск poller.php от имени root, либо же через sudo [3] дать необходимые права пользователю и подкорректировать скрипт на вывод правил IPFW через sudo.
Удаленный сервер
Итак, опять же все рассмотрим на конкретном примере... Предположим, что нужно отрисовать графики трафика для групы IP-адресов. Соответственно в rc.firewall внесены такие правила:
# Room 400 ${fwcmd} table 25 add 10.2.207.70
${fwcmd} table 25 add 10.2.207.96
${fwcmd} table 25 add 10.22.207.97
${fwcmd} add 250 count ip from "table(25)" to any in via em0
${fwcmd} add 251 count ip from any to "table(25)" out via em0 |
В выводе правил IPFW удаленного сервера соответственно:
# ipfw show | grep count 00250 8061 1150756 count ip from table(25) to any in via em0 00251 9045 2905706 count ip from any to table(25) out via em0 |
Архив с необходимыми файлами можно скачать по этой ссылке [4].
Для установки необходимо выполнить следующие пункты:
- Необходимо извлечь скрипт ipfw_bidirectional_remote.pl в каталог scripts (в настройках по умолчанию это путь /usr/local/share/cacti/scripts)
- Необходимо выполнить через веб-интерфейс импорт темплейта (Console->Import/Export->Import Templates) из файла cacti_graph_template_freebsd_ipfw_bidirectional_rule_counter_remote.xml.
- Поскольку скрипт ipfw_bidirectional_remote.pl требует подключения по ssh, настраиваем ssh-авторизацию по ключам [5] для подключения к удаленному серверу.
- Для вывода правил IPFW на удаленном сервере с помощью sudo [3] разрешаем выполнения необходимой команды. Тоесть, используя visudo [6], добавляем такое правило:
remoteuser1 ALL= (root) NOPASSWD: /sbin/ipfw show * - В консоли web-управления Cacti создаем новый график: Console->Devices->Device_name_here->Create Graphs for this Host. Выбираем тип Graph Templates: FreeBSD - remote IPFW bidirectional rule counter и жмем кнопку "Create". В следующем окне необходимо вписать номера входящего и исходящего правила IPFW. В моем случае номер правила для входящих пакетов будет 251, а для исходящих - 250.
Пример получаемых графиков: