Ядро
NoDeny+ это не только веб-интерфейс. В фоне должны выполняться определенные действия, например, снятие абонплаты, подсчет трафика и т.д. Эти действия выполняет ядро биллинга: файл nokernel.pl
Ядро запускает модули, которые находятся в папке /usr/local/nodeny/kernel/. Модули конфигурируются двумя способами: через веб-интерфейс и через конфигурационные файлы. Постепенно идет отказ от конфигурационных файлов и параметры переносятся в веб-интерфейс. Если у модуля есть конфигурационный файл с расширением cfg, то в нем есть команда run - следует или нет запускать данный модуль (1 - да, 0 - нет). Нет смысла запускать те модули, которые вам не нужны.
run => 1,
Обратите внимание на структуру конфига: переменная => значение и в конце запятая.
Давайте получим список всех установленных модулей:
perl /usr/local/nodeny/nokernel.pl -L
YES напротив названия модуля означает, что модуль будет запускаться при старте ядра. Стартовать ядро необходимо так:
perl /usr/local/nodeny/nokernel.pl -d &
Здесь мы запустили ядро вручную и при перезагрузке оно само не запустится, поэтому необходимо прописать его старт в автозагрузку (я написал полный путь к интерпретатору perl, поскольку бывали случаи, что в некоторых системах при запуске rc.local не всегда устанавливались необходимые пути):
echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -d &' >> /etc/rc.local
Если вы ставили NoDeny по документации, то запуск в автозагрузке уже есть и лучше проверить, что нет дублирующего запуска:
cat /etc/rc.local
Если вдруг показало, что есть дубликат запуска nokernel.pl - удалите, но, внимание! На самом деле, допускается запуск нескольких ядер. Более того, иногда это необходимо.
Здесь необходимо слегка описать как работает ядро. Ядро загружает модули и передает управление первому, когда первый закончил работу - второму, после второго - третьему, после последнего - снова первому и т.д. по кругу. Если какой-то из модулей затупит, другие модули вынуждены будут ждать пока томозящий модуль не закончит работу.
Да, есть модули, которые могут тормозить. Например, заглушка. По сути - это вебсервер, написанный на перл. Когда у заблокированного абонента(тов) запущено много программ, которые делают запросы по http, эти все запросы идут на заглушку, которая будет непрерывно отвечать на них и просто не даст время на выполнение других модулей.
Также может забирать ресурсы модуль подсчета трафика (collectors), особенно если включена детализация.
Поэтому такие модули (cap, collectors), которые требуют ресурсы, необходимо запускать отдельной копией ядра:
perl /usr/local/nodeny/nokernel.pl -m=collectors -d &
perl /usr/local/nodeny/nokernel.pl -m=cap -d &
Главное не забыть:
- установить переменную run => 0 для этих модулей
- прописать в автозапуск в /etc/rc.local
- в автозапуске должен быть запуск nokernel.pl без ключа -m только в одном экземпляре + возможно запуск нескольких ядер с ключем -m=имя модуля
- не забыть указать ключ -d - это заставит лог писать в файл, а не выводить в консоль
Не забывайте, если конфиг начинается с подчеркивания - это фантом, если вы его отредактируете, скажем, измените переменную run, то при следующем запуске perl install.pl -x все изменения затрутся, поэтому менять надо файл modules/имя_модуля/create.kernel.имя_модуля.cfg
Не забывайте про логи в папке /usr/local/nodeny/logs/ из которых можно понять почему не запустилось ядро.
Кратко о модулях ядра
- auth управляет авторизацией:
- завершение авторизаций по таймауту. Если не включить модуль, то клиент, единожды авторизовавшись (авторизатором, pppoe и т.д), в админке будет авторизованным все время, не смотря на то, что давно уже отключился.
- запись в лог авторизаций, благодаря чему можно узнать все сеансы подключений
- освобождение динамических ip от привязки к клиентам, которые отключились
- websession удаляет устаревшие сессии админки. Когда админ/клиент залогинился в админку, создается сессия, которая становится недействительной если не производится никаких действий определенный период времени. Время от времени нужно удалять такие сессии.
- authserver принимает соединения от программ-авторизаторов. Если вы не используете такие программы - модуль следует отключить.
- tmppays удаляет кредиты, срок которых завершен. Также восстанавливает границу отключения, если пришло время.
- collectors опрашивает коллекторы сбора информации о трафике, обрабатывает ее и сохраняет в базе данных. В конфиге задаются тип коллектора и его параметры (адрес и т.д.). Также задаются общие параметры: период опроса и вести ли детализацию. Период опроса - это период, с которым информация будет сохраняться в базе данных, т.е информация записывается срезами, например, собирается минуту, группируется и сохраняется в БД.
- system_clean удаляет устаревшую информацию. На данный момент - это удаление устаревшей информации по трафику. Время устаревания задается в настройках. Если вы ведете учет трафика клиентов и, что еще более важно, ведете детализацию по всем ip, с которым были соединения - вам необходимо удалять информацию о давнем трафике иначе рискуете получить переполнение диска. В зависимости от объема сети и ваших дисков установите время устаревания от 2 месяцев до года. Также модуль необходим при использовании блокирующих сообщений.
- services завершает услуги, для которых пришло время, а также создает новую, если включен флаг автопродления.
- balance переводит учетную запись в состояние "заблокирована", если баланс становится ниже границы отключения и установлен флаг "блокировать при лимите". Если упрощенно, то: блокирует клиентов с отрицательными балансами.
- cap выводит «заглушку» когда доступ в интернет заблокирован клиенту.
- dhcp - управляет авторизацией по dhcp
- make_config - периодически создает конфигурационный файл, скажем, для какого-либо устройства. Предварительно требуется создание шаблона конфига иначе нет смысла запускать этот модуль
- notifications - отправляет push-уведомления. Например, вы хотите, чтобы сообщения, которые вы отправляете абоненту, оперативно приходили к нему на смартфон и отображались в области уведомлений