Назначение скриптов hooks
Скрипты hooks позволяют выполнять какие-либо действия при запуске и остановке служб (демонов в терминологии Unix).
Например, таким образом можно добавить собственные правила IPTABLES.
Добавление правил
Скрипт hooks написан на языке Bash. Изменения вносятся в середину скрипта, первую и последнюю строки оставьте неизменными. В общем виде скрипт должен выглядеть так:
#!/bin/bash if [ "$1" = 'Имя_службы' -a "$2" = 'Параметр' ]; then #Ваши изменения здесь fi exit 0
Первый параметр - служба, второй 'start' или 'stop', третий параметр - код возврата от службы.
Например, разрешим доступ на порты пассивного режима ftp-сервера биллинга:
#!/bin/bash if [ "$1" = "/etc/init.d/firewall" -a "$2" = start ]; then iptables -I asr_billing_input -p tcp --destination-port 10090:10100 -j ACCEPT fi exit 0
После редактирования скрипта нужно перезапустить соответствующий контейнер:
Например:
/app/base/service restart
Что для чего
При изменении кастомных цепочек asr_billing_input правила необходимо добавлять в hook контейнера asr_billing, если цепочка asr_cabinet_input - добавлять в hooks asr_cabinet и т.п. Изменение *базовых * цепочек (INPUT,OUTPUT,PREROUTING и т.д.) гарантированно нарушит связь контейнеров, а следовательно всей системы. |
Необходимые правила IPTABLES и прочие действия необходимо описывать в хуках соответствующих контейнеров
auth
Базовый интерфейс авторизации в платформе, других функций нет.
Скрипт /app/base/cfg/hooks
iptables-цепочки: auth_input и auth_output
base
Отображает интерфейс перехода в другие контейнеры, к настройкам других контейнеров и настройки доступа к серверу в целом.
Скрипт /app/base/cfg/hooks
iptables-цепочки: base_input и base_output
Обычно используется для предоставления доступа к к веб-интерфейсу управления, но правильнее использовать соответствующее поле в веб-интерфейсе
asr_billing
Управлениие абонентами и тарифами.
Скрипт /app/asr_billing/cfg/hooks
iptables-цепочки: asr_billing_input и asr_billing_output
asr_cabinet
Содержит локальный сайт и личный кабинет.
Скрипт /app/asr_cabinet/cfg/hooks
iptables-цепочки: asr_cabinet_input и asr_cabinet_output
Обычно используется для предоставления доступа к локальному сайту и личному кабинету. По умолчанию доступ предоставлен всем.
asr_fiscal
Содержит модули взаимодействия с платежными системами.
Скрипт /app/asr_fiscal/cfg/hooks
iptables-цепочки: asr_fiscal_input и asr_fiscal_output
Обычно используется для предоставления доступа платежных систем к биллингу, но правильнее использовать соответствующее поле в веб-интерфейсе Шаг 4
collector
Система сбора статистики (Netflow) и DHCP-сервер.
Скрипт /app/collector/cfg/hooks
iptables-цепочки: collector_input и collector_output
monitoring
Система мониторинга Zabbix.
Скрипт /app/monitoring/cfg/hooks
iptables-цепочки: monitoring_input и monitoring_output
Обычно используется для предоставления доступа к ZABBIX.
Использование скрипта hooks по расписанию
Ничто не мешает использовать hooks с помощью cron. Таким образом вы можете выполнять некие команды не при наступлении какого-то события, а в нужное вам время.
Для этого нужно использовать в качестве имени службы:
- cron.10min - для того чтобы выполнять что-то каждые 10 минут
- cron.daily - для того чтобы выполнять что-то каждый день
- cron.hourly - для того чтобы выполнять что-то каждый час
- cron.monthly - для того чтобы выполнять что-то каждый месяц
- cron.weekly - для того чтобы выполнять что-то каждую неделю
Либо /etc/crontab, если вам нужно указать специфичное время, но в таком случае указать в вызове в качестве имени службы что-то уникальное, например
10 */2 * * * root /cfg/hooks /etc/init.d/networkd start 1>/dev/null 2>/dev/null
Отладка добавления правил IPTABLES
- Проверьте что правило добавляется из командной строки до того как добавлять его в скрипт hooks
- Если произошла ошибка добавления правила, информацию о ней можно попробовать найти в логе /var/log/messages (или выполнив команду dmesg)