web-dev-qa-db-fra.com

Comment passer automatiquement à la nouvelle carte réseau CentOS 6/RedHat?

J'utilise CentOS 6 dans un environnement virtuel. Lors du clonage d'une version virtuelle de CentOS, les anciens adaptateurs eth sont "supprimés" et remplacés par de nouveaux et des adresses MAC nettes. Cependant, les fichiers ifcfg-ethn existent toujours. J'essaie de comprendre comment faire en sorte que CentOS analyse et recrée automatiquement les fichiers d'adaptateurs réseau/eth, comme ce fut le cas lors de l'installation.

Sinon, je reste avec le processus fastidieux tel que décrit ici: http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-s390info-addnetdevice.html

Je sais qu'il existe un moyen rapide de le faire dans l'interface graphique, mais nous utilisons un serveur, l'interface graphique ne s'applique donc pas dans ce cas. Aidez-moi?

Edit: @OldWolf a suggéré Kudzu, mais Kudzu a été supprimé à partir de Centos 5, je préfère donc éviter cela. Il y a une procédure que Linux exécute lors de l'installation initiale - quelqu'un peut-il m'aider à comprendre ce que c'est afin que je puisse le déclencher manuellement?

46
Joshua

Avec CentOS 6, tout est maintenant géré par udev. Allez dans /etc/udev/rules.d et supprimez le fichier 70-persistent-net.rules et redémarrez. Si vous l’ouvrez avant, vous verrez le MAC de la carte d’origine originale listée sous le nom eth0 et le nouveau sous le nom eth1.

Vous devez maintenant éditer /etc/sysconfig/network-scripts/ifcfg-eth0 et mettre à jour manuellement le code MAC de votre nouvelle carte NIC.

La suppression du fichier oblige le processus de détection à s'exécuter de nouveau au démarrage sans laisser de bagages du processus de clonage, à savoir l'ancienne ou les adresses MAC de la carte réseau.

Je dois le faire avec mes clones CentOS 6 sur VMware ESXi 4.1 tout le temps. C'est une douleur que le kudzu aurait simplement pu gérer par le passé avec les versions précédentes.

51
Tracy Carlton

