Sistema Linux clonato e /etc/udev/rules.d/70-persistent-net.rules


9

Ho installato un sistema Ubuntu e configurato correttamente, inclusa la definizione eth0in /etc/network/interfaces. Ho quindi ripreso quel sistema e l'ho clonato su un nuovo sistema.

La prima volta che ho avviato il sistema è andato tutto bene, ma dopo alcuni riavvii sono stato accolto con il timeout della configurazione della rete. Quando ho effettuato l'accesso ho scoperto che eth0non era disponibile.

La mia ricerca iniziale mi ha permesso di provare ifdown -ae ifup -ache ho fatto alcune volte senza alcun effetto apparente.

La ricerca alla fine mi ha indicato /etc/udev/rules.d/70-persistent-net.rules, dove ho scoperto che l'indirizzo MAC per il nuovo sistema aveva creato eth1. Buona idea, ma non quello che volevo succedere.

Quando ho avviato proprio ora, ho scoperto che /etc/udev/rules.d/70-persistent-net.rulesora ha sei voci per sei diversi indirizzi HW, che trovo strano in quanto esiste solo un'interfaccia.

La mia domanda è: il mio uso di in ifup -aqualche modo ha creato nuovi indirizzi MAC da creare? In caso contrario, ci sono pensieri su come sia successo? Ho modificato il /etc/udev/rules.d/70-persistent-net.rulesnome dell'attuale indirizzo HW eth0e sembra funzionare, ma posso essere certo che l'indirizzo non cambierà di nuovo al riavvio?


Futuri visitatori di questo Q: Questa non è una VM, è un sistema fisico che l'OP ha clonato su nuovo hardware!
slm

Risposte:


7

Di tanto in tanto ho riscontrato questo identico problema in CentOS quando ho clonato macchine virtuali (VM). Il problema deriva dalla VM originale che ottiene una voce inserita in questo file per configurare il dispositivo Ethernet eth0.

File .rules di esempio

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

Il problema si risolve bruscamente quando si clona la prima macchina virtuale, questo crea un nuovo indirizzo MAC, sotto alcune tecnologie di virtualizzazione come KVM per uno. Questo nuovo indirizzo MAC viene rilevato automaticamente all'avvio della macchina virtuale clonata e visualizzato come un nuovo dispositivo Ethernet /lib/udev/write_net_rules, quindi viene aggiunta una seconda voce al file precedente.

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

Di solito apro questo file, 70-persistent-net.rulesin un editor e semplicemente consolido le linee in modo che il nuovo indirizzo MAC sia assegnato al eth0dispositivo e riavvio.

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

L'OP ha dato seguito alla domanda con le seguenti nuove informazioni.

Articolo n. 1: Hmmm. Nel mio caso non funzionerà perché sto eseguendo un software con una licenza flessibile che si collega all'indirizzo MAC. Gli indirizzi in costante cambiamento rendono inutile il software.

@Zobal - Conosco Flex. Poiché si tratta di una macchina virtuale, è possibile modificare il MAC della macchina virtuale (nel software della macchina virtuale - VirtualBox, KVM, ecc.).

NOTA: Flex è una tecnologia di licenza fornita da Flexera . Si chiamavano software GlobeTrotter. Questa tecnologia consente al software di essere collegato a un host fisico o di avere le licenze gestite da un server centrale come "token" in cui i client possono controllare i token per un periodo di tempo. Le licenze sono in genere legate a un host e questo host viene generalmente identificato da un numero univoco che è possibile trovare utilizzando il comando hostid.

Per esempio:

$ hostid
a8c0c801

Articolo n. 2: Nel mio caso non è una macchina virtuale. Ho clonato un sistema fisico su un altro sistema fisico.

A cui ho risposto: Bene, l'unica opzione è cambiare l'indirizzo MAC del nuovo sistema con lo stesso del MAC dell'altro sistema. Renditi conto che questi 2 sistemi non possono esistere sulla stessa rete, altrimenti entreranno in conflitto tra loro. Anche le licenze Flex in genere non usano il MAC, usano il numero identificabile usando il comando hostid!

Riferimenti


Hmmm. Nel mio caso non funzionerà perché sto eseguendo un software con una licenza flessibile che si collega all'indirizzo MAC. Gli indirizzi in costante cambiamento rendono inutile questo software ...
Zobal

@Zobal - Conosco Flex. Poiché si tratta di una macchina virtuale, è possibile modificare il MAC della macchina virtuale (nel software della macchina virtuale - VirtualBox, KVM, ecc.).
slm

Nel mio caso non è una macchina virtuale. Ho clonato un sistema fisico su un altro sistema fisico.
Zobal,

@Zobal - beh, l'unica opzione è quella di cambiare l'indirizzo MAC del nuovo sistema con lo stesso del MAC dell'altro sistema. Renditi conto che questi 2 sistemi non possono esistere sulla stessa rete, altrimenti entreranno in conflitto tra loro. Anche le licenze Flex in genere non usano il MAC, usano il numero identificabile usando il comando hostid!
slm

le licenze flex sono licenze che abbiamo creato per legare il nostro software a una macchina specifica e in questo caso utilizza il MAC. Nuovo sviluppo: ho reinstallato UBUNTU da zero (non da e immagine) e sto ottenendo lo stesso comportamento. In realtà si presenta solo su arresti sporchi (l'alimentazione viene strappata). qualche idea?
Zobal,

0

hostid è unico come l'indirizzo IP del tuo server.
Nel tuo esempio hostid è a8c0c801, l'indirizzo IP del tuo server è 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.