Geklontes Linux-System und /etc/udev/rules.d/70-persistent-net.rules

9

Ich habe ein Ubuntu-System eingerichtet und es richtig konfiguriert, einschließlich der Definition eth0in /etc/network/interfaces. Ich habe dieses System dann abgebildet und auf ein neues System geklont.

Als ich das System zum ersten Mal hochfuhr, war alles in Ordnung, aber ein paar Neustarts später wurde ich mit dem Zeitlimit für die Netzwerkkonfiguration begrüßt. Als ich mich einloggte, stellte ich fest, dass dies eth0nicht verfügbar war.

Meine anfängliche Forschung ließ mich versuchen ifdown -aund ifup -awas ich einige Male ohne erkennbaren Effekt tat.

Nachforschungen haben mich schließlich darauf hingewiesen /etc/udev/rules.d/70-persistent-net.rules, dass die MAC-Adresse für das neue System eth1 erstellt hat. Gute Idee, aber nicht das, was ich wollte.

Als ich gerade hochfuhr, stellte ich fest, dass es /etc/udev/rules.d/70-persistent-net.rulesjetzt sechs Einträge für sechs verschiedene HW-Adressen gibt, was ich seltsam finde, da es nur eine Schnittstelle gibt.

Meine Frage ist: Hat meine Verwendung ifup -airgendwie neue MAC-Adressen erstellt, die erstellt werden sollen? Wenn nicht, gibt es irgendwelche Gedanken darüber, wie dies passiert ist? Ich /etc/udev/rules.d/70-persistent-net.ruleshabe die aktuelle HW-Adresse geändert eth0und sie scheint zu funktionieren. Kann ich jedoch sicher sein, dass sich die Adresse bei einem Neustart nicht erneut ändert?

Zobal
quelle
Zukünftige Besucher dieses F: Dies ist keine VM, sondern ein physisches System, das das OP auf neue Hardware geklont hat!
slm

Antworten:

7

Ich bin unter CentOS von Zeit zu Zeit auf genau dasselbe Problem gestoßen, wenn ich virtuelle Maschinen (VMs) geklont habe. Das Problem ist darauf zurückzuführen, dass die ursprüngliche VM einen Eintrag in diese Datei erhält, um das Ethernet-Gerät einzurichten eth0.

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

Das Problem tritt hässlich auf, wenn Sie die erste VM klonen. Dies führt dazu, dass unter einigen Virtualisierungstechnologien wie KVM eine neue MAC-Adresse erstellt wird. Diese neue MAC-Adresse wird automatisch erkannt, wenn die geklonte VM von gestartet und als neues Ethernet-Gerät angesehen wird. Daher /lib/udev/write_net_ruleswird der obigen Datei ein zweiter Eintrag hinzugefügt.

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

Normalerweise öffne ich diese Datei 70-persistent-net.rulesin einem Editor und konsolidiere einfach die Zeilen, sodass die neue MAC-Adresse dem eth0Gerät zugewiesen wird, und starte neu.

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

Das OP folgte der Frage mit den folgenden neuen Informationen.

Artikel 1: Hmmm. In meinem Fall funktioniert das nicht, da ich Software mit einer Flex-Lizenz ausführe, die an die Mac-Adresse gebunden ist. Ständig wechselnde Adressen machen die Software unbrauchbar.

@ Zobal - Ich bin mit Flex vertraut. Da es sich um eine VM handelt, können Sie den MAC der VM ändern (in der VM-Software - VirtualBox, KVM usw.).

HINWEIS: Flex ist eine Lizenztechnologie, die von Flexera bereitgestellt wird . Früher hießen sie GlobeTrotter Software. Mit dieser Technologie kann Software entweder an einen physischen Host gebunden werden oder Lizenzen können von einem zentralen Server als "Token" verwaltet werden, auf denen Clients die Token für einen bestimmten Zeitraum auschecken können. Die Lizenzen sind normalerweise an einen Host gebunden, und dieser Host wird normalerweise durch eine eindeutige Nummer identifiziert, die Sie mit dem Befehl finden können hostid.

Zum Beispiel:

$ hostid
a8c0c801

Punkt 2: In meinem Fall handelt es sich nicht um eine VM. Ich habe ein physisches System auf ein anderes physisches System geklont.

Worauf ich geantwortet habe: Nun, dann besteht Ihre einzige Möglichkeit darin, die MAC-Adresse des neuen Systems in dieselbe wie die MAC des anderen Systems zu ändern. Beachten Sie, dass diese beiden Systeme nicht im selben Netzwerk existieren können, da sie sonst miteinander in Konflikt geraten. Bei der Flex-Lizenzierung wird normalerweise nicht der MAC verwendet, sondern die mit dem Befehl identifizierbare Nummer hostid!

Verweise

slm
quelle
Hmmm. In meinem Fall funktioniert das nicht, da ich Software mit einer Flex-Lizenz ausführe, die an die Mac-Adresse gebunden ist. Ständig wechselnde Adressen machen die Software unbrauchbar ...
Zobal
@ Zobal - Ich bin mit Flex vertraut. Da es sich um eine VM handelt, können Sie den MAC der VM ändern (in der VM-Software - VirtualBox, KVM usw.).
slm
In meinem Fall ist es keine VM. Ich habe ein physisches System auf ein anderes physisches System geklont.
Zobal
@Zobal - dann besteht Ihre einzige Möglichkeit darin, die MAC-Adresse des neuen Systems in die MAC-Adresse des anderen Systems zu ändern. Beachten Sie, dass diese beiden Systeme nicht im selben Netzwerk existieren können, da sie sonst miteinander in Konflikt geraten. Bei der Flex-Lizenzierung wird normalerweise nicht der MAC verwendet, sondern die mit dem Befehl identifizierbare Nummer hostid!
slm
Die Flex-Lizenzen sind Lizenzen, die wir erstellt haben, um unsere Software an einen bestimmten Computer zu binden. In diesem Fall wird der MAC verwendet. Neue Entwicklung: Ich habe UBUNTU von Grund auf neu installiert (nicht von und Image) und erhalte das gleiche Verhalten. Es wird tatsächlich nur bei schmutzigen Abschaltungen angezeigt (die Stromversorgung wird unterbrochen). Irgendwelche Gedanken?
Zobal
0

Die Host-ID ist so eindeutig wie die IP-Adresse Ihres Servers.
In Ihrem Beispiel lautet die Host-ID a8c0c801. Ist die IP-Adresse Ihres Servers 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Chris
quelle