Sistema Linux clonado y /etc/udev/rules.d/70-persistent-net.rules

9

Configuré un sistema Ubuntu y lo configuré correctamente, incluida la definición eth0en /etc/network/interfaces. Luego imaginé ese sistema y lo cloné en un nuevo sistema.

Cuando reinicié el sistema por primera vez, todo estaba bien, pero unos reinicios más tarde me saludaron con el tiempo de espera de configuración de red. Cuando inicié sesión descubrí que eth0no estaba disponible.

Mi investigación inicial me permitió probar ifdown -ay ifup -alo hice varias veces sin ningún efecto aparente.

La investigación finalmente me señaló /etc/udev/rules.d/70-persistent-net.rules, donde descubrí que la dirección MAC para el nuevo sistema había creado eth1. Buena idea, pero no es lo que quería que sucediera.

Cuando arranqué justo ahora, descubrí que /etc/udev/rules.d/70-persistent-net.rulesahora tiene seis entradas para seis direcciones HW diferentes, lo que me parece extraño ya que solo hay una interfaz.

Mi pregunta es: ¿mi uso de ifup -aalguna manera creó nuevas direcciones MAC para ser creadas? Si no, ¿hay alguna idea sobre cómo sucedió esto? Modifiqué /etc/udev/rules.d/70-persistent-net.rulespara nombrar la dirección HW actual eth0y parece estar funcionando, pero ¿puedo estar seguro de que la dirección no cambiará nuevamente al reiniciar?

Zobal
fuente
Futuros visitantes de esta P: ¡Esto no es una VM, es un sistema físico que el OP clonó en un nuevo hardware!
slm

Respuestas:

7

Me he encontrado con este mismo problema en CentOS de vez en cuando cuando cloné máquinas virtuales (VM). El problema se debe a que la VM original obtiene una entrada en este archivo para configurar el dispositivo Ethernet eth0.

Archivo de muestra .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"

El problema se vuelve feo cuando clonas la primera máquina virtual, esto hace que se cree una nueva dirección MAC, bajo algunas tecnologías de virtualización como KVM para una. Esta nueva dirección MAC se detecta automáticamente cuando la VM clonada se inicia y se ve como un nuevo dispositivo Ethernet, por /lib/udev/write_net_ruleslo que se agrega una segunda entrada al archivo anterior.

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

Normalmente abro este archivo, 70-persistent-net.rulesen un editor y simplemente consolidar las líneas para que la nueva dirección MAC se asigne al eth0dispositivo y reiniciar.

...
# 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"

EDITAR # 1

El OP siguió la pregunta con la siguiente información nueva.

Artículo # 1: Hmmm. Eso no funcionará en mi caso porque estoy ejecutando un software con una licencia flexible que está vinculada a la dirección mac. El cambio constante de direcciones hace que dicho software sea inútil.

@Zobal: estoy familiarizado con Flex. Como se trata de una VM, puede cambiar la MAC de la VM (en el software de VM: VirtualBox, KVM, etc.).

NOTA: Flex es una tecnología de licencia proporcionada por Flexera . Solían llamarse Software GlobeTrotter. Esta tecnología permite que el software esté vinculado a un host físico o puede tener licencias administradas desde un servidor central como "tokens" donde los clientes pueden verificar los tokens por un período de tiempo. Las licencias generalmente están vinculadas a un host, y este host generalmente se identifica por un número único que puede encontrar usando el comando hostid.

Por ejemplo:

$ hostid
a8c0c801

Artículo # 2: en mi caso no es una VM. He clonado un sistema físico en otro sistema físico.

A lo que respondí: Bueno, entonces su única opción es cambiar la dirección MAC del nuevo sistema a la misma que la MAC del otro sistema. Tenga en cuenta que estos 2 sistemas no pueden existir en la misma red, de lo contrario entrarán en conflicto entre sí. Además, las licencias Flex generalmente no usan el MAC, ¡usan el número que es identificable usando el comando hostid!

Referencias

slm
fuente
Hmmm Eso no funcionará en mi caso porque estoy ejecutando un software con una licencia flexible que está vinculada a la dirección mac. El cambio constante de direcciones hace que dicho software sea inútil ...
Zobal
@Zobal: estoy familiarizado con Flex. Como se trata de una VM, puede cambiar la MAC de la VM (en el software de VM: VirtualBox, KVM, etc.).
slm
En mi caso no es una VM. He clonado un sistema físico en otro sistema físico.
Zobal
@Zobal: bueno, entonces su única opción es cambiar la dirección MAC del nuevo sistema a la misma que la MAC del otro sistema. Tenga en cuenta que estos 2 sistemas no pueden existir en la misma red, de lo contrario entrarán en conflicto entre sí. Además, las licencias Flex generalmente no usan el MAC, ¡usan el número que es identificable usando el comando hostid!
slm
Las licencias flexibles son licencias que creamos para vincular nuestro software a una máquina específica, y en este caso utiliza el MAC. Nuevo desarrollo: reinstalé UBUNTU desde cero (no desde e imagen) y obtengo el mismo comportamiento. En realidad, solo aparece en paradas sucias (el poder se corta). ¿Alguna idea?
Zobal
0

hostid es tan único como la dirección IP de su servidor.
En su ejemplo, hostid es a8c0c801, ¿la dirección IP de su servidor es 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Chris
fuente