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?
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.
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
Sélectionnez Device configuration et appuyez sur Entrée.
Ensuite, cet écran apparaîtra
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
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.
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.
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
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.
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.
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:
Tout ce que vous avez besoin de faire dans la machine que vous clonerez en une fois seulement:
lshw
/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.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.
ifcfg-eth?
, 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
lshw
renvoyant les cartes réseau dans le même ordre que ifcfg-eth?
.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./usr/bin/change_mac_address.pl
est déplacé vers /usr/bin/change_mac_address.pl.old
ifcfg-eth?
Vous pouvez aussi et devriez probablement courir
chkconfig change_mac_address off