Como você detecta automaticamente uma nova placa de rede no CentOS 6 / RedHat?

46

Estou usando o CentOS 6 em um 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 líquidos. No entanto, os arquivos ifcfg-ethn ainda existem. Eu estou tentando descobrir como obter o CentOS para redigitalizar & recriar os arquivos de adaptadores de rede / eth, assim como aconteceu na instalação.

Caso contrário, ficarei com o tedioso processo descrito aqui: link

Eu sei que há uma maneira rápida de fazer isso na GUI, mas estamos usando um servidor para que a GUI não se aplique nesse caso. Ajuda?

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

    
por Joshua 06.09.2011 / 20:56

8 respostas

51

Com o CentOS 6 everthing é gerenciado pelo udev agora. Vá para /etc/udev/rules.d , exclua o arquivo 70-persistent-net.rules e reinicie. Se você abrir a janela, verá que o NIC MAC original está listado como eth0 e o novo como eth1 .

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

A exclusão do arquivo força o processo de detecção a ser executado novamente na inicialização, sem nenhuma bagagem remanescente do processo de clonagem, ou seja, o (s) endereço (s) MAC antigo da NIC.

Eu tenho que fazer isso com meus clones do CentOS 6 no VMware ESXi 4.1 o tempo todo. É uma dor que o kudzu iria lidar com isso no passado com versões anteriores.

    
por 08.09.2011 / 21:34
5

Você também pode usar essa ferramenta (esta não é uma ferramenta GUI, sua ferramenta TUI, Interface de usuário baseada em texto)

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

Digite o comando acima e pressione Enter

Então esta tela aparecerá

SelecioneaconfiguraçãododispositivoepressioneEnter

Entãoestatelaaparecerá

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

Qualquer que seja a edição feita em eth0 que afetará o ifcfg-eth0 file

    
por 19.11.2012 / 07:44
4

Exclua o arquivo de regras persistente:

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

Edite ifcfg-eth0:

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

REMOVA a linha HWADDR completamente (ou altere-a para corresponder ao endereço MAC da nova NIC).

Reinicie seu sistema:

reboot

Se você alterar a NIC novamente, repita as etapas 1 e 3.

    
por 19.11.2012 / 07:21
4

A modificação de arquivos após o clone não funcionaria para meu caso de uso, portanto, resolvi o problema da seguinte forma.

Você precisa editar dois arquivos, removendo as referências aos endereços Mac em cada um:

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

/etc/udev/rules.d/70-persistent-net.rules - remova de ATTR {endereço} == até e incluindo a próxima vírgula.

Agora, quando você clona a VM e altera o endereço MAC, a rede funciona, pois o endereço do Mac nunca é gravado em nenhum arquivo.

    
por 13.03.2013 / 01:47
3

Eu crio e excluo tantas máquinas virtuais do CentOS 6 que eu escrevi alguns Bashfu para corrigir eth0 após clonagem no 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
    
por 21.05.2013 / 17:57
1

Se o seu único problema é o endereço MAC, você 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 atualizar a entrada do HWADDR.

Editar: Como parece que o problema é uma mudança real no hardware virtual, você pode tentar o seguinte. (não testado e referenciado de aqui )

edite / etc / sysconfig / hwconf e remova todas as referências à NIC anterior e execute novamente o kudzu para ver se ele detecta o novo hardware. Você pode precisar reiniciar.

    
por 06.09.2011 / 23:04
1

Eu não estou usando o Vmware, mas o KVM com o virsh - foi o que fiz.

Criei uma imagem 'base' com o CentOS 6.4, essa é a fonte de todos os meus clones. Após a primeira inicialização eu 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

Adicionado ao init com

chkconfig --add manglemac

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

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

Espero que ajude.

    
por 01.09.2013 / 03:17
0

Eu estava lidando com vários NICs e nada acima funcionou para mim (VMware Fusion 7 / VMware 6 e abaixo), então eu escrevi um script. O tarball é aqui .

Aqui está o README que vem com ele:

  • Este tarball e scripts relacionados alterarão o endereço MAC de seu VMware CentOS 6 ou máquina abaixo clonada recentemente (sem systemd.)
  • Tudo o que você precisa fazer na máquina que será clonada somente uma vez:

    1. instale lshw
    2. substitua o endereço MAC em todos os seus /etc/sysconfig/network-scripts/ifcfg-eth? com MACDADDY num onde num é o número da interface de rede. Você precisa seguir o padrão de nomenclatura do arquivo.
    3. executar:

      chckconfig change_mac_address on
      

      Isso deve adicionar links sym nos níveis de execução adequados especificados no arquivo

    4. Clone a máquina normalmente e ligue-a. Ele deve alterar o endereço MAC em cada um dos seus arquivos ifcfg-eth? ,
      • apaga o arquivo do udev,
      • redigitalize seu dispositivo e1000,
      • e reinicie a rede

Problemas:

  • Não tenho certeza do motivo, mas às vezes é preciso reiniciar a rede uma segunda vez para que todas as NICs sejam reconhecidas:

    /etc/init.d/network restart
    

    Corrigido isso colocando sleep 20 no início de /etc/init.d/network

  • Isso não foi um problema para mim, mas o script conta com lshw retornando as NICs na mesma ordem em que ifcfg-eth?
  • Isso pressupõe que seus dispositivos NIC sejam e1000. Padrão VMware?
  • Pode valer a pena mudar a numeração dos seus arquivos ifcfg-eth? para que eles correspondam ao que lshw está devolvendo no caso improvável de não trabalho e você está fazendo muitas máquinas com muitos NICs.
  • Com um NIC, ele deve funcionar.
  • Após a primeira inicialização, o /usr/bin/change_mac_address.pl é movido para /usr/bin/change_mac_address.pl.old
  • Isso impedirá que ele seja executado em cada reinicialização, embora não faça nada se não houver nenhum MACDADDY? no seu ifcfg-eth?
  • Você também pode e provavelmente deve executar

    chkconfig change_mac_address off
    
por 01.05.2015 / 02:14