Клонированная система Linux и /etc/udev/rules.d/70-persistent-net.rules


9

Я настроил систему Ubuntu и настроил ее должным образом, включая определение eth0в /etc/network/interfaces. Затем я представил эту систему и клонировал ее в новой системе.

Когда я загрузил систему в первый раз, все было хорошо, но через несколько перезагрузок меня встретил тайм-аут конфигурации сети. Когда я вошел в систему, я обнаружил, что eth0не было доступно.

Мои первоначальные исследования , дайте мне попробовать , ifdown -aи ifup -aкоторый я сделал несколько раз , чтобы не видимого эффекта.

Исследования в конечном итоге указали мне на то /etc/udev/rules.d/70-persistent-net.rules, где я обнаружил, что MAC-адрес для новой системы создал eth1. Хорошая идея, но не то, что я хотел, чтобы произошло.

Когда я только что загрузился, я обнаружил, что /etc/udev/rules.d/70-persistent-net.rulesтеперь есть шесть записей для шести разных адресов HW, что я нахожу странным, поскольку существует только один интерфейс.

Мой вопрос: использовало ли я ifup -aкак-то новые MAC-адреса для создания? Если нет, есть ли мысли о том, как это произошло? Я изменил /etc/udev/rules.d/70-persistent-net.rulesимя текущего адреса HW, eth0и он, кажется, работает, но могу ли я быть уверен, что адрес не изменится при перезагрузке?


Будущие посетители этого Q: Это не виртуальная машина, это физическая система, которую OP клонировал на новое оборудование!
SLM

Ответы:


7

Я периодически сталкиваюсь с этой же проблемой в CentOS, когда клонирую виртуальные машины (ВМ). Проблема связана с тем, что исходная виртуальная машина помещает в этот файл запись для настройки устройства Ethernet eth0.

Образец файла .rules

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:dd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Проблема поднимает свою уродливую голову, когда вы клонируете первую виртуальную машину, это приводит к созданию нового MAC-адреса при использовании некоторых технологий виртуализации, например KVM. Этот новый MAC-адрес автоматически обнаруживается, когда клонированная виртуальная машина загружается и просматривается как новое устройство Ethernet /lib/udev/write_net_rules, поэтому в указанный выше файл добавляется вторая запись.

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Я обычно открываю этот файл 70-persistent-net.rulesв редакторе и просто объединяю строки, чтобы новый MAC-адрес был назначен eth0устройству, и перезагружаюсь.

...
# net device () (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:de", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

РЕДАКТИРОВАТЬ # 1

ФП уточнил вопрос со следующей новой информацией.

Пункт № 1: Хммм. Это не будет работать в моем случае, потому что я использую программное обеспечение с гибкой лицензией, которая связана с MAC-адресом. Постоянно меняющиеся адреса делают программное обеспечение бесполезным.

@Zobal - я знаком с Flex. Поскольку это виртуальная машина, вы можете изменить MAC-адрес виртуальной машины (в программном обеспечении виртуальной машины - VirtualBox, KVM и т. Д.).

ПРИМЕЧАНИЕ. Flex - это технология лицензирования, предоставляемая Flexera . Раньше их называли GlobeTrotter Software. Эта технология позволяет привязывать программное обеспечение к физическому хосту или иметь лицензии, управляемые с центрального сервера как «токены», где клиенты могут проверять токены в течение определенного периода времени. Лицензии обычно привязаны к хосту, и этот хост обычно идентифицируется уникальным номером, который вы можете найти с помощью команды hostid.

Например:

$ hostid
a8c0c801

Пункт № 2: В моем случае это не виртуальная машина. Я клонировал одну физическую систему в другую физическую систему.

На что я ответил: ну тогда единственный вариант - это изменить MAC-адрес новой системы на тот же, что и MAC-адрес другой системы. Поймите, что эти две системы не могут существовать в одной сети, иначе они будут конфликтовать друг с другом. Кроме того, лицензирование Flex обычно не использует MAC, они используют число, которое можно определить с помощью команды hostid!

Ссылки


Хммм. Это не будет работать в моем случае, потому что я использую программное обеспечение с гибкой лицензией, которая связана с MAC-адресом. Постоянно меняющиеся адреса делают программное обеспечение бесполезным ...
Zobal

@Zobal - я знаком с Flex. Поскольку это виртуальная машина, вы можете изменить MAC-адрес виртуальной машины (в программном обеспечении виртуальной машины - VirtualBox, KVM и т. Д.).
СЛМ

В моем случае это не виртуальная машина. Я клонировал одну физическую систему в другую физическую систему.
Зобал

@Zobal - тогда единственный вариант - изменить MAC-адрес новой системы на тот же, что и MAC-адрес другой системы. Поймите, что эти две системы не могут существовать в одной сети, иначе они будут конфликтовать друг с другом. Кроме того, лицензирование Flex обычно не использует MAC, они используют число, которое можно определить с помощью команды hostid!
slm

гибкие лицензии - это лицензии, которые мы создали для привязки нашего программного обеспечения к конкретной машине, и в этом случае он использует MAC. Новая разработка: я переустанавливал UBUNTU с нуля (не из образа и изображения) и получаю то же самое поведение. На самом деле это проявляется только при грязных отключениях (мощность дергается). Какие-нибудь мысли?
Зобал

0

hostid так же уникален, как и IP-адрес вашего сервера.
В вашем примере hostid a8c0c801, IP-адрес вашего сервера 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.