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

9

Eu configurei um sistema Ubuntu e o configurei corretamente, incluindo a definição eth0em /etc/network/interfaces. Eu então imaginei esse sistema e o clonei em um novo sistema.

Quando eu iniciei o sistema pela primeira vez, tudo estava bem, mas algumas reinicializações mais tarde fui recebido com o tempo limite da configuração da rede. Quando entrei, descobri que eth0não estava disponível.

Minha pesquisa inicial me permitiu tentar ifdown -ae o ifup -aque fiz algumas vezes sem efeito aparente.

A pesquisa acabou me apontando para /etc/udev/rules.d/70-persistent-net.rulesonde descobri que o endereço MAC do novo sistema havia criado o eth1. Boa ideia, mas não o que eu queria que acontecesse.

Quando inicializei agora, descobri que /etc/udev/rules.d/70-persistent-net.rulesagora existem seis entradas para seis endereços HW diferentes, o que acho estranho, pois existe apenas uma interface.

Minha pergunta é: meu uso de ifup -aalguma forma criou novos endereços MAC a serem criados? Caso contrário, há alguma opinião sobre como isso aconteceu? Alterei /etc/udev/rules.d/70-persistent-net.rulespara nomear o Endereço HW atual eth0e parece estar funcionando, mas posso ter certeza de que o endereço não será alterado novamente em uma reinicialização?

Zobal
fonte
Futuros visitantes deste P: Esta não é uma VM, é um sistema físico que o OP clonou no novo hardware!
slm

Respostas:

7

Ocorreu exatamente esse mesmo problema no CentOS de tempos em tempos quando clonava máquinas virtuais (VMs). O problema decorre da VM original ter recebido uma entrada nesse arquivo para configurar o dispositivo Ethernet eth0.

Arquivo .rules de amostra

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

O problema aumenta sua cabeça quando você clona a primeira VM, e isso cria um novo endereço MAC, sob algumas tecnologias de virtualização, como a KVM para uma. Esse novo endereço MAC é detectado automaticamente quando a VM clonada é inicializada e visualizada como um novo dispositivo Ethernet /lib/udev/write_net_rulese, portanto, uma segunda entrada é adicionada ao arquivo acima.

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

Normalmente, eu abro este arquivo, 70-persistent-net.rulesem um editor e simplesmente consolido as linhas para que o novo endereço MAC seja atribuído ao eth0dispositivo e reinicie.

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

O OP seguiu a pergunta com as seguintes informações novas.

Item # 1: Hmmm. Isso não funcionará no meu caso, porque estou executando um software com uma licença flexível que se vincula ao endereço mac. A mudança constante de endereços torna o software inútil.

@Zobal - Estou familiarizado com o Flex. Como é uma VM, você pode alterar o MAC da VM (no software da VM - VirtualBox, KVM, etc.).

NOTA: Flex é uma tecnologia de licenciamento fornecida pela Flexera . Eles costumavam ser chamados de GlobeTrotter Software. Essa tecnologia permite que o software seja vinculado a um host físico ou pode ter licenças gerenciadas de um servidor central como "tokens", onde os clientes podem fazer o check-out dos tokens por um período de tempo. As licenças são normalmente ligados a um host, e este alojamento é normalmente identificado por um número único que pode encontrar usando o comando hostid.

Por exemplo:

$ hostid
a8c0c801

Item 2: No meu caso, não é uma VM. Eu clonei um sistema físico em outro sistema físico.

Ao que eu respondi: Bem, sua única opção é alterar o endereço MAC do novo sistema para o mesmo que o MAC do outro sistema. Perceba que esses 2 sistemas não podem existir na mesma rede, caso contrário, eles entrarão em conflito. Além disso, o licenciamento Flex normalmente não usa o MAC, eles usam o número identificável usando o comando hostid!

Referências

slm
fonte
Hummm. Isso não funcionará no meu caso, porque estou executando um software com uma licença flexível que se vincula ao endereço mac. Mudar constantemente de endereço torna o software inútil ...
Zobal
@Zobal - Estou familiarizado com o Flex. Como é uma VM, você pode alterar o MAC da VM (no software da VM - VirtualBox, KVM, etc.).
slm
No meu caso, não é uma VM. Eu clonei um sistema físico em outro sistema físico.
Zobal 23/01
@Zobal - bem, sua única opção é alterar o endereço MAC do novo sistema para o mesmo que o MAC do outro sistema. Perceba que esses 2 sistemas não podem existir na mesma rede, caso contrário, eles entrarão em conflito. Além disso, o licenciamento Flex normalmente não usa o MAC, eles usam o número identificável usando o comando hostid!
slm
as licenças flexíveis são as que criamos para vincular nosso software a uma máquina específica e, nesse caso, ele usa o MAC. Novo desenvolvimento: Reinstalei o UBUNTU do zero (não da imagem) e estou tendo o mesmo comportamento. Na verdade, ele só aparece em desligamentos sujos (a energia é puxada). Alguma ideia?
Zobal
0

hostid é tão único quanto o endereço IP do seu servidor.
No seu exemplo, hostid é a8c0c801, o endereço IP do seu servidor é 192.168.1.200?
A8C0 C801 -> C0A8 01C8
C0: 192
A8: 168
01: 1
C8: 200

Chris
fonte