Назад | Перейти на главную страницу

RHEL / CENTOS6 Именование интерфейсов и назначение IP для чередующихся MAC

Задний план:

Я создаю образ диска ОС RHEL6, который потенциально может быть передан на множество разных компьютеров с идентичным оборудованием (за исключением серийных номеров, таких как MAC). Образ предварительно настроен и копируется после настройки системы. (Так что никакой первой загрузки и т. Д.) После того, как образ будет помещен на жесткий диск, этот жесткий диск может быть размещен на нескольких разных компьютерах.

Я хочу, чтобы все созданные сетевые интерфейсы назывались eth0 независимо от MAC. Я удалил / изменил правила udev для постоянной сети, чтобы гарантировать, что единственный доступный сетевой интерфейс имеет имя eth0. (С правилом persistent-net udev, eth * будет продолжать считать, когда диск передается между компьютерами.) Таким образом, это работает.

Постановка задачи:

Я также хочу, чтобы все эти компьютеры использовали статический IP-адрес. Мне нужно, чтобы IP-адрес был назначен, даже если к компьютеру не подключена действующая сеть. Я изменил ifcfg-eth0, чтобы установить IP-адрес, но он зависит от MAC, поэтому он не работает, когда я перемещаю диск на другой компьютер. (Насколько я могу судить, NetworkManager также зависит от MAC.)

Если в файле ifcfg-eth0 нет строки HWADDR, он отлично работает при перемещении между компьютерами. Я добавил команду RUN в конец моего правила udev, чтобы запустить сценарий, который удалит строку HWADDR из ifcfg-eth0, но это не работает, потому что я почти уверен, что файловая система монтируется только для чтения во время udev, поэтому фактически не может изменить ifcfg-eth0.

Я хочу, чтобы единый сетевой интерфейс на компьютере появлялся при загрузке с предварительно заданным IP-адресом, независимо от текущего MAC. Я думаю, что я действительно близок, но я просто не могу придумать последние биты, чтобы заставить его назначить IP-адрес любому доступному интерфейсу.

РЕДАКТИРОВАТЬ:

ifcfg-eth0:

DEVICE=eth0
IPADDR=10.10.10.10
BROADCAST=10.10.10.255
ONBOOT=yes
NAME=eth0
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=##:##:##:##:##:##
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no

Если строка HWADDR совпадает с MAC-адресом компьютера в то время, это нормально. Но если строка HWADDR не соответствует, ядро ​​жалуется при загрузке, говоря:

Bringing up interface eth0:  Device eth0 has different MAC address than expected, ignoring.   [FAILED]

Если строка HWADDR отсутствует при загрузке, она работает нормально, но в какой-то момент заполняет эту строку автоматически, поэтому в следующий раз, когда вы переместите диск, она не будет работать. Я думал просто использовать sed и удалить строку HWADDR при загрузке во время udev, но из-за файловой системы только для чтения я не думаю, что это действительно хорошая идея (или будет работать).

Установите неизменяемый бит в файле, чтобы его нельзя было изменить (без удаления бита):

chattr + я / и т.д. / sysconfig / сетевые сценарии / ifcfg-eth0