Comment détecter automatiquement une nouvelle carte réseau dans CentOS 6 / RedHat?

46

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?

Josué
la source

Réponses:

52

Avec CentOS 6, tout est maintenant géré par udev. Allez dans /etc/udev/rules.det supprimez le 70-persistent-net.rulesfichier et redémarrez. Si vous l'ouvrez avant, vous verrez le MAC d'origine de la carte réseau eth0et le nouveau eth1.

Vous devez maintenant modifier /etc/sysconfig/network-scripts/ifcfg-eth0et 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 bagage 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 dans les versions précédentes.

Tracy Carlton
la source
2
Cela semblait merveilleux, mais cela n’a pas fonctionné comme vous l’avez décrit. L'ancien fichier ifcfg-eth0 était toujours présent, avec l'adresse MAC d'origine, etc., au lieu du nouveau correct.
Josué
2
Désolé oui j'avais oublié. Vous devez également mettre à jour MANUELLEMENT l'adresse MAC dans ifcfg-eth0. Désolé. Cela le fera fonctionner. Il y a peut-être un moyen plus facile mais je n'ai pas encore trouvé ...
Tracy Carlton Le
C'était un bon début. Il semble qu’il soit possible d’écrire un script qui automatisera le processus - même les bits manuels décrits - au démarrage. Le problème consiste à activer le script uniquement après que la machine a été clonée / déplacée. Toujours pas de réponse complète à cela ...
Joshua
5
Allez dans /etc/udev/rules.det supprimez le 70-persistent-net.rulesfichier et ne redémarrez pas. Accédez à /etc/sysconfig/network-scripts/ifcfg-eth0et mettez à jour manuellement sur le MAC de votre nouvelle carte NIC. Redémarrez et le réseau devrait devenir vivant.
2
@ user151091 Au lieu de redémarrer, start_udevalors service network restarttravaillé pour moi.
Doséa
5

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

entrez la description de l'image ici

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

Ensuite, cet écran apparaîtra

entrez la description de l'image ici

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

Quelle que soit la modification apportée, eth0cela affectera le ifcfg-eth0classement

max
la source
Bien que cela puisse être une réponse utile à certaines personnes / cas, l'objectif était de créer un script ou d'automatiser la configuration des adaptateurs réseau, ce qui ne peut pas être effectué via une interface utilisateur / graphique TUI. Lisez le message d'origine: "J'essaie de comprendre comment faire en sorte que CentOS réanalyse et recrée automatiquement les cartes réseau / fichiers eth, comme ce fut le cas lors de l'installation."
Josué
@ Josué désolé compris ... + 1
max
@ max, system-config-networksemble aussi ouvrir cette interface.
Acumenus
2
@QiFan Essayez cette commandeyum install system-config-network-tui
max
1
@QiFan Pour savoir quel paquet contient cette commande, essayez ceciyum whatprovides */system-config-network-tui
maxi le
4

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 HWADDRcomplètement la ligne (ou modifiez-la pour qu'elle corresponde à l'adresse MAC de votre nouvelle carte réseau).

Redémarrez votre système:

reboot

Si vous modifiez à nouveau la carte réseau, répétez simplement les étapes 1 et 3.

Martin Anderson
la source
Avez-vous vraiment besoin de redémarrer? Pourquoi ne pas simplement redémarrer le service réseau?
vgoff
Bien que cela puisse être une réponse utile à certaines personnes / cas, l'objectif était de créer un script ou d'automatiser la configuration des cartes réseau. Extrait du message original: "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."
Josué
@vgoff oui, il est évident que redémarrer le service réseau fonctionne bien :) Peut-être parle-t-il du redémarrage du périphérique réseau lui-même, par exemple "ifup eth0" etc.
Joshua
C'est peut-être le cas, mais il dit «système» et non «périphérique».
vgoff
Je me trompe peut-être, mais je pense que le 'redémarrage du réseau de service' ne provoquera pas le changement de nom de vos adaptateurs après la suppression du fichier de règles persistantes, et qu'un redémarrage ou un 'start_udev' est nécessaire pour les renommer.
Doséa
4

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 éditer deux fichiers en supprimant les références aux adresses Mac de chacun:

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

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

