Дополнительные настройки. hooks. Хуки

Skip to end of metadata
Go to start of metadata
Собственные правила iptables можно писать только с помощью hooks файла. При использовании иных стандартных средств CentOS, они могут быть затёрты после перезагрузки или обновления.

При запуске и остановке служб на сервере вызывается скрипт /app/xge/cfg/hooks с параметрами, сообщающими о том, какая служба была запущена или остановлена. Первый параметр - служба, второй 'start' или 'stop', третий параметр - код возврата от службы.

При помощи файла /app/xge/cfg/hooks можно делать нестандартные настройки сервера. В статье описано как корректно отредактировать файл.

Изменения вносятся в середину скрипта, первую и последнюю строки оставьте неизменными. В общем виде скрипт должен выглядеть следующим образом:

#!/bin/bash

if [ "$1" = 'Имя_службы' -a "$2" = 'Параметр' ]; then

    #Ваши изменения здесь

fi

exit 0

Список служб можно получить зайдя в контейнер XGE и получив листинг директории /etc/init.d:

chroot /app/xge/
ls -1 /etc/init.d/*

Файлы /etc/init.d/functions и /etc/init.d/functions_carbon являются вспомогательными для работы остальных служб.

Примеры

Проброс порта telnet

#!/bin/bash

if [   "$1"   =   "/etc/init.d/firewall" -a "$2" = start  ]; then

    iptables -t nat -I xge_pre -d 192.168.245.1 -p tcp --dport 23 -j DNAT --to-destination 192.168.1.3:23

fi
exit 0

Распределение прерываний сетевых карт лесенкой (если количество ядер равно числу очередей)

#!/bin/bash

if [   "$1"   =   "/etc/init.d/firewall"  ]; then
        rss-ladder eth0 
        rss-ladder eth1 
fi


exit 0

Увеличение хеша для кеша маршрутов

if [   "$1"   =   "/etc/init.d/firewall" -a "$2" = start  ]; then

        echo 8 >/proc/sys/net/ipv4/route/gc_elasticity

fi

exit 0

Автоматизированное использование

Ничто не мешает использовать 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

Метки

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.