Один drop-in OpenVPN изменил все туннели: экземпляр против шаблона
Файл drop-in в каталоге экземпляра затрагивает один туннель; каталог шаблона затрагивает все. Прочитайте объединённый unit, прежде чем выбирать путь.
Политика перезапуска, добавленная для одного туннеля, начинает применяться ко каждому туннелю на машине. Это не ошибка systemd; это разница между drop-in экземпляра и drop-in шаблона. Путь, под которым вы записываете файл, определяет, сколько служб его унаследуют.
Выберите область до настройки. Оба каталога выглядят почти одинаково, и только один из них ограничен нужным вам экземпляром.
Симптом: одна правка, все туннели
Drop-in конкретного экземпляра находится в каталоге, названном по полному экземпляру, например [email protected]. Drop-in шаблона находится в [email protected], со знаком @ и без имени экземпляра между ними. Первый применяется только к office. Второй применяется к каждой службе, созданной из этого шаблона.
Форма шаблона не достигает отдельного шаблона [email protected] и не достигает несвязанных служб, в имени которых есть openvpn.
Выберите каталог, соответствующий области
Оба каталога находятся в /etc/systemd/system/. Если опустить последний компонент system, получится путь, который systemd не читает как системное переопределение, а это тихий способ заставить правильно выглядящий файл ничего не делать. Запишите полный путь один раз и используйте его повторно.
Drop-in также нужен правильный заголовок секции. Настройки службы относятся к [Service]. Файл с настройками, но без секции игнорируется или отклоняется, и unit продолжает вести себя как раньше, пока файл лежит там и выглядит внушительно.
Сохраняйте цель в имени файла, если добавляете больше одного drop-in. Порядок объединения решает лексикографический порядок, и имя, говорящее, что делает файл, делает этот порядок читаемым.
Прочитайте объединённый unit перед записью
Прочитайте объединённый unit, прежде чем что-либо писать. systemctl cat [email protected] печатает основной unit и каждый применимый drop-in в порядке объединения. Сравните его со вторым экземпляром, когда рассматриваете изменение шаблона. Это сравнение точно показывает, какие службы унаследуют правку.
Файл экземпляра не стирает настройки шаблона. Оба объединяются, поэтому забытое значение шаблона может всё ещё действовать.
Участвуют и другие именованные drop-in, настройки времени выполнения и конфигурация от пакетов. Не считайте, что последний отредактированный файл — это весь unit. Объединённый вывод и есть unit.
Держите политику unit вне профиля
Держите политику unit и конфигурацию VPN раздельно. Директива профиля не становится допустимым синтаксисом systemd только потому, что находится под [Service]. Настройка перезапуска тоже не относится к файлу .ovpn.
Это разделение — также причина, по которой политика перезапуска не то же самое, что восстановление пиров, которое выполняет OpenVPN сам. Решите, какое поведение вам нужно, прежде чем выбирать область.
Примените и проверьте экземпляр
После изменения перезагрузите определения менеджера с помощью systemctl daemon-reload. Эта перезагрузка не перезапускает туннель; она только перечитывает файлы unit. Затем примените задуманное действие жизненного цикла к точному экземпляру.
Проверьте, перечитав загруженный unit и наблюдая за изменённым поведением. Перезапуск, несущий активную работу, заслуживает запланированного перерыва, а не быстрой проверки на рабочем туннеле. Запишите назначение и область переопределения рядом с развёртыванием, чтобы следующий человек знал, должен ли файл быть общим.
Если политика действительно общая, намеренно перенесите её в шаблон и проверьте второй экземпляр, прежде чем считать дело сделанным.Справочник по unit systemd документирует приоритет drop-in и порядок объединения.