Désormais, lorsque vous clonez la machine virtuelle et changez l'adresse Mac, la mise en réseau fonctionnera, car l'adresse Mac ne sera jamais écrite dans aucun fichier.

Écossais inscore
la source
Cela a fonctionné pour moi - comme indiqué, l'adresse MAC n'est jamais écrite dans l'un ou l'autre fichier. Vous pouvez donc la modifier en permanence et votre interface restera "eth0" avec la même configuration. Cela ne semble fonctionner que si vous avez une seule carte réseau, sinon, le délai de démarrage de "Démarrage de udev:" est long et mon deuxième appareil s'appelle "rename3", probablement parce que les règles suggéraient que les deux appareils s'appellent "eth0 ".
Doséa
Solution pratique pour 1 adaptateur. N'oubliez pas non plus de définir un type de connexion en tant que pont dans les paramètres réseau.
Cherry
3

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
Électrifié
la source
1

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: Comme il semble que le problème est un changement réel du matériel virtuel, vous pouvez essayer ce qui suit. (non testé et référencé à partir d' ici )

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

Old Wolf
la source
J'ai essayé de changer manuellement l'adresse MAC sur eth0 par exemple, mais cela ne fonctionnait toujours pas. Les tentatives ultérieures de "rechargement forcé du réseau de service", "ifup eth0", etc. se terminent toujours par "Le périphérique eth0 ne semble pas être présent ..." Aide?
Joshua
Quel type de virtualisation utilisez-vous et comment avez-vous cloné le système?
OldWolf
VirtualBox, mais je ne pense pas que la virtualisation compte. Cela devrait ressembler à la fermeture d’un boîtier physique, au retrait des cartes réseau existantes et à l’ajout de cartes différentes.
Joshua
@Josh Où sont les fichiers ifcfg- * que vous modifiez car il y a éventuellement trois ensembles - consultez / etc / sysconfig / network-scripts et / etc / sysconfig / networking / devices et / etc / sysconfig / networking / profiles / default ( oui, je sais - cela semble être lié au ou aux outils que vous utilisez pour configurer les adaptateurs). Les premiers devraient être ceux qui font la différence, mais vous devrez peut-être aussi traiter avec les autres.
Linker3000
1
La raison pour laquelle j'ai posé la question et que le type de virtualisation est important est qu'il détermine le processus de clonage. Un clone VMware sur le même hôte ne modifiera pas le matériel du réseau virtuel, sauf indication contraire de votre part. Dans votre cas, le problème n’est pas l’adresse Mac ni le processus de clonage, c’est que vous modifiez le matériel virtuel.
OldWolf
1

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 (uniquement sur eth0).

J'espère que ça va aider.

Silviud
la source
0

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 le READMEqui vient avec:

  • 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?comptes par MACDADDY num,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 ifcfg-eth?fichiers,
      • 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 mettant un sleep 20au début de/etc/init.d/network

  • Cela n’a pas posé de problème pour moi, mais le script repose sur le lshwrenvoi des cartes réseau dans le même ordre que celui indiqué.ifcfg-eth?
  • Cela suppose que votre ou vos périphériques NIC sont e1000. Norme VMware?
  • Il pourrait être intéressant de changer la numérotation de vos ifcfg-eth?fichiers afin qu'ils correspondent à ce lshwque vous redonnez au cas improbable où cela ne fonctionnerait pas et où vous utiliseriez de nombreuses machines avec beaucoup de cartes d'interface réseau.
  • Avec une seule carte réseau, cela devrait fonctionner.
  • Après le premier démarrage, le /usr/bin/change_mac_address.plest 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 votreifcfg-eth?
  • Vous pouvez aussi et devriez probablement courir

    chkconfig change_mac_address off
    
FFQ
la source