2011-09-06 18:56:31 +0000 2011-09-06 18:56:31 +0000
46
46

Como detectar automaticamente uma nova placa de rede no CentOS 6 / RedHat?

Estou a utilizar o CentOS 6 num ambiente virtual. Ao clonar uma versão virtual do CentOS, os antigos adaptadores eth são “removidos” e substituídos por novos e endereços MAC de rede. No entanto, os ficheiros ifcfg-ethn ainda existem. Estou a tentar descobrir como fazer com que o CentOS volte a digitalizar e recriar automaticamente os adaptadores de rede / ficheiros eth, tal como fez na instalação.

Caso contrário, fico com o tedioso processo aqui descrito: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

Sei que existe uma forma rápida de fazer isto na GUI, mas estamos a utilizar um servidor pelo que a GUI não se aplica neste caso. Ajuda?

Editar: @OldWolf sugeriu Kudzu, no entanto Kudzu foi removido a partir do Centos 5, por isso prefiro evitar isso. Existe um procedimento que o Linux corre na instalação inicial - alguém me pode ajudar a descobrir o que é isso para que eu possa accioná-lo manualmente?

Respostas (8)

52
52
52
2011-09-08 19:34:54 +0000

Com o CentOS 6, tudo é agora tratado pelo udev. Entre no /etc/udev/rules.d e apague o ficheiro 70-persistent-net.rules e reinicie. Se o abrir à mão, verá o original NIC MAC listado como eth0 e o novo como eth1.

Agora precisa de editar /etc/sysconfig/network-scripts/ifcfg-eth0 e actualizar manualmente para o MAC do seu novo cartão NIC.

A eliminação do ficheiro força o processo de detecção a correr novamente no arranque, sem que reste qualquer bagagem do processo de clonagem, nomeadamente o antigo  NIC MAC address(es).

Tenho de o fazer com os meus clones CentOS 6 no VMware ESXi 4.1 a toda a hora. É um kudzu doloroso que só o faria no passado com versões anteriores.

5
5
5
2012-11-19 06:44:46 +0000

Também pode utilizar esta ferramenta (Esta não é uma ferramenta GUI, a sua ferramenta TUI, Interface de utilizador baseada em texto)

[root@localhost ~]# system-config-network-tui

Tipo de comando acima e prima Enter

Depois aparecerá este ecrã

Seleccione a configuração do dispositivo e prima Enter

Depois aparecerá este ecrã

Aqui eth0 refere-se a /etc/sysconfig/network-scripts/ifcfg-eth0

Qualquer que seja a edição feita em eth0 que irá afectar o ficheiro ifcfg-eth0

4
4
4
2013-03-13 00:47:09 +0000

A modificação de ficheiros após clonagem não funcionaria para o meu caso de utilização, por isso resolvi o problema da seguinte forma.

É necessário editar dois ficheiros, removendo as referências aos endereços Mac em cada um deles:

/etc/sysconfig/network-scripts/ifcfg-eth0 - remover a linha HWADDR=.

/etc/udev/rules.d/70-persistent-net.rules - remover do ATTR{address}== até e incluindo a próxima vírgula.

Agora quando clonar o VM e alterar a rede de endereços Mac irá funcionar, uma vez que o endereço Mac nunca será escrito em nenhum dos ficheiros.

4
4
4
2012-11-19 06:21:11 +0000

Elimine o ficheiro de regras persistentes:

rm /etc/udev/rules.d/70-persistent-net.rules

Editar ifcfg-eth0:

nano /etc/sysconfig/network-scripts/ifcfg-eth0

REMOVER completamente a linha HWADDR (ou alterá-la para corresponder ao endereço MAC do seu novo DNI).

Reinicie o seu sistema:

reboot

Se alterar novamente o DNI, basta repetir os passos #1 e #3.

3
3
3
2013-05-21 15:57:29 +0000

Eu crio e apago tantas máquinas virtuais CentOS 6 que escrevi algum Bashfu para fixar eth0 na clonagem em VirtualBox.

