Подскажите, как правильно настроить работу
dhcpcd-run-hooks в последней версии клиента DHCP, что бы выполнялся сценарий поднятия статических маршрутов?
Имеется несколько подключений к провайдерам интернета с реальными IP и одно из подключений настраивается средствами DHCP, при этом есть задача настройки одновременной работы всех шлюзов интернета, но с различными метриками, с целью доступа к серверу по всем каналам интернета.
В
/etc/dhcp/dhclient-enter-hooks.d/ лежит такой скрипт:
#!/bin/sh
# file /etc/dhcp/dhclient-enter-hooks.d/dhcp
table=uplink3
case $interface in
eth0)
case $reason in
BOUND|RENEW|REBIND|REBOOT)
ip rule del from $old_ip_address table $table
ip route del default via $old_routers dev $interface table default metric 10
ip route del default via $old_routers dev $interface table $table
ip rule add from $new_ip_address table $table
ip route add default via $new_routers dev $interface table default metric 10
ip route add default via $new_routers dev $interface table $table
unset new_routers new_domain_name_servers
;;
RELEASE)
ip rule del from $old_ip_address table $table
;;
esac
;;
esac
Он должен добавлять необходимый маршрут в дефолтную таблицу маршрутизации с необходимой метрикой, потом добавить маршрут в дополнительную таблицу
uplink3, добавить правило маршрутизации для настраиваемой сети в дополнительную таблицу
uplink3, а в конце отключить присвоение маршрута по-умолчанию, устанавливаемый DHCP-клиентом.
Скрипт срабатывает и делает всё необходимое, но только по прошествии определённого времени, установленного DHCP-сервером в параметре
DHCP Lease Time.
Причиной этому возможно является то, что скрипт не срабатывает по событию
BOUND, когда DHCP-клиент получил новую аренду IP от DHCP-сервера

Перечитал man по
dhcpcd-run-hooks, перепроверил все причины-события, при которых должны выполняться необходимые команды из скрипта, переписал скрипт и выделил причину
BOUND в отдельную проверку в скрипте, т.к. при этом событии нет необходимости удалять старые маршруты:
#!/bin/sh
# file /etc/dhcp/dhclient-enter-hooks.d/multi-dhcp
table=uplink3
case $interface in
eth0)
case $reason in
BOUND)
ip route add default via $new_routers dev $interface table default metric 10
ip route add default via $new_routers dev $interface table $table
ip rule add from $new_ip_address table $table
unset new_routers new_domain_name_servers
;;
RENEW|REBIND|REBOOT|TIMEOUT)
ip rule del from $old_ip_address table $table
ip route del default via $old_routers dev $interface table $table
ip route del default via $old_routers dev $interface table default metric 10
ip route add default via $new_routers dev $interface table default metric 10
ip route add default via $new_routers dev $interface table $table
ip rule add from $new_ip_address table $table
unset new_routers new_domain_name_servers
;;
PREINIT|EXPIRE|FAIL|STOP|RELEASE)
ip rule del from $old_ip_address table $table
;;
esac
;;
esac
Но всё равно скрипт срабатывает только через время при событиях
RENEW или
REBIND 