STAcc

Материал из СисадминВики (SysadminWiki.ru)
Перейти к: навигация, поиск


STAcc - Simple Traffic Accounting

STAcc - программа для подсчёта и ограничения трафика (через iptables цепочки) в том числе для прокси сервера Squid.

Стабильная версия 1.4
Дата 2015.06.04
Скачать, см описание


Основные возможности программы

  • контроль за превышением лимита трафика;
  • возможность принудительного обрыва активных соединений для превысивших квоту IP адресов;
  • статистика храниться в MySQL и сохраняется при перезагрузке сервера или сбоях системы;
  • гибкое конфигурирование без перезапуска прокси-сервера;
  • простая установка. Не требуется наложения каких-либо патчей;
  • веб-интерфейс для администратора и пользователей;
  • полноценное управление из командной строки и/или браузера;
  • подсчёт трафика на интерфейсах;
  • есть редиректор для Squid, позволяющий использовать STAcc для контроля доступа в Интернет через этот прокси сервер.
  • Ведётся счётчик "мёртвых душ" (кто не пользуется доступом)
Stacc screenshort admin.jpg Stacc screenshort user.jpg
Интерфейс администратора.
Таблицу можно сортировать по любому полю.
Интерфейс пользователя

Принцип работы

В конфигурационном файле указывается какой интерфейс и какие порты мы будет прослушивать. Создаётся база данных в MySQL со списком пользователей, их IP адресов и квот. Затем на основе данного списка создаются цепочки в Netfilter посредством iptables для каждого указанного адреса и порта. Сразу после создания цепочек, механизм Netfilter начинает автоматически вести подсчёт трафика по каждому правилу.  Периодически запускаемая (по крону) команда (stAdmin.pl check) обновляет счётчики в базе данных, где хранится только их текущее значение. Эта же команда проверяет превысел ли трафик пользователя его квоту и может оборвать (если это указано в конфигурации) существующее соединение. 

По умолчанию, при превышении квоты, новые соединения запрещаются кратковременно (5 сек). Это сделано для корректной работы прокси сервера, чтобы пользователь получал-таки страницу со статистикой, иначе браузер будет выдавать таймауты при попытке соединения с прокси. Однако, можно сделать и постоянный отказ на соединение, пока не будут сброшены счётчики. Для этого придётся подредактировать код в двух местах (см комментарии в скрипте stAdmin.pl).

Контроль превышения квоты для Squid осуществляет программа-редиректор stCheck.pl, которая обращается за текущим статусом пользователя в базу данных при каждом запросе. Позже, может быть, будет добавлена возможность обновлять счётчики пользователя и редиректором, но скорость обработки запроса может сильно снизиться.

Если статус пользователя не "Активный" или "Безлимитный", то осуществляется редирект на скрипт, который выдаёт пользователю вместо запрошенной страницы сообщение об ошибке. Скрипту также передаётся значение квоты, которое выводится пользователю вместе с сообщением. Снятие ограничения осуществляется административной программой (stAdmin.pl reset), которая запускается либо вручную, либо периодически (по крону). Например, ежедневно ночью, если требуется посуточное ограничение.

Запись статистики с интерфейсов ведётся по вызову команды 'stAdmin.pl check'. При каждом вызове создаётся запись со счётчиками входящего и исходящего трафика за прошедший (от прошлого запуска) период. Таким образом можно посмотреть значение трафика за любой период.


Предварительные требования

  • Squid >2.6 или 3.x (в редиректоре stCheck.pl закоментировать/раскоментировать нужные строки. По умолчанию редиректор настроен на Squid 3.4)
  • MySQL 4.x или 5.x
  • PHP 4 или 5
  • Веб сервер с поддержкой PHP 4 или 5 и MySQL (напр Apache)
  • iptables
  • awk (опционально, для сбора статистики с интерфейсов)

Для Debian 5 и 6 эти требования удовлетворяются командой:

 # apt-get install squid3 mysql-server mysql-client apache2 libapache2-mod-php5 php5-mysql gawk

Если доступ в Интернет происходит через прокси сервер, то об этом нужно предупредить apt перед установкой пакетов:

# export http_proxy="http://host:port"
# export ftp_proxy="http://host:port"

Подробней о настройке этих пакетов см. в статье Установка Интернет-сервера на Debian

Инструкция по установке

Установка и настройка STAcc описаны в отдельной статье.

Решение некоторых возможных проблем описано в статье Работа над ошибками


Разработчики

  • Павел Малахов (24pm@mail.ru)
  • Владислав Зуев (sim-net@list.ru)
  • До версии 0.3 проект разрабатывался Павлом Лу, страница проекта http://pavel.lu/stacc/


См. также

Описание прокси-сервера Squid, LightSquid. По общим вопросам можно почитать статьи из категории linux.