/etc/network/interfaces сбрасывается при загрузке

Вопрос или проблема

Я арендовал выделенный сервер, на который провайдер установил Debian 12 при загрузке. Я установил KVM, ovs и Proxmox. Всё работает хорошо. Однако при перезагрузке система всегда перезаписывает файл /etc/network/interfaces на изначально пустой файл, содержащий только настройки DHCP. Это проблема, так как в таком случае моя конфигурация ovs теряется. Я предполагаю, что провайдер использует какой-то установочный или загрузочный скрипт или скрипт для неинтерактивной установки, который запускается при загрузке и сбрасывает мои настройки (нет, networkmanager и т.д. не запущены). В последние два дня я не мог найти, где это происходит. Я обратился в поддержку, но безрезультатно, похоже, они не понимают мой вопрос. Где в Debian 12 обычно хранятся такие скрипты или шаблоны для неинтерактивной загрузки/установки?

Ответ или решение

У вас возникла проблема с перезагрузкой системы Debian 12, где файл /etc/network/interfaces заменяется на файл по умолчанию, содержащий только настройки DHCP. Это приводит к потере конфигурации Open vSwitch (OVS), что, вероятно, связано с запуском некой скриптовой программы, которая переписывает ваши настройки при загрузке. Ниже я подробно разъясню теорию происходящего, приведу примеры возможных решений и объясню, как применить эти решения на практике.

Теория

На серверах, предоставляемых провайдерами, часто используют установленные скрипты, которые занимаются конфигурацией системы при загрузке. Для автоматизации процесса установки системные администраторы могут использовать шаблоны или скрипты, которые устанавливают систему и конфигурируют её исходя из требований клиента или политики компании. Такие скрипты могут вносить изменения в критически важные конфигурационные файлы, такие как /etc/network/interfaces.

Другая возможная причина данного поведения — это автоматическая настройка сети, которая выполняется системами, такими как cloud-init или подобными инструментами, предназначенными для инициализации и настройки виртуальных и физических серверов после первого запуска.

Пример

Предположим, ваш провайдер использует cloud-init для инициализации сервера. Cloud-init — это мощный инструмент, часто используемый в облачных средах для автоматизации настройки серверов. Он может выполнять различные задачи, такие как установка пакетов или настройка сетевых интерфейсов в соответствии с предопределёнными метаданными и пользовательскими данными.

Файл конфигурации cloud-init может содержать секцию, где задаётся состояние сети в формате, специфичном для cloud-init, но фактически он будет перезаписывать файл /etc/network/interfaces при каждой загрузке.

Применение

Теперь перейдём к практическим шагам, которые помогут выявить и устранить проблему.

  1. Проверка наличия cloud-init:
    Проверьте, установлен ли cloud-init на вашем сервере. Это можно сделать, выполнив команду:

    dpkg -l | grep cloud-init

    Если cloud-init установлен, вы можете временно отключить его, чтобы проверить, является ли он причиной вашей проблемы. Для этого выполните:

    sudo systemctl disable cloud-init

    Затем перезагрузите сервер и проверьте, изменяется ли файл /etc/network/interfaces.

  2. Поиск сторонних скриптов:
    Проверьте наличие скриптов инициализации, которые предоставляются провайдером. Возможно, в системе находятся специальные скрипты, которые запускаются при загрузке. Такие скрипты могут быть размещены в каталогах, таких как /etc/init.d/, /etc/systemd/system/ или аналогичных.

    Выполните поиск по содержимому этих папок на упоминание изменения /etc/network/interfaces. Вы можете использовать команду grep для поиска:

    grep -r 'interfaces' /etc/init.d/
    grep -r 'interfaces' /etc/systemd/system/
  3. Анализ сетевых скриптов:
    Проверьте конфигурационные файлы сети, такие как /etc/network/interfaces.d/, где могут находиться дополнительные настройки, которые могут быть перезаписанными.

  4. Обращение к провайдеру:
    Если вы не уверены в том, что происходит на уровне провайдера, сделайте повторный запрос в техническую поддержку, описав проблему более детально. Укажите, что вы имеете дело с перезаписью конфигурационного файла, и попросите проверить конфигурацию скриптов автоматизации.

  5. Настройка net-plan или других альтернатив:
    Если проблема связана с /etc/network/interfaces, рассмотрите возможность перехода на использование netplan для управления конфигурацией сети, если это поддерживается вашей конфигурацией.

  6. Создание cron-задания как временное решение:
    Вы можете создать cron-задание, которое будет запускаться при загрузке и восстанавливать ваши настройки сети из сохранённой резервной копии:

    @reboot cp /path/to/backup/interfaces /etc/network/interfaces && systemctl restart networking

Заключение

Проблемы с автоматической перезаписью системных конфигурационных файлов могут быть вызваны различными причинами, начиная от скриптов инициализации провайдера до инструментов, таких как cloud-init. Внимательное изучение и отключение таких инструментов или настроек позволят вам сохранить контроль над вашей конфигурацией сети и обеспечить стабильность работы вашего сервера. Если выполнение всех вышеописанных шагов не принесло результата, продолжайте взаимодействие с технической поддержкой вашего провайдера для глубокой диагностики проблемы.

Оцените материал
Добавить комментарий

Капча загружается...