47 votes

Comment détecter automatiquement une nouvelle carte réseau dans 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 adaptateurs et des adresses MAC nettes. Cependant, les fichiers ifcfg-ethn existent toujours. J'essaie de comprendre comment faire pour que CentOS rescanne et recrée automatiquement les adaptateurs réseau / fichiers eth, comme il l'a fait lors de l'installation.

Sinon, je dois me contenter de la procédure fastidieuse décrite 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 et l'interface graphique ne s'applique donc pas dans ce cas. Vous avez besoin d'aide ?

Editer : @OldWolf a suggéré Kudzu, mais Kudzu a été supprimé à partir de Centos 5 et je préfère donc l'éviter. Il y a une procédure que Linux exécute lors de l'installation initiale - quelqu'un peut-il m'aider à comprendre de quoi il s'agit pour que je puisse la déclencher manuellement ?

1voto

nsantorello Points 437

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.

Editer : Puisqu'il semble que le problème vienne d'une modification du matériel virtuel, vous pouvez essayer ce qui suit. (non testé et référencé à partir de aquí )

éditez /etc/sysconfig/hwconf et supprimez toute référence à l'ancienne carte et relancez kudzu pour voir s'il détecte le nouveau matériel. Il se peut que vous deviez redémarrer.

1voto

Cory T Points 171

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

J'ai 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 ceci

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

Il a été ajouté à l'init avec

chkconfig --add manglemac

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

J'ai alors éteint la machine et j'ai commencé à cloner. Tout fonctionne bien. Le script que j'ai créé est très simple mais fonctionne bien, cependant il fait quelques suppositions sur votre configuration pour le réseau (eth0 seulement).

J'espère que cela vous aidera.

0voto

FFQ Points 1

J'avais affaire à plusieurs NIC et rien de ce qui précède ne fonctionnait pour moi (VMware Fusion 7/VMware 6 et moins), j'ai donc écrit un script. L'archive est aquí .

Voici le README qui l'accompagne :

  • Cette archive et les scripts scripts changeront l'adresse MAC de votre machine VMware CentOS 6 ou inférieure récemment clonée (pas de systemd).
  • Tout ce que vous devez faire dans la machine, vous le clonerez une seule fois :

    1. installer lshw

    2. remplacez l'adresse MAC dans tous vos /etc/sysconfig/network-scripts/ifcfg-eth? avec MACDADDY num. donde num. est le numéro de l'interface réseau. Vous devez respecter 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 comme d'habitude et mettez-la en marche. Il devrait changer l'adresse MAC de chacun de vos ordinateurs. ifcfg-eth? des dossiers,

      • effacer le fichier udev,
      • rescanner votre appareil e1000,
      • et redémarrer le réseau

Problèmes :

  • Je ne sais pas exactement pourquoi, mais il faut parfois redémarrer le réseau une deuxième fois pour que toutes les cartes réseau soient reconnues :

    /etc/init.d/network restart

    Cette erreur a été corrigée par l'ajout d'un sleep 20 au début de l'année /etc/init.d/network

  • Cela n'a pas été un problème pour moi, mais le script s'appuie sur la fonction lshw en renvoyant les NIC dans le même ordre que les ifcfg-eth?

  • Cela suppose que votre (vos) périphérique(s) NIC est (sont) e1000. Standard VMware ?

  • Il peut être intéressant de modifier la numérotation de vos ifcfg-eth? afin qu'ils correspondent à ce que lshw est en train de donner en retour dans le cas improbable où elle ne le ferait pas et que vous avez beaucoup de machines avec beaucoup de NICs.

  • Avec un seul 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 la base de données des ifcfg-eth?

  • Vous pouvez également, et vous devriez probablement, exécuter

    chkconfig change_mac_address off

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X