Вопрос или проблема
Где место для скриптов, которые должны выполняться при изменениях в сети на сервере Ubuntu 24.04? Например, когда DHCP обновляется или подключается, мне нужно перенастроить маршрутизацию для определенного интерфейса.
Это помогло (Используя Ubuntu 24.04 из коробки):
sudo systemctl start networkd-dispatcher
ссылки:
- https://ubuntu.com/server/docs/configuring-networks#networkd-dispatcher-for-hook-scripts
- man networkd-dispatcher
- man networkctl
Поместите скрипты в /etc/networkd-dispatcher/xxxxx.d, где xxxxx – состояние (carrier, degraded, dormant, no-carrier, off, routable)
Согласно ошибкам в журнале – скрипты должны иметь права 755
Следующий тестовый скрипт работает для меня (поместите его в любой из директорий состояний и просматривайте syslog):
#!/bin/sh -e
logger -s "$0 1 $IFACE 2 $STATE 3 $ESSID 4 $ADDR 5 $IP_ADDRS 6 $IP6_ADDRS 7 $AdministrativeState 8 $OperationalState"
Ответ или решение
Где разместить скрипты, выполняемые при изменении сети на сервере Ubuntu 24.04
При эксплуатации серверов на базе Ubuntu 24.04, важно правильно организовать выполнение скриптов, которые должны реагировать на изменения сетевого состояния, такие как обновление DHCP или подключение интерфейса. Правильное размещение скриптов и выбор подходящего механизма гарантирует их своевременное выполнение и корректное функционирование сети.
Использование networkd-dispatcher
Для управления выполнением скриптов в ответ на изменения сетевого состояния, Ubuntu 24.04 предлагает инструмент networkd-dispatcher
. Это служебная программа, которая реагирует на события изменения состояния сети и позволяет запускать настроенные пользовательские скрипты.
Как настроить networkd-dispatcher
-
Запуск службы:
Для начала работы сnetworkd-dispatcher
, убедитесь, что служба активирована. Используйте следующую команду для ее запуска:sudo systemctl start networkd-dispatcher
-
Создание директории для скриптов:
Скрипты должны быть размещены в каталогах, соответствующих состоянию сети. Эти каталоги находятся по пути/etc/networkd-dispatcher/xxxxx.d/
, гдеxxxxx
— это состояние, на которое вы хотите реагировать. Возможные состояния включают:carrier
– сетевой интерфейс подключен.degraded
– интерфейс работает некорректно.dormant
– интерфейс неактивен.no-carrier
– интерфейс отключен.off
– интерфейс выключен.routable
– интерфейс доступен для маршрутизации.
-
Правильные права доступа:
Убедитесь, что ваши скрипты имеют права на выполнение — 755, чтобыnetworkd-dispatcher
мог их запускать. Вы можете установить права с помощью команды:chmod 755 /etc/networkd-dispatcher/xxxxx.d/your-script.sh
-
Пример скрипта:
Для тестирования можно использовать следующий пример скрипта:#!/bin/sh -e logger -s "$0 1 $IFACE 2 $STATE 3 $ESSID 4 $ADDR 5 $IP_ADDRS 6 $IP6_ADDRS 7 $AdministrativeState 8 $OperationalState"
Поместите этот скрипт в один из директорий состояния и проверьте логи системы с помощью:
tail -f /var/log/syslog
Это позволит вам увидеть, как скрипт реагирует на изменения.
Развитие и отладка
После настройки скриптов выполнение тестов и мониторинг системных логов являются важными этапами. Они помогут не только убедиться, что скрипты запускаются корректно, но и выявить возможные ошибки, требующие исправлений.
Заключение
Использование networkd-dispatcher
в серверной среде Ubuntu 24.04 позволяет значительно упростить управление сетевыми изменениями. Несмотря на простоту настройки, важно следить за состоянием ваших скриптов и периодически проверять их влияние на работу сети. Опираясь на приведенные рекомендации, вы сможете эффективно интегрировать автоматизацию в управление сетевыми интерфейсами, что сделает вашу инфраструктуру более надежной и гибкой.
Полезные ссылки
Эти ресурсы предоставят более глубокое понимание возможностей и параметров, доступных в системе.