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

9

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

Quando inicializei o sistema, a primeira vez que tudo foi bom, mas algumas reinicializações mais tarde, fui recebido com o tempo limite da configuração de rede. Quando eu entrei, descobri que eth0 não estava disponível.

Minha pesquisa inicial me permitiu experimentar ifdown -a e ifup -a , o que fiz algumas vezes sem nenhum efeito aparente.

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

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

A minha pergunta é: o meu uso de ifup -a de alguma forma criou novos endereços MAC a serem criados? Se não, há algum pensamento sobre como isso aconteceu? Eu alterei /etc/udev/rules.d/70-persistent-net.rules para nomear o atual Endereço de HW eth0 e parece estar funcionando, mas posso ter certeza de que o endereço não será alterado novamente em uma reinicialização?

    
por Zobal 23.01.2014 / 01:35

2 respostas

7

Eu deparo com esse mesmo problema no CentOS de tempos em tempos quando eu clono máquinas virtuais (VMs). O problema se origina da VM original recebendo uma entrada inserida 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 fica feio quando você clona a primeira VM, o que faz com que um novo endereço MAC seja criado, sob algumas tecnologias de virtualização, como o KVM, para uma. Esse novo endereço MAC é detectado automaticamente quando a VM clonada é inicializada e vista como um novo dispositivo Ethernet por /lib/udev/write_net_rules e, 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"

Eu normalmente abro este arquivo, 70-persistent-net.rules , em um editor e simplesmente consolido as linhas para que o novo endereço MAC seja atribuído ao dispositivo eth0 e reinicialize.

...
# 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 acompanhou a pergunta com as novas informações a seguir.

Item #1: Hmmm. That won't work in my case because I'm running software with a flex license that ties to the mac address. Constantly changing addresses render said software useless..

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

NOTA: o Flex é uma tecnologia de licenciamento fornecida por Flexera . Eles costumavam ser chamados de GlobeTrotter Software. Essa tecnologia permite que o software seja vinculado a um host físico ou possa ter licenças gerenciadas de um servidor central como "tokens", em que os clientes podem verificar os tokens por um período de tempo. As licenças são tipicamente vinculadas a um host, e esse host é geralmente identificado por um número único que você pode encontrar usando o comando hostid .

Por exemplo:

$ hostid
a8c0c801

Item #2: In my case it's not a VM. I've cloned one physical system onto another physical system.

A que eu respondi: Bem, então sua única opção é mudar o endereço MAC do novo sistema para o mesmo que o MAC do outro sistema. Perceba que esses dois sistemas não podem existir na mesma rede, caso contrário, eles entrarão em conflito uns com os outros. Também o licenciamento Flex normalmente não usa o MAC, eles usam o número que é identificável usando o comando hostid !

Referências

por 23.01.2014 / 02:16
0

hostid é tão exclusivo 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

    
por 26.01.2015 / 11:16