Système Linux cloné et /etc/udev/rules.d/70-persistent-net.rules

9

J'ai installé un système Ubuntu et l'ai configuré correctement, y compris la définition eth0dans /etc/network/interfaces. J'ai ensuite imaginé ce système et l'ai cloné sur un nouveau système.

Lorsque j'ai démarré le système la première fois, tout s'est bien passé, mais quelques redémarrages plus tard, j'ai été accueilli avec un dépassement de délai de la configuration réseau. Lorsque je me suis connecté, j'ai constaté que ce eth0n'était pas disponible.

Ma recherche initiale m'a permis d'essayer ifdown -aet ifup -ace que j'ai fait plusieurs fois sans effet apparent.

La recherche m'a finalement montré /etc/udev/rules.d/70-persistent-net.rulesoù j'ai découvert que l'adresse MAC du nouveau système avait créé eth1. Bonne idée, mais pas ce que je voulais faire.

Lorsque j'ai démarré tout à l'heure, j'ai trouvé qu'il y a /etc/udev/rules.d/70-persistent-net.rulesmaintenant six entrées pour six adresses HW différentes, ce que je trouve étrange car il n'y a qu'une seule interface.

Ma question est: mon utilisation a-t-elle en ifup -aquelque sorte créé de nouvelles adresses MAC à créer? Sinon, pensez-vous comment cela s'est produit? J'ai modifié /etc/udev/rules.d/70-persistent-net.rulespour nommer l'adresse matérielle actuelle eth0et cela semble fonctionner, mais puis-je être sûr que l'adresse ne changera plus lors d'un redémarrage?

Zobal
la source
Futurs visiteurs de ce Q: Ce n'est pas une VM, c'est un système physique que l'OP a cloné sur un nouveau matériel!
slm

Réponses:

7

J'ai rencontré ce même problème sous CentOS de temps en temps lorsque j'ai cloné des machines virtuelles (VM). Le problème provient de la machine virtuelle d'origine qui obtient une entrée dans ce fichier pour configurer le périphérique Ethernet eth0.

Exemple de fichier .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"

Le problème remonte la tête lorsque vous clonez la première machine virtuelle, ce qui provoque la création d'une nouvelle adresse MAC, sous certaines technologies de virtualisation telles que KVM pour une. Cette nouvelle adresse MAC est détectée automatiquement lorsque la machine virtuelle clonée est démarrée et considérée comme un nouveau périphérique Ethernet par /lib/udev/write_net_rules, et une deuxième entrée est donc ajoutée au fichier ci-dessus.

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

J'ouvre généralement ce fichier, 70-persistent-net.rulesdans un éditeur et je consolide simplement les lignes afin que la nouvelle adresse MAC soit affectée à l' eth0appareil et redémarre.

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

EDIT # 1

Le PO a donné suite à la question avec les nouvelles informations suivantes.

Article n ° 1: Hmmm. Cela ne fonctionnera pas dans mon cas, car j'utilise un logiciel avec une licence flexible liée à l'adresse mac. Les adresses changeant constamment rendent ce logiciel inutile.

@Zobal - Je connais Flex. Puisqu'il s'agit d'une machine virtuelle, vous pouvez modifier le MAC de la machine virtuelle (dans le logiciel de la machine virtuelle - VirtualBox, KVM, etc.).

REMARQUE: Flex est une technologie de licence fournie par Flexera . Ils s'appelaient auparavant GlobeTrotter Software. Cette technologie permet aux logiciels d'être soit liés à un hôte physique, soit de gérer des licences à partir d'un serveur central en tant que «jetons» où les clients peuvent extraire les jetons pendant un certain temps. Les licences sont généralement liées à un hôte, et cet hôte est généralement identifié par un numéro unique que vous pouvez trouver à l'aide de la commande hostid.

Par exemple:

$ hostid
a8c0c801

Item # 2: Dans mon cas, ce n'est pas une machine virtuelle. J'ai cloné un système physique sur un autre système physique.

À quoi j'ai répondu: Eh bien, votre seule option est de changer l'adresse MAC du nouveau système pour la même que celle de l'autre système. Sachez que ces 2 systèmes ne peuvent pas exister sur le même réseau, sinon ils entreront en conflit les uns avec les autres. De plus, les licences Flex n'utilisent généralement pas le MAC, elles utilisent le numéro identifiable à l'aide de la commande hostid!

Références

slm
la source
Hmmm. Cela ne fonctionnera pas dans mon cas, car j'utilise un logiciel avec une licence flexible liée à l'adresse mac. Les adresses changeant constamment rendent ledit logiciel inutile ...
Zobal
@Zobal - Je connais Flex. Puisqu'il s'agit d'une machine virtuelle, vous pouvez modifier le MAC de la machine virtuelle (dans le logiciel de la machine virtuelle - VirtualBox, KVM, etc.).
slm
Dans mon cas, ce n'est pas une machine virtuelle. J'ai cloné un système physique sur un autre système physique.
Zobal
@Zobal - alors votre seule option est de changer l'adresse MAC du nouveau système pour la même que celle de l'autre système. Sachez que ces 2 systèmes ne peuvent pas exister sur le même réseau, sinon ils entreront en conflit les uns avec les autres. De plus, les licences Flex n'utilisent généralement pas le MAC, elles utilisent le numéro identifiable à l'aide de la commande hostid!
slm
les licences flex sont des licences que nous avons créées pour lier notre logiciel à une machine spécifique, et dans ce cas, il utilise le MAC. Nouveau développement: j'ai réinstallé UBUNTU à partir de zéro (pas depuis et image) et j'obtiens le même comportement. En fait, il n'apparaît que lors de coupures sales (l'alimentation est coupée). Des pensées?
Zobal
0

hostid est aussi unique que l'adresse IP de votre serveur.
Dans votre exemple, hostid est a8c0c801, l'adresse IP de votre serveur est-elle 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Chris
la source