Vous pouvez également utiliser cet outil (il ne s'agit pas d'un outil graphique, de son outil TUI, d'une interface utilisateur à base de texte).

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

Tapez la commande ci-dessus et appuyez sur Entrée

Ensuite, cet écran apparaîtra

enter image description here

Sélectionnez Device configuration et appuyez sur Entrée.

Ensuite, cet écran apparaîtra

enter image description here

Ici eth0 fait référence à /etc/sysconfig/network-scripts/ifcfg-eth0

Quelle que soit la modification effectuée dans eth0 qui affectera le fichier ifcfg-eth0

5
max

Supprimez le fichier de règles persistantes:

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

Éditez ifcfg-eth0:

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

SUPPRIMEZ la ligne HWADDR (ou changez-la pour qu'elle corresponde à l'adresse MAC de votre nouveau NIC).

Redémarrez votre système:

reboot

Si vous modifiez à nouveau le NIC, répétez simplement les étapes 1 et 3.

4
Martin Anderson

La modification de fichiers après le clonage ne fonctionnerait pas pour mon cas d'utilisation. J'ai donc résolu le problème comme suit.

Vous devez modifier deux fichiers en supprimant les références aux adresses Mac de chacun:

/etc/sysconfig/network-scripts/ifcfg-eth0 - supprime la ligne HWADDR =.

/etc/udev/rules.d/70-persistent-net.rules - supprime de l'ATTR {adresse} == jusqu'à la virgule suivante.

Désormais, lorsque vous clonez le VM et que vous modifiez l'adresse Mac, la mise en réseau fonctionnera, car l'adresse Mac ne sera jamais écrite dans aucun fichier.

4
Scot Inscore

Je crée et supprime tellement de machines virtuelles CentOS 6 que j'ai écrit Bashfu pour réparer eth0 lors du clonage dans 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
3
Electrawn

Si votre seul problème est l'adresse MAC, vous pouvez exécuter quelque chose de similaire à

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

Pour mettre à jour l'entrée HWADDR.

Edit: Etant donné que le problème semble être une modification réelle du matériel virtuel, vous pouvez essayer ce qui suit. (non testé et référencé depuis ici )

éditez/etc/sysconfig/hwconf et supprimez toute référence à la précédente NIC et relancez kudzu pour voir s’il détecte le nouveau matériel. Vous devrez peut-être redémarrer.

1
OldWolf

Je n'utilise pas VMware mais KVM avec virsh - c'est ce que j'ai fait.

Créé une image 'de base' avec CentOS 6.4, c'est la source de tous mes clones. Après le premier démarrage, j'ai créé un script comme celui-ci.

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

Ajouté pour init avec

chkconfig --add manglemac

Supprimé toutes les références dans/etc/sysconfig/network-scripts/ifcfg-eth0 de HWADDR ou UUID, ainsi que les règles udev de /etc/udev/rules.d/70-persistent-net.rules.

À ce stade, j'ai arrêté la machine et commencé à cloner. Tout fonctionne bien. Le script que j'ai créé est très simple mais fonctionne bien, mais il repose sur quelques hypothèses concernant votre configuration réseau (eth0 uniquement).

J'espère que ça va aider.

1
silviud

J'avais affaire à plusieurs NIC et rien de ce qui précède ne fonctionnait pour moi (VMware Fusion 7/VMware 6 et versions ultérieures), j'ai donc écrit un script. Le tarball est ici .

Voici la README qui l'accompagne:

  • Cette archive et les scripts associés modifieront l'adresse MAC de votre ordinateur VMware CentOS 6 ou ultérieur récemment cloné (pas de système.)
  • Tout ce que vous avez besoin de faire dans la machine que vous clonerez en une fois seulement:

    1. installer lshw
    2. remplacez l'adresse MAC dans tous vos /etc/sysconfig/network-scripts/ifcfg-eth? par MACDADDYnum où num est le numéro de l'interface réseau. Vous devez suivre le modèle de dénomination du fichier.
    3. courir:

      chckconfig change_mac_address on
      

      Cela devrait ajouter des liens sym aux niveaux d’exécution appropriés spécifiés dans le fichier.

    4. Clonez la machine normalement et allumez-la. Il devrait changer l'adresse MAC dans chacun de vos fichiers ifcfg-eth?,
      • effacer le fichier udev,
      • réanalyser votre appareil e1000,
      • et redémarrer le réseau

Problèmes:

  • Vous ne savez pas trop pourquoi, mais vous devez parfois redémarrer le réseau une seconde fois pour que toutes les cartes d'interface réseau soient reconnues:

    /etc/init.d/network restart
    

    Corrigé ceci en plaçant un sleep 20 au début de /etc/init.d/network

  • Cela n’a pas posé de problème pour moi, mais le script repose sur lshw renvoyant les cartes réseau dans le même ordre que ifcfg-eth?.
  • Cela suppose que votre NIC périphérique (s) est e1000. Norme VMware?
  • Il pourrait être intéressant de changer la numérotation de vos fichiers ifcfg-eth? afin qu'ils correspondent à ce que lshw restitue dans le cas improbable où cela ne fonctionnerait pas et où vous utiliseriez beaucoup de machines avec beaucoup de cartes d'interface réseau.
  • Avec un NIC, cela devrait fonctionner.
  • Après le premier démarrage, le /usr/bin/change_mac_address.pl est déplacé vers /usr/bin/change_mac_address.pl.old
  • Cela l'empêchera de s'exécuter à chaque redémarrage même s'il ne fera rien s'il n'y a pas de MACDADDY? dans votre ifcfg-eth?
  • Vous pouvez aussi et devriez probablement courir

    chkconfig change_mac_address off
    
0
FFQ