Клонована система 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і, здається, працює, але чи можу бути впевнений, що адреса не зміниться знову при перезавантаженні?


Майбутні відвідувачі цього питання: Це не ВМ, це фізична система, що ОП клонувала на нове обладнання!
slm

Відповіді:


7

Я стикався з цією самою проблемою під CentOS час від часу, коли я клонував віртуальні машини (VM). Проблема випливає з того, що оригінальний VM отримує запис, вкладений у цей файл для налаштування пристрою 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"

Проблема стає некрасивою, коли ви клонуєте перший VM, це спричиняє створення нової MAC-адреси в рамках деяких технологій віртуалізації, таких як KVM для одного. Ця нова MAC-адреса виявляється автоматично, коли клонований VM завантажується і розглядається як новий Ethernet-пристрій /lib/udev/write_net_rules, і тому 2-й запис додається у вищезазначений файл.

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: Хм. У моєму випадку це не спрацює, оскільки я запускаю програмне забезпечення з ліцензією flex, яка пов'язана з mac-адресою. Постійна зміна адрес робить дане програмне забезпечення марним.

@Zobal - я знайомий з Flex. Оскільки це VM, ви можете змінити MAC VM (у програмному забезпеченні VM - VirtualBox, KVM тощо).

ПРИМІТКА: Flex - це технологія ліцензування, яка надається Flexera . Раніше їх називали GlobeTrotter Software. Ця технологія дозволяє прив'язати програмне забезпечення до фізичного хоста, або мати ліцензії, керовані з центрального сервера, як "жетони", де клієнти можуть перевіряти маркери протягом певного періоду часу. Ліцензії, як правило, прив’язані до хоста, і цей хост зазвичай ідентифікується за допомогою унікального номера, яке ви можете знайти за допомогою команди hostid.

Наприклад:

$ hostid
a8c0c801

Пункт №2: У моєму випадку це не VM. Я клонував одну фізичну систему в іншу фізичну систему.

На що я відповів: Отже, ваш єдиний варіант - змінити MAC-адресу нової системи на таку, що і MAC іншої системи. Зрозумійте, що ці 2 системи не можуть існувати в одній мережі, інакше вони будуть конфліктувати між собою. Також Flex ліцензування зазвичай не використовує MAC, вони використовують номер, який можна ідентифікувати за допомогою команди hostid!

Список літератури


Хммм. У моєму випадку це не спрацює, оскільки я запускаю програмне забезпечення з ліцензією flex, яка пов'язана з mac-адресою. Постійна зміна адрес робить програмне забезпечення марним ...
Zobal

@Zobal - я знайомий з Flex. Оскільки це VM, ви можете змінити MAC VM (у програмному забезпеченні VM - VirtualBox, KVM тощо).
slm

У моєму випадку це не ВМ. Я клонував одну фізичну систему в іншу фізичну систему.
Зобаль

@Zobal - тож ваш єдиний варіант - змінити MAC-адресу нової системи на таку, що і MAC іншої системи. Зрозумійте, що ці 2 системи не можуть існувати в одній мережі, інакше вони будуть конфліктувати між собою. Також Flex ліцензування зазвичай не використовує MAC, вони використовують номер, який можна ідентифікувати за допомогою команди hostid!
slm

ліцензії flex - це ліцензії, які ми створили для прив’язки нашого програмного забезпечення до певної машини, і в цьому випадку він використовує 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.