Каждая операционная система имеет свои подводные камни при клонировании и работе. В Linux они встречаются реже, чем в Windows, однако тоже бывают. В заметке речь пойдёт об одном из подводных камней CentOS и Fedora дистрибутивов – исчезновении сетевого интерфейса при клонировании. Причина этому — по умолчанию в настройках сетевого интерфейса этих операционных систем прописывается mac адрес устройства и его уникальный идентификатор. С учётом того, что все эти системы потомки RedHat, то не удивлюсь, что и в самом RedHat ситуация и лекарство аналогичны. Приступим?
CentOS 6
На данный момент это последний CentOS, который используется классическое наименование сетевых интерфейсов в формате eth[x]. Все новые дистрибутивы по умолчанию используют другую схему наименований, но об этом позже.
В CentOS 6 нужно отредактировать два файла конфигурации системы и проблема исчезновения интерфейсов при клонировании пропадёт.
Редактируем, непосредственно файл конфигурации интерфейса:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Красными стрелками выделены параметры HWADDR (мак адрес) и UUID (уникальный идентификатор устройства), их следует удалить. Зелёной стрелкой выделен режим работы устройства, по умолчанию устройство при загрузке отключено, я рекомендую включить его, указав «yes».
Итоговый результат для файла конфигурации интерфейса такой:
Теперь редактируем, файл конфигурации менеджера устройств.
vi /etc/udev/rules.d/70-persistent-net.rules
В этом файле следует аккуратно удалить выделенный на скриншоте кусок строки.
В результате получим рабочий файл, без привязки к mac адресу.
CentOS 7
В CentOS/RedHat 7 была введена новая схема наименования сетевых интерфейсов, призванная сделать наименование интерфейсов более предсказуемым. На самом деле схема не одна, а целых пять. В оригинале информация доступна на сайте RedHat, краткая суть:
- Схема 1: Система преобразует информацию из BIOS и/или прошивки устройства для встроенных сетевых интерфейсов и преобразует в номер устройства. Например: eno1 (Ethernet network onboard 1). Если информация недоступна, система перейдёт на схему 2.
- Схема 2: Система преобразует информацию из BIOS и/или прошивки устройства для сетевых интерфейсов PCI Express hotplug и преобразует в номер устройства. Например: ens1 (Ethernet network slot 1). Если информация недоступна, система перейдёт на схему 3.
- Схема 3: Система преобразует информацию о физической точке подключения сетевого устройства и преобразует в номер устройства. Например: ensp2s0 (Ethernet network port 2 slot 1). Если информация недоступна, система сразу перейдёт на схему 5.
- Схема 4: Система преобразует информацию из mac адреса в имя устройства. Например: enx78e7d1ea46da (Ethernet network with mac 78:e7:d1:ea:46:da). Данная схема отключена по умолчанию, но доступна для принудительного использования.
- Схема 5: Классическая схема с назначением имени устройства ядром системы.
В CentOS 7 достаточно отредактировать исключительно файл конфигурации интерфейса. В моём случае интерфейс получил имя ens192, имя интерфейса в вашей системе можно узнать командой:
ip a
Итак, приступаем к редактированию
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens192
На скриноте ниже красным выделена строка UUID, которую следует удалить. Если вы обратили внимание, то строки HWADDR нет и её удалять нам не приходится. Однако, вы можете сталкнуться с такими системами, где эта строка будет. Если вы видите такую строку в файле конфигурации интерфейса — удалите её. Зелёным выделен параметр, отвечающий за запуск устройства при загрузке системы. Рекомендую поставить «yes».
Итоговый результат нашего редактирования:
Напомню, что мы готовим образы для клонирования в виртуальной инфраструктуре. При совпадении виртуального оборудования между шаблоном и клоном имя сетевого интерфейса меняться не будет.
Fedora 25
В последней версии операционной системы Fedora мак адрес не сохраняется в настройках демона udev, как это происходит в CentOS 6. Таким образом настройка полностью идентична настройке в CentOS 7 и описывать её отдельно не стоит.