Как назначить произвольное имя сетевому интерфейсу на основе расположения оборудования? (CentOS 7)

Как назначить произвольное имя сетевому интерфейсу на основе расположения оборудования? (CentOS 7)

У меня есть несколько идентичных устройств, работающих под управлением CentOS 7 с четырьмя встроенными сетевыми картами. Чтобы сохранить схожесть со старой версией устройства, работающего под управлением RHEL6 (т. е. ethX), я хочу использовать схему именования сетей, используемую в RHEL6. Я также хочу минимизировать количество изменений, требуемых после создания универсального системного диска для использования на каждом устройстве.

Если я правильно понимаю схему именования в CentOS 7, она едина и зависит от расположения оборудования, поэтому, если оборудование идентично, у меня будут одинаковые имена сетевых интерфейсов для каждого экземпляра устройства.

По требованию заказчика мне необходимо сделать так, чтобы сетевые интерфейсы устройства имели одинаковые имена в версиях CentOS 7 и RHEL6.

Один из подходов заключается в расширении командной строки ядра, net.ifnames=0как описаноздесьи затем создать свои собственные ifcfg-ethXфайлы. Однако, насколько я могу судить, для этого требуется ручная модификация файла конфигурации. Это еще больше усложняется тем, что устаревший порядок фиксирован, но произволен, поэтому мне придется изменять эти файлы для каждой системы. :-/

Одна из моих мыслей была использовать схему именования CentOS 7, но затем добавить псевдоним к каждому, чтобы произвольная схема именования могла применяться на основе расположения оборудования. Возможно ли это сделать?

Есть ли еще идеи, как можно присвоить два имени одному устройству и IP-адресу?

ПРИМЕЧАНИЕ: Я не спрашиваю, как добавить несколько IP-адресов на одно и то же устройство, это довольно просто.

РЕДАКТИРОВАТЬ: Мне действительно нужно его переименовать, но хотелось бы сделать это программно.

решение1

Может ли имя быть одновременно «произвольным» и «основанным на расположении оборудования»? Эти слова противоречат друг другу.

  • Имена eth#присваиваются самим ядром на основе порядка обнаружения при каждой загрузке — другими словами, они действуют по принципу «первым пришел, первым обслужен» и не имеют ничего общего с расположением оборудования.

    Старые версии udev использовались для автоматической генерации файла в/etc/udev/rules.dчтобы связать эти назначения с MAC-адресами карт. Вы, вероятно, можете скопировать этот файл в новые системы.

    Вы также можете написать пользовательские правила udev для установки NAME=параметра на основе адреса или расположения PCI. (Обратите внимание, что в будущем udev может отказаться переименовывать интерфейс в eth*, если он этого еще не сделал. И даже если это разрешено, такое переименование очень хрупкое и может дать сбой, если устройства будут обнаружены в другом порядке.)

  • Хотя, насколько мне известно, RHEL 6 использовалbiosdevnameдля генерации имен физических интерфейсов (переключатель ядра biosdevname=0). RHEL 7 использует для этой цели встроенный net_id systemd-udevd (переключатель ядра net.ifnames=0).

    Чтобы получитьp1p2имена стилей, вы можете yum install biosdevname, затем включить его через командную строку ядра ( biosdevname=1 net.ifnames=0). СмотритеДокументация Red Hat.

Сетевые интерфейсы не могут иметь псевдонимов.

Связанный контент