[root@jp-xm-base ~]# cat fixeth0.sh
if grep -q eth1 /etc/udev/rules.d/70-persistent-net.rules; then
   sed -i '/eth0/d' /etc/udev/rules.d/70-persistent-net.rules;
   sed -i 's/eth1/eth0/g' /etc/udev/rules.d/70-persistent-net.rules;
   ETHERNET=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules | awk -F"," '{print $4}' | awk -F"\"" '{print $2}'`;
   echo Ethernet Addr: $ETHERNET;
   sed -i 's/HWADDR=".*"/HWADDR="'$ETHERNET'"/' /etc/sysconfig/network-scripts/ifcfg-eth0;
   /sbin/start_udev
   /sbin/service network restart;
fi
1
1
1
2013-09-01 01:17:52 +0000

Não estou a usar Vmware mas KVM com virsh - foi o que fiz.

Criei uma imagem ‘base’ com CentOS 6.4, esta é a fonte de todos os meus clones. Após a primeira inicialização criei um script como este

cat /etc/init.d/manglemac 
#!/bin/bash
#
# manglemac This starts and stops mangle-mac
#
# chkconfig: 2345 11 88
# description: This obtains tha mac of eth0 and writes into ifcfg

mac=$(grep -H . /sys/class/net/*/address | grep eth0 | cut -d ':' -f2-10)
match_mac=$(grep $mac /etc/sysconfig/network-scripts/ifcfg-eth0)

if [-z "$match_mac"];
then
   echo HWADDR=$mac >> /etc/sysconfig/network-scripts/ifcfg-eth0
fi

Adicionei-o ao init com

chkconfig --add manglemac

Apaguei todas as referências em /etc/sysconfig/network-scripts/ifcfg-eth0 do HWADDR ou UUID, também apaguei as regras udev do /etc/udev/rules.d/70-persistent-net.rules.

Neste ponto desliguei a máquina e comecei a clonar. Tudo funciona bem. O script que fiz é muito simples mas funciona bem, no entanto faz algumas suposições sobre a sua configuração para rede (apenas eth0).

Espero que ajude.

1
1
1
2011-09-06 21:04:42 +0000

Se o seu único problema é o endereço mac, pode executar algo semelhante a

TEST=`ifconfig | grep eth | awk '{ print $5}'`; sed "s/HWADDR.*/HWADDR\=$TEST/g" ifcfg-eth0 > TMP; mv TMP ifcfg-eth0

Para actualizar a entrada HWADDR.

Editar: Uma vez que parece que o problema é uma alteração real no hardware virtual, pode tentar o seguinte. (não testado e referenciado de aqui )

editar /etc/sysconfig/hwconf e remover toda a referência ao NIC anterior e executar novamente o kudzu para ver se ele detecta o novo hardware. Poderá ter de reiniciar.

0
0
0
2015-05-01 00:14:57 +0000

Eu estava lidando com várias DNIs e nada acima funcionava para mim (VMware Fusion 7/VMware 6 e abaixo), então eu escrevi um roteiro. O tarball é aqui .

Aqui está o README que vem com ele:

  • Este tarball e scripts relacionados irão alterar o endereço MAC da sua máquina VMware CentOS 6 ou inferior recentemente clonada (sem sistemad. )
  • Tudo o que precisa de fazer na máquina irá clonar de uma só vez:

Problemas:

  • Não sei bem porquê, mas por vezes precisa de reiniciar a rede uma segunda vez para que todas as DNIs sejam reconhecidas:

  • Isto não tem sido um problema para mim, mas o script depende de lshw devolver as DNIs na mesma ordem que ifcfg-eth?

  • Isto assume que o(s) seu(s) dispositivo(s) DNI(s) são e1000. VMware standard?

  • Pode valer a pena mudar a numeração dos seus ficheiros ifcfg-eth? para que estes correspondam ao que o lshw está a devolver no caso improvável de não funcionar e de estar a fazer muitas máquinas com muitas DNIs.

  • Com uma DNI deve apenas funcionar.

  • Após a primeira inicialização o /usr/bin/change_mac_address.pl é movido para /usr/bin/change_mac_address.pl.old

  • Isto irá impedi-lo de funcionar em cada reinicialização mesmo que não faça nada se não houver MACDADDY? no seu ifcfg-eth?

  • Você também pode e provavelmente deve funcionar